{"version":3,"sources":["webpack:///./node_modules/d3-array/src/index.js","webpack:///./node_modules/d3-selection/src/index.js","webpack:///./src/utils/exportElementAsImage/index.js","webpack:///./node_modules/d3-scale/src/index.js","webpack:///./node_modules/modern-screenshot/dist/index.js","webpack:///./node_modules/d3-array/src/fsum.js","webpack:///./node_modules/d3-time-format/src/index.js","webpack:///./node_modules/d3-geo/src/identity.js","webpack:///./node_modules/d3-geo/src/stream.js","webpack:///./node_modules/d3-geo/src/math.js","webpack:///./node_modules/d3-geo/src/noop.js","webpack:///./node_modules/d3-geo/src/path/area.js","webpack:///./node_modules/d3-geo/src/path/bounds.js","webpack:///./node_modules/d3-geo/src/path/centroid.js","webpack:///./node_modules/d3-geo/src/path/context.js","webpack:///./node_modules/d3-geo/src/path/measure.js","webpack:///./node_modules/d3-geo/src/path/string.js","webpack:///./node_modules/d3-geo/src/path/index.js","webpack:///./node_modules/d3-geo/src/transform.js","webpack:///./node_modules/d3-interpolate/src/zoom.js","webpack:///./node_modules/d3-zoom/src/transform.js","webpack:///./node_modules/d3-selection/src/selectAll.js","webpack:///./src/utils/svg/text-utils.js","webpack:///./src/components/hme/chart-form/region.js","webpack:///./src/components/hme/chart-form/regions.js","webpack:///./src/components/hme/chart-form/types.js","webpack:///./src/components/hme/chart-form/xaxis.js","webpack:///./src/components/hme/chart-form/date-util.js","webpack:///./src/components/hme/chart-form/lines.js","webpack:///./src/components/hme/chart-form/chart-title.js","webpack:///./src/components/hme/chart-form/chart-label.js","webpack:///./src/components/hme/chart-form/yaxis.js","webpack:///./src/components/hme/chart-form/charts.js","webpack:///./src/components/hme/chart-form/data-download.js","webpack:///./src/components/hme/chart-form/form.js","webpack:///./src/components/hme/chart-form/index.js"],"names":["_extent_js__WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","d","__webpack_exports__","_select_js__WEBPACK_IMPORTED_MODULE_0__","_selectAll_js__WEBPACK_IMPORTED_MODULE_1__","modern_screenshot__WEBPACK_IMPORTED_MODULE_0__","exportElementAsImage","async","el","trigger","imageFileName","headerRef","subHeaderRef","style","display","domToPng","then","dataUrl","link","document","createElement","download","href","click","_linear_js__WEBPACK_IMPORTED_MODULE_0__","_time_js__WEBPACK_IMPORTED_MODULE_1__","h","Ue","Qt","Object","defineProperty","Zt","defineProperties","er","getOwnPropertyDescriptors","Z","getOwnPropertySymbols","Le","prototype","hasOwnProperty","Me","propertyIsEnumerable","Oe","Math","pow","Be","C","T","enumerable","configurable","writable","value","D","call","L","We","N","indexOf","E","Promise","M","z","R","W","next","j","O","throw","done","resolve","apply","e","t","charCodeAt","Int32Array","r","n","length","ae","Uint8Array","a","s","o","set","i","je","qe","Ve","F","window","ze","se","Xe","te","navigator","userAgent","ie","includes","X","re","Ge","Ye","constructor","name","Je","k","nodeType","q","className","ce","tagName","Ke","V","Qe","Ze","_","G","et","le","tt","rt","nt","ot","at","st","A","console","it","ct","lt","height","width","Boolean","toDataURL","ne","startsWith","ue","match","location","protocol","Y","implementation","createHTMLDocument","head","appendChild","body","ownerDocument","J","fe","createElementNS","setAttributeNS","toString","de","XMLSerializer","serializeToString","replace","encodeURIComponent","ut","this","toBlob","Error","type","quality","l","split","atob","u","Blob","ft","me","FileReader","onload","result","onerror","error","onabort","readAsDataURL","readAsArrayBuffer","dt","mt","U","decoding","loading","src","$","timeout","onError","clearTimeout","setTimeout","c","currentSrc","poster","readyState","f","m","removeEventListener","addEventListener","once","baseVal","decode","dataset","originalSrc","complete","ge","all","flatMap","Array","from","querySelectorAll","map","he","random","slice","we","trim","toLowerCase","filter","x","pe","autoDestruct","w","p","b","g","scale","workerUrl","workerNumber","debug","features","defaultView","Map","backgroundColor","maximumCanvasSize","progress","fetch","requestInit","cache","ht","bypassingCache","placeholderImage","fetchFn","font","drawImageInterval","onCloneNode","onEmbedNode","onCreateForeignObjectSvg","includeStyleProperties","__CONTEXT__","log","time","timeEnd","warn","gt","node","ownerWindow","dpi","svgStyleElement","ye","svgDefsElement","svgStyles","defaultComputedStyles","workers","S","Worker","onmessage","y","P","_e","Q","$e","url","v","I","data","get","reject","onmessageerror","fontFamilies","Set","fontCssTexts","acceptOfImage","join","requests","drawImageCount","tasks","isEnable","getBoundingClientRect","Number","getAttribute","wt","createTextNode","pt","canvas","context2d","floor","getContext","fillStyle","fillRect","yt","drawImage","bt","St","be","nodeName","has","sandbox","id","visibility","position","contentWindow","write","namespaceURI","forEach","textContent","getComputedStyle","item","getPropertyValue","removeChild","Se","getPropertyPriority","lastIndexOf","substring","push","Et","Ct","Ee","cloneNode","putImageData","getImageData","xt","contentDocument","oe","Nt","srcset","kt","crossOrigin","currentTime","offsetWidth","offsetHeight","It","Ce","Te","currentParentNodeStyle","currentNodeStyle","scrollTop","scrollLeft","transform","DOMMatrix","translateSelf","Dt","ve","shadowRoot","firstChild","nextSibling","assignedNodes","Pt","getAttributeNames","test","removeAttribute","delete","classList","add","scrollWidth","clientWidth","setProperty","At","Rt","scrollHeight","clientHeight","Tt","innerHTML","setAttribute","vt","Ae","clear","remove","H","requestType","responseType","imageDom","RegExp","Date","getTime","headers","accept","response","size","postMessage","rawUrl","AbortController","abort","signal","ok","cause","blob","text","finally","Ft","catch","Ne","Ie","ke","Ut","_t","$t","cssText","De","styleSheets","cssRules","Bt","xe","exec","lastIndex","Lt","insertRule","rule","some","parentStyleSheet","Mt","Ot","preferredFormat","jt","Re","Wt","querySelector","insertAdjacentHTML","Vt","qt","childNodes","Pe","pop","append","Ht","insertBefore","children","K","B","He","ceil","btoa","String","fromCharCode","Fe","createContext","destroyContext","domToBlob","domToCanvas","domToDataUrl","domToForeignObjectSvg","domToImage","domToJpeg","domToPixel","domToSvg","domToWebp","loadMedia","waitUntilLoad","Symbol","toStringTag","exports","Adder","_partials","Float64Array","_n","hi","lo","abs","valueOf","_defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__","streamGeometry","geometry","stream","streamGeometryType","streamObjectType","Feature","object","FeatureCollection","Sphere","sphere","Point","coordinates","point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","pi","PI","tau","sqrt","atan","atan2","cos","exp","hypot","sin","sign","tan","noop","x00","y00","x0","y0","areaSum","areaRingSum","areaStream","areaRingStart","areaRingEnd","area","areaPointFirst","areaPoint","Infinity","x1","y1","boundsStream","bounds","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroid","NaN","centroidPointFirstLine","centroidPointLine","dx","dy","centroidPointFirstRing","centroidPointRing","PathContext","context","_context","_radius","pointRadius","_line","_point","closePath","moveTo","lineTo","arc","lengthRing","lengthSum","lengthStream","lengthPointFirst","lengthPoint","PathString","_string","circle","radius","_circle","src_path","projection","projectionStream","contextStream","path","arguments","pathArea","measure","pathMeasure","pathBounds","pathCentroid","identity","src_transform","methods","TransformStream","key","transformer","epsilon2","cosh","zoomRho","rho","rho2","rho4","zoom","p0","p1","ux0","uy0","w0","ux1","uy1","w1","d2","d1","b0","b1","r0","r1","coshr0","sinh","duration","SQRT2","_1","max","_2","Transform","translate","applyX","applyY","invert","invertX","invertY","rescaleX","copy","domain","range","rescaleY","_array_js__WEBPACK_IMPORTED_MODULE_0__","_selection_index_js__WEBPACK_IMPORTED_MODULE_1__","selector","Selection","documentElement","array","root","getTextWidth","fontSize","fontFace","measureText","customSelectStyles","control","provided","state","background","option","color","isDisabled","textDecoration","isFocused","isSelected","cursor","opacity","&:hover","indicatorSeparator","dropdownIndicator","multiValue","multiValueLabel","multiValueRemove","clearIndicator","Region","heading","placeholder","selectionText","options","info","setOptions","regions","setRegions","handleChange","useCallback","selected","select","label","react_default","htmlFor","Fragment","react_select_browser_esm","onChange","isMulti","styles","aria-labelledby","ignoreAccents","isOptionDisabled","propTypes","string","setStateOptions","func","setCountyOptions","setMsaOptions","setPumaOptions","filteredOptions","setFilteredOptions","bool","Regions","overlay","states","counties","msas","pumas","clearRegions","setClearRegions","useState","stateOptions","state_code","State_Name","undefined","find","countyOptions","STCounty_FIPS","County_Name","msaOptions","Metro_Code","CBSA_Title","pumaOptions","STPUMA_FIPS_Tab","PUMA_Name_Tab","onClearRegionsClicked","clearDisabled","region","useEffect","onClick","title","chart_form_region","info_overlay","showInfoButtonOnly","overlayType","OverlayOptions","HMEOVERLAY","val","newArr","onClearSelectedRegionClicked","isRequired","number","Types","showTypes","types","setTypes","clearTypes","setShowChart","purposeIsChecked","setPurposeIsChecked","measureIsChecked","setMeasureIsChecked","characteristicsIsChecked","setCharacteristicsIsChecked","showAccordion","setShowAccordion","onPurposeChange","checked","typeChecked","currentTypes","onMeasureChange","selection","onCharacteristicsChange","onClearTypesClicked","currentTarget","disabled","showChart","XAxis","margin","axisXRef","useRef","xAxisPath","axisBottom","current","nTicks","tickSizeInner","ticks","timeYear","every","attr","selectAll","top","bottom","ref","exact","right","left","xPosition","getDate","year","Lines","pageWrapper","componentWrapper","chartData","lineThicknessValue","legend","tooltipRef","tooltipData","setTooltipData","hoverOffset","fullWidth","twoCharts","lineRef","dotRef","scrubberRef","lineGenerator","line","defined","lines","lineObj","fill","stroke","strokeWidth","values","dots","dotObj","dotSets","dotGenerator","cx","cy","handleSliderHover","yEndVal","pageMarginTop","offsetTop","yOffset","pageY","yVal","pageMarginLeft","offsetLeft","chartLineMarginLeft","xOffset","pageX","xVal","date","bisectDate","bisector","year0","year1","d0","currentToolTipData","getFullYear","currData","updateTooltip","startTooltip","tooltipWidth","chartWidth","centerChart","x2","y2","renderHoverDots","pointerEvents","onMouseMove","onMouseOut","getElementsByClassName","hoverDot","ChartTitle","characteristic","chartTitleWidth","loanPurposeMeasureText","loanPurposeMeasureTextWidth","loanPurposeText","loanPurposeTextWidth","loanMeasureText","loanMeasureTextWidth","loanDemographicText2","loanDemographicTextWidth2","capitalize","reset","charAt","toUpperCase","fontFamily","ChartLabel","YAxis","labelCheck","axisYRef","yAxisPath","axisLeft","tickSize","tickFormat","minY","__data__","maxY","rangeCheck","valueLength","calcValue","newValue","round","Intl","NumberFormat","currency","maximumFractionDigits","significantDigits","minimumFractionDigits","notation","compactDisplay","format","shape","loanMeasures","prefix","typePosition","loanCharacteristics","variables","altVariables","deniVariables","altLegend","legendColor","measureCharacteristicLookup","Charts","props","disclaimer","variableSet","getLegend","dataVariables","keys","reduce","obj","xx","getData","yDomain","setYDomain","pngExportRef","svgRef","getYDomain","selectedDataset","minValue","maxValue","MIN_VALUE","parseFloat","calculatedWidth","calculatedMobileWidth","scaleTime","extent","makeXScale","scaleLinear","nice","makeYScale","legendFontSize","legendBoxWidth","legendBoxHeight","posX","spaceBetweenBoxAndText","posY","borderOffset","borderHeight","renderLegend","yMultiplier","posXOffset","legendItemWidths","calculatedFullLegendWidth","acc","currentValue","allWidths","legendItemWidth","data-line","renderLegendLabels","columnOffset","rectBorderWidth","rectBorderHeight","renderRaceEthnicityLegend","translateLookup","data-desc","rx","ry","chart_title","chart_label","yaxis","xaxis","chart_form_lines","arnotes","notes","sources","multLineTooltip","renderTooltip","saveButton","instanceOf","HTMLElement","startDate","endDate","pngExportTriggerRef","filterData","areas","selections","region1","region2","getRegions","characteristics","char","getTypes","filters","concat","filteredData","record","filteredHeadings","filteredKey","filteredRecord","assign","[object Object]","objectToCsv","csvRows","getHeaders","sort","row","header","downloadData","records","filename","csv","rows","dataCheck","csvFile","downloadLink","URL","createObjectURL","getPropertyInfo","property","code","padStart","Form","attributes","dataFilesPath","setShowTypes","setClearTypes","setChartData","fetchedData","hmeChartWrapperRef","setWidth","folderPrefix","numCode","parseInt","json","debouncedHandleResize","fn","ms","timer","debounce","currWidth","createChart","purposeData","cd","tmp","chart_form_regions","chart_form_types","timeFormat","formatTime","saveToPNG","charts","updateChartInfo","chart_form_class","config","ready","render","chart_form_form","element"],"mappings":"oHAAA,IAAAA,EAAAC,EAAA,KAAAA,EAAAC,EAAAC,EAAA,sBAAAH,EAAA,sCCAA,IAAAI,EAAAH,EAAA,KAAAA,EAAAC,EAAAC,EAAA,sBAAAC,EAAA,QAAAC,EAAAJ,EAAA,KAAAA,EAAAC,EAAAC,EAAA,sBAAAE,EAAA,sCCAA,IAAAC,EAAAL,EAAA,KA8BeM,IA3BcC,OAAQC,EAAIC,EAASC,EAAgB,YAAaC,EAAWC,KAEtFH,EAAQI,MAAMC,QAAU,OAEnBH,IAAYA,EAAUE,MAAMC,QAAU,SAEtCF,IAAeA,EAAaC,MAAMC,QAAU,SAEjDC,mBAAUP,GAAKQ,KAAM,SAAWC,GAG5B,MAAMC,EAAOC,SAASC,cAAe,KAErCF,EAAKG,SAAWX,EAChBQ,EAAKI,KAAOL,EACZC,EAAKK,QAELd,EAAQI,MAAMC,QAAU,OAEnBH,IAAYA,EAAUE,MAAMC,QAAU,QAEtCF,IAAeA,EAAaC,MAAMC,QAAU,8CCxBzD,IAAAU,EAAAxB,EAAA,KAAAA,EAAAC,EAAAC,EAAA,sBAAAsB,EAAA,QAAAC,EAAAzB,EAAA,KAAAA,EAAAC,EAAAC,EAAA,sBAAAuB,EAAA,0BCAiO,SAASC,GAAG,IAAIC,EAAoBC,EAAGC,OAAOC,eAAeC,EAAGF,OAAOG,iBAAqBC,EAAGJ,OAAOK,0BAA8BC,EAAEN,OAAOO,sBAA0BC,EAAGR,OAAOS,UAAUC,eAAeC,EAAGX,OAAOS,UAAUG,qBAAyBC,EAAGC,KAAKC,IAAIC,EAAG,CAACnB,EAAEoB,EAAEC,IAAID,KAAKpB,EAAEE,EAAGF,EAAEoB,GAAGE,YAAW,EAAGC,cAAa,EAAGC,UAAS,EAAGC,MAAMJ,IAAIrB,EAAEoB,GAAGC,EAAEK,EAAE,CAAC1B,EAAEoB,KAAK,IAAI,IAAIC,KAAKD,IAAIA,MAAMT,EAAGgB,KAAKP,EAAEC,IAAIF,EAAGnB,EAAEqB,EAAED,EAAEC,IAAI,GAAGZ,EAAE,IAAI,IAAIY,KAAKZ,EAAEW,GAAGN,EAAGa,KAAKP,EAAEC,IAAIF,EAAGnB,EAAEqB,EAAED,EAAEC,IAAI,OAAOrB,GAAG4B,EAAE,CAAC5B,EAAEoB,IAAIf,EAAGL,EAAEO,EAAGa,IAAQS,EAAG,CAAC7B,EAAEoB,KAAK,IAAIC,KAAK,IAAI,IAAIS,KAAK9B,EAAEW,EAAGgB,KAAK3B,EAAE8B,IAAIV,EAAEW,QAAQD,GAAG,IAAIT,EAAES,GAAG9B,EAAE8B,IAAI,GAAM,MAAH9B,GAASS,EAAE,IAAI,IAAIqB,KAAKrB,EAAET,GAAGoB,EAAEW,QAAQD,GAAG,GAAGhB,EAAGa,KAAK3B,EAAE8B,KAAKT,EAAES,GAAG9B,EAAE8B,IAAI,OAAOT,GAAOW,EAAE,CAAChC,EAAEoB,EAAEC,IAAI,IAAIY,QAAQ,CAACH,EAAEI,KAAK,IAAIC,EAAEC,IAAI,IAAIC,EAAEhB,EAAEiB,KAAKF,IAAI,MAAMG,GAAGL,EAAEK,KAAKC,EAAEJ,IAAI,IAAIC,EAAEhB,EAAEoB,MAAML,IAAI,MAAMG,GAAGL,EAAEK,KAAKF,EAAED,GAAGA,EAAEM,KAAKZ,EAAEM,EAAEX,OAAOQ,QAAQU,QAAQP,EAAEX,OAAOnC,KAAK6C,EAAEK,GAAGH,GAAGhB,EAAEA,EAAEuB,MAAM5C,EAAEoB,IAAIkB,UAAU,SAASlB,EAAEyB,EAAEC,GAAG,OAAOD,EAAE,IAAI,EAAEA,EAAE,IAAIC,GAAG,EAAED,EAAE,IAAM,IAAFC,EAAMD,EAAE,IAAIC,GAAG,EAAED,EAAE,IAAM,IAAFC,EAAMD,EAAE,MAAMxB,EAAE,IAAI0B,WAAW,GAAGjB,EAAE,IAAIiB,WAAW,GAAGb,EAAE,IAAIa,WAAW,GAAGZ,EAAE,IAAIY,WAAW,GAAG,IAAIP,EAA2I,SAASJ,EAAES,GAAG,IAAIC,GAAG,EAAEN,IAAIA,EAApK,WAAa,MAAMK,EAAE,IAAIG,WAAW,KAAK,IAAI,IAAIF,EAAE,EAAEA,EAAE,IAAIA,IAAI,CAAC,IAAIG,EAAEH,EAAE,IAAI,IAAII,EAAE,EAAEA,EAAE,EAAEA,IAAID,EAAI,EAAFA,EAAI,WAAWA,IAAI,EAAEA,IAAI,EAAEJ,EAAEC,GAAGG,EAAE,OAAOJ,EAA+BR,IAAK,IAAI,IAAIY,EAAE,EAAEA,EAAEJ,EAAEM,OAAOF,IAAIH,EAAEN,EAAW,KAARM,EAAED,EAAEI,KAASH,IAAI,EAAE,OAAU,EAAHA,EAA2I,SAASM,EAAGP,EAAEC,EAAEG,GAAE,GAAI,MAAMC,EAAE,IAAIG,WAAW,IAAIP,GAAG,QAAQI,EAAE,GAAG7B,EAAE6B,EAAE,GAAGpB,EAAEoB,EAAE,GAAGhB,EAAEgB,EAAE,GAAGf,EAAEe,EAAE,GAAGJ,IAAI,GAAGI,EAAE,GAAGJ,IAAI,GAAGI,EAAE,GAAGJ,IAAI,EAAEI,EAAE,GAAK,IAAFJ,EAAMI,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAIA,EAAE,GAAGA,EAAE,IAAIA,EAAE,GAAGA,EAAE,IAAI,EAAE,MAAMI,EAAElB,EAAEc,GAAGK,EAAE,IAAIF,WAAW,GAAG,GAAGE,EAAE,GAAGD,IAAI,GAAGC,EAAE,GAAGD,IAAI,GAAGC,EAAE,GAAGD,IAAI,EAAEC,EAAE,GAAK,IAAFD,EAAML,EAAE,CAAC,MAAMO,EAAzZ,SAAWX,GAAsB,IAAI,IAAII,EAAnBJ,EAAEM,OAAO,EAAcF,GAAG,EAAEA,IAAI,GAAY,IAATJ,EAAEI,EAAE,IAAQJ,EAAEI,EAAE,KAAK5B,GAAGwB,EAAEI,EAAE,KAAKnB,GAAGe,EAAEI,EAAE,KAAKf,GAAGW,EAAEI,KAAKd,EAAE,OAAOc,EAAE,EAAE,OAAO,EAAuRV,CAAEM,GAAG,OAAOA,EAAEY,IAAIP,EAAEM,GAAGX,EAAEY,IAAIF,EAAEC,EAAE,IAAIX,EAAM,CAAC,MAAMW,EAAE,IAAIH,WAAW,GAAGG,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAE,MAAME,EAAE,IAAIL,WAAW,IAAI,OAAOK,EAAED,IAAIZ,EAAE,GAAGa,EAAED,IAAID,EAAE,IAAIE,EAAED,IAAIP,EAAE,IAAIQ,EAAED,IAAIF,EAAE,IAAIG,GAAG,MAAMC,EAAG,WAAWC,EAAG,WAAWC,EAAG,WAA0IC,EAAiB,oBAARC,OAAoBC,EAAGF,GAAG,WAAWC,OAAOE,EAAGH,GAAG,SAASC,OAAOG,EAAGJ,GAAG,SAASC,OAAOI,EAAGL,EAAyB,OAAtB7D,EAAG8D,OAAOK,gBAAiB,EAAOnE,EAAGoE,UAAU,GAAGC,EAAGH,EAAGI,SAAS,UAAUC,EAAEL,EAAGI,SAAS,iBAAiBD,EAAGG,EAAGN,EAAGI,SAAS,WAAWG,EAAG7B,GAAGA,GAAG,gBAAgBA,EAAE8B,EAAG9B,GAAwB,oBAArBA,EAAE+B,YAAYC,KAAyBC,EAAGjC,GAAwB,kBAArBA,EAAE+B,YAAYC,KAAuBE,EAAElC,GAAgB,IAAbA,EAAEmC,SAAaC,EAAEpC,GAAuB,iBAAbA,EAAEqC,UAAoBC,EAAGtC,GAAe,UAAZA,EAAEuC,QAAkBC,EAAGxC,GAAe,QAAZA,EAAEuC,QAAgBE,EAAEzC,GAAGkC,EAAElC,SAAoB,IAATA,EAAE1D,QAAqB8F,EAAEpC,GAAG0C,EAAG1C,GAAgB,IAAbA,EAAEmC,SAAaQ,EAAG3C,GAAgB,IAAbA,EAAEmC,SAAaS,EAAE5C,GAAe,QAAZA,EAAEuC,QAAgBM,EAAE7C,GAAe,UAAZA,EAAEuC,QAAkBO,EAAG9C,GAAe,WAAZA,EAAEuC,QAAmBQ,EAAG/C,GAAe,aAAZA,EAAEuC,QAAqBS,EAAGhD,GAAe,UAAZA,EAAEuC,QAAkBU,EAAGjD,GAAe,UAAZA,EAAEuC,QAAkBW,EAAGlD,GAAe,WAAZA,EAAEuC,QAAmBY,EAAGnD,GAAe,WAAZA,EAAEuC,QAAmBa,EAAGpD,GAAe,SAAZA,EAAEuC,QAAiBc,EAAGrD,GAAe,WAAZA,EAAEuC,QAAmBe,EAAE,IAAItD,SAAIuD,EAAsBC,GAAGxD,QAAGuD,EAA2BE,GAAGzD,QAAGuD,EAA8BG,GAAG1D,IAAI,IAAII,EAAE,MAAMH,EAAsC,OAAnCG,EAAK,MAAHJ,OAAQ,EAAOA,EAAEnD,oBAAqB,EAAOuD,EAAEtB,KAAKkB,EAAE,UAAU,OAAOC,IAAIA,EAAE0D,OAAO1D,EAAE2D,MAAM,GAAG3D,GAAG,cAAcA,GAAG4D,QAAQ5D,EAAE6D,UAAU,cAAcpC,SAAS,gBAAgBqC,GAAG/D,GAAGA,EAAEgE,WAAW,SAAS,SAASC,GAAGjE,EAAEC,GAAG,GAAGD,EAAEkE,MAAM,iBAAiB,OAAOlE,EAAE,GAAGiB,GAAGjB,EAAEkE,MAAM,SAAS,OAAOhD,OAAOiD,SAASC,SAASpE,EAAE,GAAGA,EAAEkE,MAAM,eAAejD,EAAE,OAAOjB,EAAE,MAAMI,EAAEiE,KAAIC,eAAeC,qBAAqBlE,EAAED,EAAEvD,cAAc,QAAQ4D,EAAEL,EAAEvD,cAAc,KAAK,OAAOuD,EAAEoE,KAAKC,YAAYpE,GAAGD,EAAEsE,KAAKD,YAAYhE,GAAGR,IAAII,EAAEtD,KAAKkD,GAAGQ,EAAE1D,KAAKiD,EAAES,EAAE1D,KAAK,SAASsH,GAAErE,GAAG,IAAIC,EAAE,OAAoD,OAA7CA,EAAED,GAAGkC,EAAElC,GAAM,MAAHA,OAAQ,EAAOA,EAAE2E,cAAc3E,GAASC,EAAEiB,OAAOtE,SAAS,MAAMgI,GAAE,6BAA6B,SAASC,GAAG7E,EAAEC,EAAEG,GAAG,MAAMC,EAAEgE,GAAEjE,GAAG0E,gBAAgBF,GAAE,OAAO,OAAOvE,EAAE0E,eAAe,KAAK,QAAQ/E,EAAEgF,YAAY3E,EAAE0E,eAAe,KAAK,SAAS9E,EAAE+E,YAAY3E,EAAE0E,eAAe,KAAK,iBAAiB/E,KAAKC,KAAKI,EAAE,SAAS4E,GAAGjF,EAAEC,GAAG,IAAIG,GAAE,IAAI8E,eAAgBC,kBAAkBnF,GAAG,OAAOC,IAAIG,EAAEA,EAAEgF,QAAQ,sEAAsE,yCAAyCC,mBAAmBjF,KAAK,SAASkF,GAAGtF,EAAEC,EAAE,YAAYG,EAAE,GAAG,OAAOjB,EAAEoG,KAAK,KAAK,YAAY,IAAI,aAAa,IAAInG,QAAQ,CAACiB,EAAEI,KAAKT,EAAEwF,OAAO9E,IAAIA,EAAEL,EAAEK,GAAGD,EAAE,IAAIgF,MAAM,kBAAkBxF,EAAEG,KAAK,MAAMC,GAAG,GAAGe,EAAG,OAAOkC,EAAE,yBAAyBoC,KAAKzF,EAAE0F,QAAQvF,GAAGC,GAAmC,SAAYL,GAAG,IAAIa,EAAE+E,EAAE,MAAM3F,EAAEG,GAAGJ,EAAE6F,MAAM,KAAKxF,EAAmD,OAAhDuF,EAA6B,OAA1B/E,EAAEZ,EAAEiE,MAAM,oBAAqB,EAAOrD,EAAE,IAAU+E,OAAE,EAAOnF,EAAES,OAAO4E,KAAK1F,GAAGM,EAAED,EAAEH,OAAOK,EAAE,IAAIH,WAAWE,GAAG,IAAI,IAAIqF,EAAE,EAAEA,EAAErF,EAAEqF,GAAG,EAAEpF,EAAEoF,GAAGtF,EAAEP,WAAW6F,GAAG,OAAO,IAAIC,MAAMrF,IAAI+E,KAAKrF,IAApQ4F,CAAGjG,EAAE8D,UAAU7D,EAAEG,IAAI,MAAMC,KAA6O,SAAS6F,GAAGlG,EAAEC,GAAG,OAAO,IAAIb,QAAQ,CAACgB,EAAEC,KAAK,MAAMI,EAAE,IAAI0F,WAAW1F,EAAE2F,OAAO,KAAIhG,EAAEK,EAAE4F,SAAQ5F,EAAE6F,QAAQ,KAAIjG,EAAEI,EAAE8F,QAAO9F,EAAE+F,QAAQ,KAAInG,EAAE,IAAIoF,6BAA6BxF,OAAU,YAAJA,EAAcQ,EAAEgG,cAAczG,GAAO,gBAAJC,GAAmBQ,EAAEiG,kBAAkB1G,KAAK,MAAM2G,GAAG3G,GAAGkG,GAAGlG,EAAE,WAAW4G,GAAG5G,GAAGkG,GAAGlG,EAAE,eAAe,SAAS6G,GAAE7G,EAAEC,GAAG,MAAMG,EAAEiE,GAAEpE,GAAGpD,cAAc,OAAO,OAAOuD,EAAE0G,SAAS,OAAO1G,EAAE2G,QAAQ,QAAQ3G,EAAE4G,IAAIhH,EAAEI,EAAE,SAAS6G,GAAEjH,EAAEC,GAAG,OAAO,IAAIb,QAAQgB,IAAI,MAAM8G,QAAQ7G,EAAEsE,cAAclE,EAAE0G,QAAQzG,GAAM,MAAHT,EAAQA,KAAKU,EAAY,iBAAHX,EAAY6G,GAAE7G,EAAEqE,GAAE5D,IAAIT,EAAE,IAAIa,EAAE,KAAK+E,EAAE,KAAK,SAASG,IAAI3F,EAAEO,GAAGE,GAAGuG,aAAavG,GAAM,MAAH+E,GAASA,IAAI,GAAGvF,IAAIQ,EAAEwG,WAAWtB,EAAE1F,IAAIwC,EAAElC,GAAG,CAAC,MAAM2G,EAAE3G,EAAE4G,YAAY5G,EAAEqG,IAAI,IAAIM,EAAE,OAAO3G,EAAE6G,OAAOP,GAAEtG,EAAE6G,OAAOvH,GAAGxD,KAAK2D,GAAG2F,IAAI,GAAGpF,EAAE8G,YAAY,EAAE,OAAO1B,IAAI,MAAM2B,EAAE3B,EAAErK,EAAEiM,IAAIrE,EAAE,oBAAoBgE,EAAEK,GAAM,MAAHjH,GAASA,EAAEiH,GAAG5B,KAAKH,EAAE,MAAKjF,EAAEiH,oBAAoB,aAAaF,GAAG/G,EAAEiH,oBAAoB,QAAQlM,KAAIiF,EAAEkH,iBAAiB,aAAaH,GAAGI,MAAK,IAAKnH,EAAEkH,iBAAiB,QAAQnM,GAAGoM,MAAK,QAAS,CAAC,MAAMR,EAAEhF,EAAG3B,GAAGA,EAAE5D,KAAKgL,QAAQpH,EAAE4G,YAAY5G,EAAEqG,IAAI,IAAIM,EAAE,OAAOvB,IAAI,MAAM2B,EAAE,IAAIvI,EAAEoG,KAAK,KAAK,YAAY,GAAG3C,EAAEjC,IAAI,WAAWA,EAAE,UAAUA,EAAEqH,SAAS,MAAML,GAAGrE,EAAE,kDAAkD3C,EAAEsH,QAAQC,aAAaZ,EAAEK,GAAG5B,MAAMrK,EAAEiM,IAAIrE,EAAE,oBAAoB3C,EAAEsH,QAAQC,aAAaZ,EAAEK,GAAG5B,KAAK,GAAGnD,EAAEjC,IAAIA,EAAEwH,SAAS,OAAOT,IAAI9B,EAAE,MAAKjF,EAAEiH,oBAAoB,OAAOF,GAAG/G,EAAEiH,oBAAoB,QAAQlM,KAAIiF,EAAEkH,iBAAiB,OAAOH,GAAGI,MAAK,IAAKnH,EAAEkH,iBAAiB,QAAQnM,GAAGoM,MAAK,OAAQ,SAASM,GAAGpI,EAAEC,GAAG,OAAOd,EAAEoG,KAAK,KAAK,YAAY9C,EAAEzC,KAAK4C,EAAE5C,IAAI6C,EAAE7C,SAASiH,GAAEjH,GAAGkH,QAAQjH,UAAUb,QAAQiJ,KAAK,MAAM,SAASC,QAAQlI,GAAGmI,MAAMC,KAAKxI,EAAEyI,iBAAiBrI,IAAIsI,IAAIrI,GAAG4G,GAAE5G,GAAG6G,QAAQjH,UAAU,MAAM0I,GAAG,WAAW,IAAI1I,EAAE,EAA0E,MAAM,KAAKA,GAAG,MAA9E,aAAY7B,KAAKwK,SAASzK,EAAG,GAAG,IAAI,GAAG6G,SAAS,MAAM6D,OAAO,GAAuBzI,KAAMH,KAArH,GAA6H,SAAS6I,GAAG9I,GAAG,OAAU,MAAHA,OAAQ,EAAOA,EAAE6F,MAAM,KAAK6C,IAAIzI,GAAGA,EAAE8I,OAAO3D,QAAQ,OAAO,IAAI4D,eAAeC,OAAOpF,SAAqJ,SAASqF,GAAElJ,EAAEC,GAAG,OAAOd,EAAEoG,KAAK,KAAK,YAAY,OAAO1D,EAAG7B,GAAGA,EAAEmJ,GAAGnJ,EAAEjB,EAAEF,KAAKoB,IAAImJ,cAAa,OAAQ,SAASD,GAAGnJ,EAAEC,GAAG,OAAOd,EAAEoG,KAAK,KAAK,YAAY,IAAIoC,EAAE0B,EAAEC,EAAEC,EAAEC,EAAE,MAAMC,MAAMrJ,EAAE,EAAEsJ,UAAUrJ,EAAEsJ,aAAalJ,EAAE,GAAGR,MAAMS,EAAEmD,QAAW,MAAH5D,OAAQ,EAAOA,EAAE2J,OAAOjJ,EAAiC,OAA9BgH,EAAK,MAAH1H,OAAQ,EAAOA,EAAE4J,WAAgBlC,EAAK9G,EAAuB,OAApBwI,EAAErJ,EAAE2E,eAAqB0E,EAAEpI,EAAEC,OAAOtE,cAAS,EAAOgJ,EAAsD,OAAnD2D,EAAuB,OAApBD,EAAEtJ,EAAE2E,oBAAqB,EAAO2E,EAAEQ,aAAmBP,EAAEtI,EAAEC,YAAO,EAAO6E,EAAE,IAAIgE,IAAIzC,EAAEvI,EAAEF,GAAG+E,MAAM,EAAED,OAAO,EAAEgC,QAAQ,EAAED,KAAK,YAAY+D,MAAMrJ,EAAE4J,gBAAgB,KAAK1N,MAAM,KAAK2M,OAAO,KAAKgB,kBAAkB,EAAE/C,QAAQ,IAAIgD,SAAS,KAAKN,MAAMlJ,EAAEyJ,MAAMtL,GAAGuL,YAA9oB,SAAYpK,GAAG,OAAOqK,MAAMrK,EAAE,WAAW,eAAinBsK,CAA+B,OAA3Bd,EAAK,MAAHvJ,OAAQ,EAAOA,EAAEkK,YAAa,EAAOX,EAAEe,gBAAgBC,iBAAiB,iFAAiFD,gBAAe,GAAO,MAAHtK,OAAQ,EAAOA,EAAEkK,OAAOM,QAAQ,KAAKC,QAAQC,kBAAkB,IAAIjB,UAAU,KAAKC,aAAalJ,EAAEmK,YAAY,KAAKC,YAAY,KAAKC,yBAAyB,KAAKC,uBAAuB,KAAK3B,cAAa,GAAInJ,IAAI+K,aAAY,EAAGC,IAAjoC,SAAYjL,GAAG,OAAOkL,KAAKjL,GAAGD,GAAGwD,GAAGvD,GAAGkL,QAAQlL,GAAGD,GAAGyD,GAAGxD,GAAGmL,KAAK,IAAInL,IAAID,GAAGsD,KAAKrD,IAAqjCoL,CAAG3K,GAAG4K,KAAKtL,EAAE2E,cAAc9D,EAAE0K,YAAY3F,EAAE4F,IAAQ,IAAJpL,EAAM,KAAK,GAAGA,EAAEqL,gBAAgBC,GAAG7K,GAAG8K,eAAkB,MAAH9K,OAAQ,EAAOA,EAAEiE,gBAAgBF,GAAE,QAAQgH,UAAU,IAAI7B,IAAI8B,sBAAsB,IAAI9B,IAAI+B,YAAY,IAAIvD,MAAMpH,GAAId,GAAGI,EAAEA,EAAE,IAAIiI,IAAI,KAAK,IAAI,MAAMqD,EAAE,IAAIC,OAAO3L,GAAG,OAAO0L,EAAEE,UAAUC,IAAG/M,EAAEoG,KAAK,KAAK,YAAY,IAAI4G,EAAEC,EAAGC,EAAEC,EAAG,MAAMC,IAAIC,EAAEnG,OAAOoG,GAAGP,EAAEQ,KAAKD,EAA4C,OAAzCL,EAAiB,OAAbD,EAAEpG,EAAE4G,IAAIH,SAAU,EAAOL,EAAErM,UAAgBsM,EAAGtN,KAAKqN,EAAEM,GAA4C,OAAxCH,EAAiB,OAAbD,EAAEtG,EAAE4G,IAAIH,SAAU,EAAOH,EAAEO,SAAeN,EAAGxN,KAAKuN,EAAE,IAAI5G,8CAA8C+G,SAAQT,EAAEc,eAAeX,KAAI,IAAIO,EAAEN,EAAE,MAAMI,IAAIC,GAAGN,EAAEQ,KAA6C,OAAvCP,EAAgB,OAAbM,EAAE1G,EAAE4G,IAAIH,SAAU,EAAOC,EAAEG,SAAeT,EAAErN,KAAK2N,EAAE,IAAIhH,8CAA8C+G,QAAOT,EAAE,MAAMA,GAAG,OAAOzI,EAAE,uBAAuByI,GAAG,QAAQ9C,OAAOpF,SAASiJ,aAAa,IAAIC,IAAIC,aAAa,IAAIjD,IAAIkD,kBAAkBvJ,GAAG7C,IAAI,aAAa,gBAAgB,UAAU,OAAOoI,OAAOpF,SAASqJ,KAAK,aAAaC,SAASpH,EAAEqH,eAAe,EAAEC,SAASxD,SAASlJ,EAAE2M,SAASvB,IAAI,IAAIG,EAAEM,EAAE,MAAW,0BAAJT,EAAsC,kBAAHpL,GAA0B,OAATuL,EAAEvL,EAAEoL,KAAUG,EAAe,kBAAHvL,EAAaA,EAAY,OAAT6L,EAAE7L,EAAEoL,KAAUS,KAAQlF,EAAE2D,IAAIC,KAAK,yBAAyB9C,GAAGpI,EAAEsH,EAAEJ,SAASI,EAAE2D,IAAIE,QAAQ,mBAAmB,MAAMvH,MAAM8D,EAAE/D,OAAOjI,GAK5yR,SAAYsE,EAAEC,GAAG,IAAI2D,MAAMxD,EAAEuD,OAAOtD,GAAGJ,EAAE,GAAGiC,EAAElC,MAAMI,IAAIC,GAAG,CAAC,MAAMI,EAAET,EAAEuN,wBAAwBnN,EAAEA,GAAGK,EAAEmD,OAAO4J,OAAOxN,EAAEyN,aAAa,WAAW,EAAEpN,EAAEA,GAAGI,EAAEkD,QAAQ6J,OAAOxN,EAAEyN,aAAa,YAAY,EAAE,OAAO7J,MAAMxD,EAAEuD,OAAOtD,GALulRqN,CAAG1N,EAAEsH,GAAG,OAAOA,EAAE1D,MAAM8D,EAAEJ,EAAE3D,OAAOjI,EAAE4L,IAAI,SAASoE,GAAG1L,GAAG,IAAIA,EAAE,OAAO,MAAMC,EAAED,EAAEnD,cAAc,SAASuD,EAAEH,EAAE0E,cAAcgJ,eAAgB,qGAKh9R,OAAO1N,EAAEwE,YAAYrE,GAAGH,EAA6N,SAAS2N,GAAG5N,EAAEC,GAAG,OAAOd,EAAEoG,KAAK,KAAK,YAAY,MAAM0F,IAAI7K,EAAE8G,QAAQ7G,EAAE+M,eAAe3M,EAAEkK,kBAAkBjK,GAAGT,EAAEG,EAAE8K,KAAK,mBAAmB,MAAMvK,QAAQsG,GAAEjH,GAAGkH,QAAQ7G,KAAKwN,OAAOhN,EAAEiN,UAAUlI,GAAiS,SAAY5F,EAAEC,GAAG,MAAM2D,MAAMxD,EAAEuD,OAAOtD,EAAEoJ,MAAMhJ,EAAEuJ,gBAAgBtJ,EAAEuJ,kBAAkBtJ,GAAGV,EAAEY,EAAEb,EAAEnD,cAAc,UAAUgE,EAAE+C,MAAMxF,KAAK2P,MAAM3N,EAAEK,GAAGI,EAAE8C,OAAOvF,KAAK2P,MAAM1N,EAAEI,GAAGI,EAAEvE,MAAMsH,SAASxD,MAAMS,EAAEvE,MAAMqH,UAAUtD,MAAMM,IAAIE,EAAE+C,MAAMjD,GAAGE,EAAE8C,OAAOhD,KAAKE,EAAE+C,MAAMjD,GAAGE,EAAE8C,OAAOhD,EAAEE,EAAE+C,MAAM/C,EAAE8C,QAAQ9C,EAAE8C,QAAQhD,EAAEE,EAAE+C,MAAM/C,EAAE+C,MAAMjD,IAAIE,EAAE+C,OAAOjD,EAAEE,EAAE8C,OAAO9C,EAAE8C,OAAOhD,GAAGE,EAAE+C,MAAMjD,GAAGE,EAAE8C,QAAQhD,EAAEE,EAAE+C,MAAM/C,EAAE+C,MAAMjD,IAAIE,EAAE+C,OAAOjD,EAAEE,EAAE8C,OAAO9C,EAAE8C,OAAOhD,IAAI,MAAMiF,EAAE/E,EAAEmN,WAAW,MAAM,OAAOpI,GAAGlF,IAAIkF,EAAEqI,UAAUvN,EAAEkF,EAAEsI,SAAS,EAAE,EAAErN,EAAE+C,MAAM/C,EAAE8C,UAAUkK,OAAOhN,EAAEiN,UAAUlI,GAAjzBuI,CAAGnO,EAAE2E,cAAc1E,GAAG8F,EAAE,KAAK,IAAO,MAAHH,GAASA,EAAEwI,UAAUzN,EAAE,EAAE,EAAEE,EAAE+C,MAAM/C,EAAE8C,QAAQ,MAAM2D,GAAGhE,EAAE,sBAAsBgE,KAAK,GAAGvB,IAAI9F,EAAEqN,SAAS,mBAAmB,IAAI,IAAIhG,EAAE,EAAEA,EAAE7G,EAAE6G,UAAU,IAAIlI,QAAQsI,IAAIL,WAAW,KAAKtB,IAAI2B,KAAKJ,EAAE5G,KAAK,OAAOT,EAAEmN,eAAe,EAAEhN,EAAE+K,QAAQ,mBAAmBtK,IAA0hB,MAAMwN,IAAI,QAAQ,SAAS,2BAA2BC,IAAI,SAAS,QAAQ,SAASC,GAAGvO,EAAEC,EAAEG,GAAG,IAAImJ,EAAE,MAAMsC,sBAAsBxL,EAAEsE,cAAclE,GAAGL,EAAEM,EAAEV,EAAEwO,SAASxF,cAAcrI,EAAEyB,EAAEpC,IAAQ,QAAJU,EAAUG,EAAEF,EAAE2N,GAAG5F,IAAIc,IAAIA,EAAExJ,EAAEyN,aAAajE,KAAKP,OAAO,EAAC,CAAEO,KAAS,OAAJA,MAAa5D,GAAGjF,GAAG,MAAMD,EAAEG,EAAE6H,IAAI,CAACc,EAAEuC,OAAOvC,KAAKuC,KAAKmB,KAAK,KAAKjN,GAAGgJ,OAAOpF,SAASqJ,KAAK,KAAK,GAAG7M,EAAEoO,IAAI7I,GAAG,OAAOvF,EAAEsM,IAAI/G,GAAG,IAAIG,EAAE3F,EAAEsO,QAAQ,IAAI3I,EAAE,IAAItF,KAAIsF,EAAEtF,EAAE5D,cAAc,WAAY8R,kBAAkBhG,OAAO5C,EAAEnC,MAAM,IAAImC,EAAEpC,OAAO,IAAIoC,EAAEzJ,MAAMsS,WAAW,SAAS7I,EAAEzJ,MAAMuS,SAAS,QAAQpO,EAAEiE,KAAKD,YAAYsB,GAAwB,OAApBwD,EAAExD,EAAE+I,gBAAsBvF,EAAE3M,SAASmS,MAAM,8DAA8D3O,EAAEsO,QAAQ3I,GAAG,MAAMyD,GAAGlG,EAAE,kCAAkCkG,GAAG,IAAIzD,EAAE,OAAO,IAAIgE,IAAI,MAAMzC,EAAEvB,EAAE+I,cAAc,IAAIxH,EAAE,OAAO,IAAIyC,IAAI,MAAMrC,EAAEJ,EAAE1K,SAAS,IAAIlB,EAAEiM,EAAEhH,GAAGjF,EAAEgM,EAAE5C,gBAAgBF,GAAE,OAAO+C,EAAEjM,EAAEiJ,cAAcG,gBAAgBpJ,EAAEsT,aAAatO,GAAGG,EAAEoO,QAAQ,EAAEzF,EAAEuC,MAAMpE,EAAE5C,eAAe,KAAKyE,EAAEuC,KAAKrQ,EAAE+I,YAAYkD,IAAIjM,EAAEiM,EAAED,EAAE7K,cAAc6D,GAAGiH,EAAEuH,YAAY,IAAIxH,EAAEhD,KAAKD,YAAY/I,GAAG,MAAM2N,EAAE/B,EAAE6H,iBAAiBxH,EAAE1H,GAAGqJ,EAAE,IAAIS,IAAI,IAAI,IAAIP,EAAEH,EAAE/I,OAAOyL,EAAE,EAAEA,EAAEvC,EAAEuC,IAAI,CAAC,MAAMG,EAAE7C,EAAE+F,KAAKrD,GAAGsC,GAAG3M,SAASwK,IAAI5C,EAAE1I,IAAIsL,EAAE7C,EAAEgG,iBAAiBnD,IAAI,OAAOxE,EAAEhD,KAAK4K,YAAY5T,GAAG2E,EAAEO,IAAIgF,EAAE0D,GAAGA,EAAE,SAASiG,GAAGvP,EAAEC,EAAEG,GAAG,IAAIS,EAAE,MAAMR,EAAE,IAAI0J,IAAItJ,KAAKC,EAAE,IAAIqJ,IAAI,GAAG3J,EAAE,IAAI,MAAMwF,KAAKxF,EAAEO,EAAEiF,QAAQ,IAAI,IAAIA,EAAE5F,EAAEM,OAAOyF,EAAE,EAAEA,EAAEH,EAAEG,IAAI,CAAC,MAAMuB,EAAEtH,EAAEoP,KAAKrJ,GAAGpF,EAAE2G,GAAG,IAAI,IAAI1B,EAAEnF,EAAEH,OAAOyF,EAAE,EAAEA,EAAEH,EAAEG,IAAqB,OAAhBlF,EAAEH,EAAEiM,IAAIlM,EAAEsF,MAAYlF,EAAEoO,QAAQ,CAAC3H,EAAEI,IAAIrH,EAAEO,IAAI8G,EAAEJ,IAAI,SAAS3G,EAAEiF,GAAG,MAAMG,EAAE/F,EAAEqP,iBAAiBzJ,GAAG0B,EAAEtH,EAAEwP,oBAAoB5J,GAAG8B,EAAE9B,EAAE6J,YAAY,KAAK/T,EAAEgM,GAAG,EAAE9B,EAAE8J,UAAU,EAAEhI,QAAG,EAAO,GAAGhM,EAAE,CAAC,IAAIiM,EAAEjH,EAAEiM,IAAIjR,GAAGiM,IAAIA,EAAE,IAAIoC,IAAIrJ,EAAEE,IAAIlF,EAAEiM,IAAIA,EAAE/G,IAAIgF,GAAGG,EAAEuB,IAAIrH,EAAE0M,IAAI/G,KAAKG,IAAIuB,IAAI5L,EAAE+E,EAAEkP,KAAKjU,GAAG2E,EAAEO,IAAIgF,GAAGG,EAAEuB,KAAK,OAAOjH,EAAE,MAAMuP,IAAI,UAAU,UAAUC,IAAI,qBAAqB,4BAA4B,2BAA2B,2BAA2B,iCAAiC,4BAA4B,oBAChsD,SAASC,GAAG9P,GAAG,GAAGA,EAAE2E,cAAc,IAAI,MAAMlE,EAAET,EAAE8D,YAAY,GAAO,WAAJrD,EAAa,OAAOoG,GAAEpG,EAAET,EAAE2E,eAAe,MAAMlE,IAAI,MAAMR,EAAED,EAAE+P,WAAU,GAAI3P,EAAEJ,EAAEgO,WAAW,MAAM3N,EAAEJ,EAAE+N,WAAW,MAAM,IAAI,OAAO5N,GAAGC,GAAGA,EAAE2P,aAAa5P,EAAE6P,aAAa,EAAE,EAAEjQ,EAAE4D,MAAM5D,EAAE2D,QAAQ,EAAE,GAAG1D,EAAE,MAAMQ,GAAG6C,EAAE,yBAAyB7C,GAAG,OAAOR,EAA+1B,SAASiQ,GAAGlQ,EAAEC,GAAG,OAAO6C,EAAG9C,GAAG8P,GAAG9P,GAAGqD,EAAGrD,GAAv2C,SAAYA,EAAEC,GAAG,IAAIG,EAAE,IAAI,GAAyC,OAArCA,EAAK,MAAHJ,OAAQ,EAAOA,EAAEmQ,kBAAwB/P,EAAEsE,KAAK,OAAO0L,GAAGpQ,EAAEmQ,gBAAgBzL,KAAKzE,GAAG,MAAMI,GAAGiD,EAAE,yBAAyBjD,GAAG,OAAOL,EAAE+P,WAAU,GAA2rCM,CAAGrQ,EAAEC,GAAG2C,EAAE5C,GAAjN,SAAYA,GAAG,MAAMC,EAAED,EAAE+P,WAAU,GAAI,OAAO/P,EAAEuH,YAAYvH,EAAEuH,aAAavH,EAAEgH,MAAM/G,EAAE+G,IAAIhH,EAAEuH,WAAWtH,EAAEqQ,OAAO,IAAgB,SAAZrQ,EAAE8G,UAAmB9G,EAAE8G,QAAQ,SAAS9G,EAAyDsQ,CAAGvQ,GAAG6C,EAAE7C,GAA55B,SAAYA,GAAG,OAAOb,EAAEoG,KAAK,KAAK,YAAY,GAAGvF,EAAE2E,gBAAgB3E,EAAEuH,YAAYvH,EAAEwH,OAAO,OAAOX,GAAE7G,EAAEwH,OAAOxH,EAAE2E,eAAe,MAAM1E,EAAED,EAAE+P,WAAU,GAAI9P,EAAEuQ,YAAY,YAAYxQ,EAAEuH,YAAYvH,EAAEuH,aAAavH,EAAEgH,MAAM/G,EAAE+G,IAAIhH,EAAEuH,YAAY,MAAMnH,EAAEH,EAAE0E,cAAc,GAAGvE,EAAE,CAAC,IAAIC,GAAE,EAAG,SAAS4G,GAAEhH,GAAGkH,QAAQ,IAAI9G,GAAE,KAAMA,EAAE,OAAOL,EAAEwH,OAAOX,GAAE7G,EAAEwH,OAAOxH,EAAE2E,eAAe1E,EAAEA,EAAEwQ,YAAYzQ,EAAEyQ,kBAAkB,IAAIrR,QAAQsB,IAAIT,EAAE4H,iBAAiB,SAASnH,GAAGoH,MAAK,MAAO,MAAMrH,EAAEL,EAAEvD,cAAc,UAAU4D,EAAEmD,MAAM5D,EAAE0Q,YAAYjQ,EAAEkD,OAAO3D,EAAE2Q,aAAa,IAAI,MAAMjQ,EAAED,EAAEuN,WAAW,MAAMtN,GAAGA,EAAE0N,UAAUnO,EAAE,EAAE,EAAEQ,EAAEmD,MAAMnD,EAAEkD,QAAQ,MAAMjD,GAAG,OAAO4C,EAAE,wBAAwB5C,GAAGV,EAAEwH,OAAOX,GAAE7G,EAAEwH,OAAOxH,EAAE2E,eAAe1E,EAAE,OAAO6P,GAAGrP,GAAG,OAAOR,IAAmO2Q,CAAG5Q,GAAGA,EAAE+P,WAAU,GAAI,MAAMc,GAAG,IAAI9D,KAAK,WAAW,SAAS+D,GAAG9Q,EAAEC,EAAEG,EAAEC,GAAG,OAAOlB,EAAEoG,KAAK,KAAK,YAAY,GAAGrD,EAAE9B,KAAK6C,EAAG7C,IAAI8C,EAAG9C,KAAKC,EAAE4I,SAAS5I,EAAE4I,OAAO7I,GAAG,OAAOyQ,GAAGpC,IAAIxO,EAAEuO,WAAWqC,GAAGpC,IAAIrO,EAAEoO,UAAUnO,EAAE0Q,4BAAuB,EAAO1Q,EAAE0Q,uBAAuB1Q,EAAE2Q,iBAAiB,MAAMvQ,QAAQ2P,GAAGhQ,EAAEC,GAAGA,EAAEiN,SAAS,0BAAsY,SAAYtN,EAAEC,GAAG,IAAIwC,EAAEzC,KAAKyC,EAAExC,GAAG,OAAO,MAAMgR,UAAU7Q,EAAE8Q,WAAW7Q,GAAGL,EAAE,IAAII,IAAIC,EAAE,OAAO,MAAM8Q,UAAU1Q,GAAGR,EAAE3D,MAAMoE,EAAE,IAAI0Q,UAAU3Q,IAAIA,EAAEE,EAAE4I,EAAE1I,EAAEyG,EAAE1B,EAAElK,EAAEqK,GAAGrF,EAAEA,EAAED,EAAE,EAAEC,EAAE6I,EAAE,EAAE7I,EAAE4G,EAAE,EAAE5G,EAAEhF,EAAE,EAAEgF,EAAE2Q,eAAehR,GAAGD,GAAGM,EAAED,EAAEE,EAAED,EAAE6I,EAAE1I,EAAEH,EAAE4G,EAAE1B,EAAElF,EAAEhF,EAAEqK,EAAE9F,EAAE3D,MAAM6U,UAAUzQ,EAAEsE,WAApmBsM,CAAGtR,EAAES,GAAGR,EAAEwE,YAAYhE,KAAK,SAAS8Q,GAAGvR,EAAEC,EAAEG,GAAG,OAAOjB,EAAEoG,KAAK,KAAK,YAAY,IAAI9E,EAAEC,EAAE,MAAML,EAA8D,OAA3DK,EAAEwB,EAAElC,GAAqB,OAAjBS,EAAET,EAAEwR,iBAAkB,EAAO/Q,EAAEgR,gBAAW,GAAc/Q,EAAEV,EAAEyR,WAAW,IAAI,IAAI9Q,EAAEN,EAAEM,EAAEA,EAAEA,EAAE+Q,YAAY,IAAIhP,EAAG/B,GAAG,GAAGuB,EAAEvB,IAAIyC,EAAGzC,IAA4B,mBAAjBA,EAAEgR,cAA0B,CAAC,MAAM9Q,EAAEF,EAAEgR,gBAAgB,IAAI,IAAI/L,EAAE,EAAEA,EAAE/E,EAAEP,OAAOsF,UAAUkL,GAAG9Q,EAAEC,EAAEY,EAAE+E,GAAGxF,cAAc0Q,GAAG9Q,EAAEC,EAAEU,EAAEP,KAAygB,MAAMwR,GAAG,YAAY,SAASxB,GAAGpQ,EAAEC,EAAEG,GAAE,GAAI,OAAOjB,EAAEoG,KAAK,KAAK,YAAY,IAAI1E,EAAE+E,EAAEG,EAAEuB,EAAE,MAAM3C,cAActE,EAAEkL,YAAY9K,EAAEqM,aAAapM,GAAGT,EAAE,GAAGI,GAAGsC,EAAG3C,GAAG,OAAOK,EAAEsN,eAAe3N,EAAE0M,MAAM,GAAGrM,GAAGI,GAAGyB,EAAElC,KAAKyC,EAAEzC,IAAIoC,EAAEpC,IAAI,CAAC,MAAM0H,QAAQwI,GAAGlQ,EAAEC,GAAG,GAAGA,EAAEqN,SAAS,4BAA4B,CAAC,MAAMjE,EAAE3B,EAAEmK,oBAAoB,IAAI,IAAIvI,EAAED,EAAE/I,OAAOiJ,EAAE,EAAEA,EAAED,EAAEC,IAAI,CAAC,MAAMC,EAAEH,EAAEE,GAAGqI,GAAGE,KAAKtI,IAAI9B,EAAEqK,gBAAgBvI,IAAI,MAAM9N,EAAEuE,EAAE+Q,iBAA58H,SAAYhR,EAAEC,EAAEG,EAAEC,GAAG,IAAIqH,EAAEhM,EAAEiM,EAAE0B,EAAE,MAAMkC,YAAY9K,EAAEsK,uBAAuBrK,EAAEqQ,uBAAuBpQ,GAAGN,EAAEQ,EAAEZ,EAAE3D,MAAMsJ,EAAEnF,EAAE0O,iBAAiBnP,GAAG+F,EAAEwI,GAAGvO,EAAE,KAAKK,GAAM,MAAHM,GAASA,EAAEsO,QAAQ,CAAC3F,EAAEC,KAAKxD,EAAEiM,OAAOzI,KAAK,MAAMjC,EAAEiI,GAAG3J,EAAEG,EAAErF,GAAG,OAAO4G,EAAE0K,OAAO,uBAAuB1K,EAAE0K,OAAO,OAAO1K,EAAE0K,OAAO,KAAK1K,EAAE0K,OAAO,WAAW5R,IAAIkH,EAAE0K,OAAO,cAAc1K,EAAE0K,OAAO,gBAAgB1K,EAAE0K,OAAO,iBAAiB1K,EAAE0K,OAAO,eAAe1K,EAAE0K,OAAO,sBAAsB1K,EAAE0K,OAAO,oBAAoB1K,EAAE0K,OAAO,uBAAuB1K,EAAE0K,OAAO,qBAAqB1K,EAAE1G,IAAI,cAAc,aAAa,MAAyD,UAApB,OAA7B8G,EAAEJ,EAAEqF,IAAI,yBAA0B,EAAOjF,EAAE,KAAczH,EAAEgS,UAAUC,IAAI,+BAA+BzQ,IAAK6F,EAAEmH,IAAI,iBAAiBnH,EAAE1G,IAAI,gBAAgB,SAAS,MAAoD,YAApB,OAAxBlF,EAAE4L,EAAEqF,IAAI,oBAAqB,EAAOjR,EAAE,KAA8D,YAApB,OAAxBiM,EAAEL,EAAEqF,IAAI,oBAAqB,EAAOhF,EAAE,MAAkE,cAApB,OAA3B0B,EAAE/B,EAAEqF,IAAI,uBAAwB,EAAOtD,EAAE,KAAkBrJ,EAAEmS,cAAcnS,EAAEoS,aAAa9K,EAAE1G,IAAI,iBAAiB,OAAO,MAAM0G,EAAE2H,QAAQ,EAAE3F,EAAEC,GAAGC,KAAK3I,EAAEwR,YAAY7I,EAAEF,EAAEC,KAAKjC,EAA89FgL,CAAGtS,EAAE0H,EAAEtH,EAAEH,GAAGG,GAA3qB,SAAYJ,EAAEC,GAAG,MAAM+J,gBAAgB5J,EAAEwD,MAAMvD,EAAEsD,OAAOlD,EAAEnE,MAAMoE,GAAGT,EAAEU,EAAEX,EAAE1D,MAAM,GAAG8D,GAAGO,EAAE0R,YAAY,mBAAmBjS,EAAE,aAAaC,GAAGM,EAAE0R,YAAY,WAAWhS,MAAM,aAAaI,GAAGE,EAAE0R,YAAY,YAAY5R,MAAM,aAAaC,EAAE,IAAI,MAAMG,KAAKH,EAAEC,EAAEE,GAAGH,EAAEG,GAAgb0R,CAAG7K,EAAEzH,GAAG,IAAI0H,GAAE,EAAG,GAAG1H,EAAEqN,SAAS,iBAAiB,CAAC,MAAMjE,GAA4B,OAAxBxI,EAAEnF,EAAEiR,IAAI,oBAAqB,EAAO9L,EAAE,GAA4B,OAAxB+E,EAAElK,EAAEiR,IAAI,oBAAqB,EAAO/G,EAAE,IAAI+B,EAAE0B,EAAE3H,SAAS,YAAY2H,EAAE3H,SAAS,SAAS2H,EAAE3H,SAAS,cAAc1B,EAAEwS,aAAaxS,EAAEyS,cAAczS,EAAEmS,YAAYnS,EAAEoS,aAAa,OADr3C,SAAYpS,EAAEC,EAAEG,EAAEC,GAAG,MAAMkL,YAAY9K,EAAEgL,gBAAgB/K,EAAEkL,UAAUjL,EAAEqQ,iBAAiBnQ,GAAGR,EAAmB,SAASuF,EAAEG,GAAG,IAAIgG,EAAE,MAAMzE,EAAE7G,EAAE0O,iBAAiBnP,EAAE+F,GAAG,IAAI2B,EAAEJ,EAAE+H,iBAAiB,WAAW,IAAI3H,GAAO,SAAJA,EAAW,OAAOA,EAAEA,EAAEtC,QAAQ,2BAA2B,IAAI,MAAM1J,GAAGiN,MAAMhB,EAAE4G,GAAGvO,EAAE+F,EAAE1F,GAAM,MAAHQ,GAASA,EAAEoO,QAAQ,CAAC/C,EAAEM,KAAK7E,EAAEqK,OAAOxF,KAAK,MAAMnD,EAAEkG,GAAGjI,EAAEK,EAAEtH,EAAE0K,wBAAwB1B,EAAE2I,OAAO,WAAW3I,EAAE2I,OAAO,kBAAqE,UAApB,OAA7BjG,EAAE1C,EAAEsD,IAAI,yBAA0B,EAAOZ,EAAE,KAAc9L,EAAEgS,UAAUC,IAAI,+BAA+B,MAAM5I,gBAAgB5B,OAAO,GAAG2B,EAAE4F,QAAQ,EAAE/C,EAAEM,GAAGC,KAAKnD,EAAEqG,QAAQlD,MAAMP,IAAIM,EAAE,cAAc,SAAoB,IAAXlD,EAAEhJ,OAAW,OAAO,IAAIL,EAAEoC,WAAWpC,EAAEoC,aAAa3G,GAAGwR,KAAK,KAAK,MAAMhB,GAAG,OAAO,MAAM3C,EAAED,EAAE4D,KAAM,QAC5xH,IAAI1D,EAAE7I,EAAEgM,IAAIpD,GAAGC,IAAIA,KAAK7I,EAAEC,IAAI2I,EAAEC,IAAIA,EAAEmG,SAASjU,EAAE,MAAMqK,KADknGrF,GAAID,IACjnGmP,GAAGX,QAAQrJ,GAAGxF,GAAGyP,GAAGZ,QAAQrJ,IAA42I8M,CAAG1S,EAAE0H,EAAEC,EAAE1H,GAAl3I,SAAYD,EAAEC,GAAG8C,EAAG/C,KAAKC,EAAE0S,UAAU3S,EAAEpB,QAAQmE,EAAG/C,IAAIgD,EAAGhD,IAAImD,EAAGnD,KAAKC,EAAE2S,aAAa,QAAQ5S,EAAEpB,OAAuxIiU,CAAG7S,EAAE0H,GAAuD,OAAnDJ,EAAEwB,GAA6B,OAAzB/C,EAAErK,EAAEiR,IAAI,qBAAsB,EAAO5G,EAAE,MAAYuB,EAAE2H,QAAQ5F,GAAG3I,EAAEwR,IAAI7I,IAAIxG,EAAE7C,WAAWuR,GAAGvR,EAAE0H,EAAEzH,IAAIyH,EAAE,MAAM/G,EAAEX,EAAE+P,WAAU,GAAI,aAAawB,GAAGvR,EAAEW,EAAEV,GAAGU,IAAI,SAASmS,GAAG9S,GAAG,GAAGA,EAAE2E,mBAAc,EAAO3E,EAAEuL,iBAAY,EAAOvL,EAAEyL,qBAAgB,EAAOzL,EAAE2L,oBAAe,EAAO3L,EAAE4L,UAAUmH,QAAQ/S,EAAE6L,sBAAsBkH,QAAQ/S,EAAE0O,QAAQ,CAAC,IAAI1O,EAAE0O,QAAQsE,SAAS,MAAM/S,IAAID,EAAE0O,aAAQ,EAAO1O,EAAE8L,WAAW9L,EAAE8M,aAAaiG,QAAQ/S,EAAEgN,aAAa+F,QAAQ/S,EAAEmN,SAAS4F,QAAQ/S,EAAEqN,SAAoZ,SAAS4F,GAAEjT,EAAEC,GAAG,MAAMsM,IAAInM,EAAE8S,YAAY7S,EAAE,OAAO8S,aAAa1S,EAAE,OAAO2S,SAAS1S,GAAGT,EAAE,IAAIU,EAAEP,EAAE,MAAM8G,QAAQrG,EAAEoM,cAAcrH,EAAEuH,SAASpH,EAAE0E,QAAQnD,EAAE6C,OAAOC,YAAY1C,EAAE6C,eAAe7O,EAAE8O,iBAAiB7C,GAAGmE,QAAQzC,GAAGrJ,EAAM,UAAJK,IAAcsB,GAAGC,IAAK5B,EAAEoN,iBAAiB,IAAI9D,EAAEvD,EAAE4G,IAAIvM,GAAG,IAAIkJ,EAAE,CAAC5N,GAAGA,aAAa2X,QAAQ3X,EAAEoW,KAAKnR,KAAKA,IAAI,KAAKmR,KAAKnR,GAAG,IAAI,MAAK,IAAI2S,MAAOC,WAAW,MAAMhK,EAAE1K,GAAG0N,IAAI5L,EAAEuG,QAAQrG,EAAEsS,aAAa1S,EAAE+S,QAAY,UAAJnT,GAAaoT,OAAO7N,QAAG,GAAQ8B,IAAG4B,GAAG5D,KAAKrF,EAAEP,aAAQ,EAAO8M,YAAO,EAAO8G,SAAS,OAAQA,SAAS,KAAKvU,EAAEoG,KAAK,KAAK,YAAY,GAAG+B,GAAO,UAAJjH,EAAY,CAAC,MAAMmJ,QAAQlC,EAAElH,GAAG,GAAGoJ,EAAE,OAAOA,EAAE,OAAO7H,GAAGvB,EAAE4D,WAAW,SAASqF,EAAE/I,OAAO,IAAIlB,QAAQ,CAACoK,EAAEuC,KAAK1C,EAAEtD,EAAE4N,KAAKtK,EAAE/I,OAAO,GAAGsT,YAAY/U,GAAGgV,OAAOzT,GAAGmJ,IAAID,EAAExJ,QAAQ0J,EAAEF,EAAEsD,OAAOb,IAAjmC,SAAY/L,GAAG,MAAMa,EAAEb,GAAGuM,IAAItM,EAAEiH,QAAQ9G,EAAE+S,aAAa9S,GAAGQ,EAAEJ,EAAEzB,EAAG6B,GAAG,MAAM,UAAU,iBAAiBH,EAAE,IAAIoT,gBAAgBnT,EAAEP,EAAEiH,WAAW,IAAI3G,EAAEqT,QAAQ3T,QAAG,EAAO,OAAO+J,MAAMlK,EAAEpB,GAAGmV,OAAOtT,EAAEsT,QAAQvT,IAAIhE,KAAKmJ,IAAI,IAAIA,EAAEqO,GAAG,MAAM,IAAIxO,MAAM,kCAAkCyO,MAAMtO,IAAI,OAAOvF,GAAG,IAAI,UAAU,OAAOuF,EAAEuO,OAAO1X,KAAKkK,IAAI,IAAI,OAAO,QAAQ,OAAOf,EAAEwO,UAAUC,QAAQ,IAAIjN,aAAazG,IAA8tB2T,CAAG/K,KAA5N,GAAoOgL,MAAM/K,IAAI,GAAGzD,EAAEiM,OAAO5R,GAAO,UAAJC,GAAasH,EAAE,OAAOrE,EAAE,gEAAgE3C,GAAa,iBAAHgH,EAAYA,EAAEA,EAAEjH,GAAG,MAAM8I,IAAIzD,EAAEnF,IAAIR,EAAEkJ,GAAG,OAAOA,EAAEoK,SAAS,SAASc,GAAGxU,EAAEC,EAAEG,EAAEC,GAAG,OAAOlB,EAAEoG,KAAK,KAAK,YAAY,IAAIkP,GAAGzU,GAAG,OAAOA,EAAE,IAAI,MAAMS,EAAEC,KAAuR,SAAYV,EAAEC,GAAG,MAAMG,KAAK,OAAOJ,EAAEoF,QAAQsP,GAAG,CAACrU,EAAEI,EAAEC,KAAKN,EAAEuP,MAAMjP,EAAEuD,GAAGvD,EAAET,KAAKI,IAAID,EAAE6I,OAAO,EAAE5I,MAAM0D,GAAG1D,IAAxXsU,CAAG3U,EAAEC,GAAG,IAAI,MAAMU,QAAQsS,GAAE7S,GAAGmM,IAAI7L,EAAEwS,YAAY7S,EAAE,QAAQ,OAAO8S,aAAa,YAAYnT,EAAEA,EAAEoF,QAAQwP,GAAGnU,QAAQE,OAAO,MAAMA,GAAG2C,EAAE,+BAA+B7C,EAAEE,GAAG,OAAOX,IAAI,SAASyU,GAAGzU,GAAG,MAAM,4BAA4B8R,KAAK9R,GAAG,MAAM0U,GAAG,6BAAuI,SAASE,GAAG5U,GAAG,MAAMC,EAAED,EAAEoF,QAAQ,2BAA2B,QAAQ,OAAO,IAAIiO,wBAAwBpT,eAAe,KAAK,SAAS4U,GAAG7U,EAAEC,GAAG,OAAOd,EAAEoG,KAAK,KAAK,YAAY,MAAMZ,cAAcvE,EAAEqL,gBAAgBpL,EAAEyM,aAAarM,EAAEuM,aAAatM,EAAE2M,MAAM1M,EAAE+J,KAAK7J,GAAGZ,EAAE,GAAMG,GAAIC,GAAII,EAAEkT,KAAM,GAAG9S,GAAGA,EAAEiU,QAAQ,CAAC,MAAMlP,EAAEmP,GAAGlU,EAAEiU,QAAQ7U,GAAGI,EAAEoE,YAAYrE,EAAEuN,kBAAkB/H,YACzgO,CAAC,MAAMA,EAAE2C,MAAMC,KAAKpI,EAAE4U,aAAa/L,OAAO3B,IAAI,IAAI,MAAM,aAAaA,GAAGzD,QAAQyD,EAAE2N,SAAS3U,QAAQ,MAAMoH,GAAG,OAAOpE,wCAAwCgE,EAAEvK,OAAO2K,IAAG,WAAYtI,QAAQiJ,IAAIzC,EAAE0C,QAAQhB,GAAGiB,MAAMC,KAAKlB,EAAE2N,UAAUvM,IAAI,CAAChB,EAAEhM,IAAIyD,EAAEoG,KAAK,KAAK,YAAY,GAAGtD,EAAGyF,GAAG,CAAC,IAAIC,EAAEjM,EAAE,EAAE,MAAM2N,EAAE3B,EAAE3K,KAAK,IAAIuM,EAAE,GAAG,IAAIA,QAAQ2J,GAAEhT,GAAGsM,IAAIlD,EAAE6J,YAAY,OAAOC,aAAa,SAAS,MAAM3J,GAAGlG,wCAAwC+F,IAAIG,GAAG,MAAMD,EAAED,EAAElE,QAAQsP,GAAG,CAAClL,EAAEuC,EAAEG,IAAI1C,EAAEpE,QAAQ8G,EAAEjI,GAAGiI,EAAE7C,KAAK,IAAI,MAAMG,KAEjZ,SAAYxJ,GAAG,GAAM,MAAHA,EAAQ,SAAS,MAAMC,KAAK,IAAIG,EAAEJ,EAAEoF,QAAQ8P,GAAG,IAAI,OAAO,CAAC,MAAMxU,EAAEyU,GAAGC,KAAKhV,GAAG,IAAIM,EAAE,MAAMT,EAAE0P,KAAKjP,EAAE,IAAIN,EAAEA,EAAEgF,QAAQ+P,GAAG,IAAI,MAAM9U,EAAE,yCAAyCI,EAAE,IAAI4S,OAAO,6GAA6G,MAAM,OAAO,CAAC,IAAI3S,EAAEL,EAAE+U,KAAKhV,GAAG,GAAGM,EAAED,EAAE4U,UAAUhV,EAAEgV,cAAe,MAAG3U,EAAED,EAAE2U,KAAKhV,IAAkC,MAA7BC,EAAEgV,UAAU5U,EAAE4U,UAAqBpV,EAAE0P,KAAKjP,EAAE,IAAI,OAAOT,EAFzCqV,CAAG/L,GAAG,IAAIjC,EAAEiO,WAAW/L,EAAEA,EAAExF,WAAW,WAAW2D,GAAG,EAAEL,EAAE2N,SAAS3U,QAAQ,MAAMyL,GAAGzI,EAAE,+CAA+CkS,KAAKhM,EAAEjD,MAAMwF,WAAWnG,EAAE0C,QAAQhB,GAAGiB,MAAMC,KAAKlB,EAAE2N,WAAWhM,OAAO3B,IAAI,IAAII,EAAE,OAAO5F,EAAGwF,IAAImN,GAAGnN,EAAEhL,MAAM+S,iBAAiB,UAA2D,OAAhD3H,EAAEoB,GAAGxB,EAAEhL,MAAM+S,iBAAiB,sBAAuB,EAAO3H,EAAE+N,KAAK/Z,GAAG+E,EAAEgO,IAAI/S,OAAOuT,QAAQ3H,IAAI,MAAMI,EAAEJ,EAAE5L,EAAEgF,EAAEiM,IAAIjF,EAAEoN,SAASpZ,EAAE2E,EAAEoE,YAAYrE,EAAEuN,kBAAkBjS,QACv5BiF,EAAEgP,KAAK6E,GAAG9M,EAAEoN,QAAQpN,EAAEgO,iBAAiBhO,EAAEgO,iBAAiB3Y,KAAK,KAAKkD,GAAGxD,KAAKkL,IAAIA,EAAEoN,GAAGpN,EAAE1H,GAAGS,EAAEE,IAAI8G,EAAEoN,QAAQnN,GAAGtH,EAAEoE,YAAYrE,EAAEuN,kBAAkBhG,gBACvI,MAAMuN,GAAG,uBAAuBC,GAAG,gDAAufQ,GAAG,8CAA8CC,GAAG,qDAAqD,SAASb,GAAG/U,EAAEC,GAAG,MAAMyK,KAAKtK,GAAGH,EAAEI,EAAED,EAAK,MAAHA,OAAQ,EAAOA,EAAEyV,qBAAgB,EAAO,OAAOxV,EAAEL,EAAEoF,QAAQwQ,GAAGnV,IAAI,OAAO,CAAC,MAAMC,EAAD,CAAIC,GAAGgV,GAAGP,KAAK3U,OAAO,IAAIE,EAAE,MAAM,GAAG,GAAGA,IAAIN,EAAE,cAAcK,QAAQV,EAAob,MAAM8V,IAAI,mBAAmB,sBAAsB,uBAAuB,qBAAqB,oBAAwsB,SAASC,GAAG/V,EAAEC,GAAG,MAAMoN,MAAMjN,GAAGH,EAAEiC,EAAElC,MAAM4C,EAAE5C,IAAIsC,EAAGtC,KAAKI,EAAEuP,QAAnxC,SAAY3P,EAAEC,GAAG,GAAG2C,EAAE5C,GAAG,CAAC,MAAMI,EAAEJ,EAAEuH,YAAYvH,EAAEgH,IAAI,IAAIjD,GAAG3D,GAAG,OAAO6S,GAAEhT,GAAGsM,IAAInM,EAAEgT,SAASpT,EAAEkT,YAAY,QAAQC,aAAa,YAAY1W,KAAK4D,IAAIA,IAAIL,EAAEsQ,OAAO,GAAGtQ,EAAEiI,QAAQC,YAAY9H,EAAEJ,EAAEgH,IAAI3G,GAAG,QAAQsB,GAAGC,IAAK3B,EAAEmN,sBAAsB,GAAGhL,EAAEpC,KAAK+D,GAAG/D,EAAEjD,KAAKgL,SAAS,CAAC,MAAM3H,EAAEJ,EAAEjD,KAAKgL,QAAQ,OAAOkL,GAAEhT,GAAGsM,IAAInM,EAAEgT,SAASpT,EAAEkT,YAAY,QAAQC,aAAa,YAAY1W,KAAK4D,IAAIA,IAAIL,EAAEiI,QAAQC,YAAY9H,EAAEJ,EAAEjD,KAAKgL,QAAQ1H,GAAG,OAAO,SAAk3B2V,CAAGhW,EAAEC,IAAIuC,EAAGxC,IAAII,EAAEuP,QAA3iB,SAAY3P,EAAEC,GAAG,IAAIY,EAAE,MAAM8D,cAAcvE,EAAEuL,eAAetL,GAAGJ,EAAEQ,EAA8B,OAA3BI,EAAEb,EAAEyN,aAAa,SAAe5M,EAAEb,EAAEyN,aAAa,cAAc,IAAIhN,EAAE,SAAS,MAAMC,EAAEC,GAAGF,EAAEoF,MAAM,KAAK,GAAGlF,EAAE,CAAC,MAAMiF,MAAMjF,IAAIoF,EAAK,MAAH3F,OAAQ,EAAOA,EAAE6V,qBAAqBrQ,KAAK,GAAGlF,GAAGV,EAAE4S,aAAa,OAAOhN,GAAM,MAAHvF,GAASA,EAAE4V,cAAcrQ,GAAG,SAAS,GAAGG,EAAE,OAAU,MAAH1F,GAASA,EAAEoE,YAAYsB,EAAEgK,WAAU,OAAQ,GAAGrP,EAAE,OAAOuS,GAAEhT,GAAGsM,IAAI7L,EAAEyS,aAAa,SAAS1W,KAAK6K,IAAO,MAAHjH,GAASA,EAAE6V,mBAAmB,YAAY5O,MAAM,SAAqG6O,CAAGnW,EAAEC,KAAKwC,EAAEzC,IAAII,EAAEuP,QAAlyB,SAAY3P,EAAEC,GAAG,OAAO6V,GAAGpN,IAAItI,IAAI,MAAMC,EAAEL,EAAEqP,iBAAiBjP,GAAG,OAAOC,GAAO,SAAJA,IAAkBsB,GAAGC,IAAK3B,EAAEmN,iBAAiBoH,GAAGnU,EAAE,KAAKJ,GAAE,GAAIxD,KAAKgE,KAAKA,GAAGJ,IAAII,GAAGT,EAAEqS,YAAYjS,EAAEK,EAAET,EAAEwP,oBAAoBpP,OAA9G,OAAuH6I,OAAOpF,SAAslBuS,CAAGpW,EAAE1D,MAAM2D,IAAID,EAAEqW,WAAWpH,QAAQ5O,IAAI0V,GAAG1V,EAAEJ,KAAK,SAASqW,GAAGtW,EAAEC,GAAG,OAAOd,EAAEoG,KAAK,KAAK,YAAY,MAAMnF,QAAQ8I,GAAElJ,EAAEC,GAAG,GAAGiC,EAAE9B,EAAEkL,OAAOlJ,EAAEhC,EAAEkL,MAAM,OAAOlL,EAAEkL,KAAK,MAAM3G,cAActE,EAAE4K,IAAIxK,EAAE4M,MAAM3M,EAAE+K,gBAAgB9K,EAAEgL,eAAe9K,EAAE+K,UAAUhG,EAAE8E,KAAK3E,EAAEmE,SAAS5C,EAAE8B,aAAa1B,EAAEkD,YAAYlP,EAAEmP,YAAYlD,EAAEmD,yBAAyBzB,GAAGjJ,EAAEK,EAAEyK,KAAK,cAAc,MAAM5B,QAAQ8G,GAAGhQ,EAAEkL,KAAKlL,GAAE,GAAI,GAAGO,GAAGN,EAAE,CAAC,IAAImM,EAAE,GAAG5G,EAAEqJ,QAAQ,CAACxC,EAAEN,KAAKK,MAAMC,EAAES,KAAM,eAEpkFf,WAEAxL,EAAE8D,YAAYpE,EAAEsN,eAAenB,IAAI/L,EAAE0K,QAAQ,cAAiB,MAAHzP,GAASA,EAAE4N,IAAO,IAAJvD,GAAQ7D,EAAEoH,KAAK7I,EAAEyK,KAAK,wBAAwB2J,GAAGvL,EAAElJ,GAAGK,EAAE0K,QAAQ,mBAAmB1K,EAAEyK,KAAK,cAAc6K,GAAGzM,EAAElJ,GAAG,MAAMmJ,EAAE7I,EAAEJ,OAAO,IAAIkJ,EAAE,EAAiJ,MAAHlC,GAASA,EAAEkC,EAAED,SAASnK,QAAQiJ,QAAQE,MAAM,IAAIG,IAApL,IAAIvJ,EAAEoG,KAAK,KAAK,YAAY,OAAO,CAAC,MAAMiH,EAAE9L,EAAE6V,MAAM,IAAI/J,EAAE,MAAM,UAAUA,EAAE,MAAMC,GAAGnJ,EAAE,qBAAqBmJ,GAAM,MAAHnF,GAASA,IAAIkC,EAAED,QAA8D9I,EAAE0K,QAAQ,cAAiB,MAAHxD,GAASA,EAAE2B,GAAG,MAAM4C,EAAkH,SAAYlM,EAAEC,GAAG,MAAM2D,MAAMxD,EAAEuD,OAAOtD,GAAGJ,EAAEQ,EAAEoE,GAAGzE,EAAEC,EAAEL,EAAE2E,eAAejE,EAAED,EAAEkE,cAAcG,gBAAgBrE,EAAEuO,aAAa,iBAAiB,OAAOtO,EAAEqE,eAAe,KAAK,IAAI,MAAMrE,EAAEqE,eAAe,KAAK,IAAI,MAAMrE,EAAEqE,eAAe,KAAK,QAAQ,QAAQrE,EAAEqE,eAAe,KAAK,SAAS,QAAQrE,EAAE8V,OAAOxW,GAAGS,EAAEgE,YAAY/D,GAAGD,EAAxagW,CAAGnN,EAAElJ,GAAG,OAAOS,GAAGqL,EAAEwK,aAAa7V,EAAEqL,EAAEyK,SAAS,IAAIhW,GAAGuL,EAAEwK,aAAa/V,EAAEuL,EAAEyK,SAAS,IAAIjP,GAAGoL,GAAG1S,GAAM,MAAHiJ,GAASA,EAAE6C,GAAGA,IAA8T,SAAS0K,GAAE5W,EAAEC,GAAG,OAAOd,EAAEoG,KAAK,KAAK,YAAY,IAAI5E,EAAE,MAAMP,QAAQ8I,GAAElJ,EAAEC,GAAGI,QAAQiW,GAAGlW,GAAGK,EAAEwE,GAAG5E,EAAED,EAAEkN,SAAS,2BAA2BlN,EAAEgJ,eAAehJ,EAAEqL,gBAAgBC,GAAGtL,EAAEuE,eAAevE,EAAEuL,eAAoC,OAApBhL,EAAEP,EAAEuE,oBAAqB,EAAOhE,EAAEmE,gBAAgBF,GAAE,QAAQxE,EAAEwL,UAAUmH,SAAS,MAAMrS,EAAEmG,GAAEpG,EAAEJ,EAAEsE,eAAe,aAAaiJ,GAAGlN,EAAEN,KAAmb,SAASyW,GAAE7W,EAAEC,GAAG,OAAOd,EAAEoG,KAAK,KAAK,YAAY,MAAMnF,QAAQ8I,GAAElJ,EAAEC,IAAIgL,IAAI5K,EAAEsF,QAAQlF,EAAEiF,KAAKhF,EAAE8K,IAAI7K,GAAGP,EAAES,QAAQ+V,GAAExW,GAAGC,EAAE6K,KAAK,sBAAsB,IAAItF,EAAE/E,EAAEiD,UAAUpD,EAAED,GAAG,IAAI,YAAY,cAAciB,SAAShB,IAAIC,GAAGS,GAAIC,EAAG,CAAC,MAAM0E,EAAEuB,GAAG1B,EAAEC,MAAM,KAAK,IAAI6B,EAAE,EAAEhM,GAAE,EAAG,GAAO,cAAJgF,EAAgB,CAAC,MAAMwL,EAbiM,SAAYlM,GAAG,IAAIC,EAAED,EAAEd,QAAQ4B,GAAI,OAAY,IAALb,IAASA,EAAED,EAAEd,QAAQ6B,KAAU,IAALd,IAASA,EAAED,EAAEd,QAAQ8B,IAAKf,EAa7R6W,CAAGxP,GAAG4E,GAAG,GAAGxE,EAAsB,EAApBtJ,KAAK2Y,MAAM7K,EAAE,IAAI,GAAKxQ,GAAE,GAAIgM,EAAE,OAAgB,eAAJhH,IAAmBgH,EAAE,IAAQ,MAAMC,EAAEL,EAAEoI,UAAU,EAAEhI,GAAG2B,EAAE/B,EAAEoI,UAAUhI,GAAG4B,EAAEpI,OAAO4E,KAAK6B,GAAG4B,EAAE,IAAI/I,WAAW8I,EAAEhJ,QAAQ,IAAI,IAAI4L,EAAE,EAAEA,EAAE3C,EAAEjJ,OAAO4L,IAAI3C,EAAE2C,GAAG5C,EAAEpJ,WAAWgM,GAAG,MAAM1C,EAAM,cAAJ9I,EAAgBH,EAAGgJ,EAAE5I,EAAEjF,GAAG6C,EAAEgL,EAAE5I,GAAGoL,EAAE7K,OAAO8V,KAAKC,OAAOC,gBAAgB1N,IAAI5D,GAAGG,EAAE,IAAIgG,EAAE1C,GAAG6D,KAAK,IAAI,OAAO7M,EAAE8K,QAAQ,sBAAsBvF,IAAI,SAASuR,GAAGnX,EAAEC,GAAG,OAAOd,EAAEoG,KAAK,KAAK,YAAY,MAAMnF,QAAQ8I,GAAElJ,EAAEC,IAAI2D,MAAMvD,EAAEsD,OAAOlD,EAAEkE,cAAcjE,GAAGN,EAAEO,QAAQkW,GAAEzW,GAAGS,EAAEgE,GAAGxE,EAAEI,EAAEC,GAAGkF,EAAE/E,EAAE8D,cAAcG,gBAAgBjE,EAAEmO,aAAa,SAAS,OAAOpJ,EAAEb,eAAe,KAAK,OAAOpE,GAAGiF,EAAEb,eAAe,KAAK,SAAS,QAAQa,EAAEb,eAAe,KAAK,QAAQ,QAAQlE,EAAE4D,YAAYmB,GAAGX,GAAGpE,EAAET,EAAEkN,SAAS,6BAA8vBnQ,EAAEia,cAAcjO,GAAGhM,EAAEka,eAAevE,GAAG3V,EAAEma,UAAnrE,SAAYtX,EAAEC,GAAG,OAAOd,EAAEoG,KAAK,KAAK,YAAY,MAAMnF,QAAQ8I,GAAElJ,EAAEC,IAAIgL,IAAI5K,EAAEqF,KAAKjF,EAAEkF,QAAQjF,EAAE8K,IAAI7K,GAAGP,EAAES,QAAQ+V,GAAExW,GAAGC,EAAE6K,KAAK,kBAAkB,MAAMtF,QAAQN,GAAGzE,EAAEJ,EAAEC,GAAG,IAAI,YAAY,cAAcgB,SAASjB,IAAIE,EAAE,CAAC,MAAMoF,QAAQa,GAAGhB,EAAEiD,MAAM,EAAE,KAAK,IAAIvB,EAAE,IAAI9G,WAAWuF,GAAG,MAAW,cAAJtF,EAAgB6G,EAAE/G,EAAG+G,EAAE3G,GAAO,eAAJF,IAAmB6G,EAAE/I,EAAE+I,EAAE3G,IAAIN,EAAE8K,QAAQ,kBAAkB,IAAInF,MAAMsB,EAAE1B,EAAEiD,MAAM,MAAMnD,KAAKjF,IAAI,OAAOJ,EAAE8K,QAAQ,kBAAkBvF,KAAsxDzI,EAAEoa,YAAYX,GAAEzZ,EAAEqa,aAAaX,GAAE1Z,EAAEsa,sBAAsBnB,GAAGnZ,EAAEua,WAAr1B,SAAY1X,EAAEC,GAAG,OAAOd,EAAEoG,KAAK,KAAK,YAAY,MAAMnF,QAAQ8I,GAAElJ,EAAEC,IAAI0E,cAActE,EAAEuD,MAAMnD,EAAEkD,OAAOjD,EAAE+I,MAAM9I,EAAE+E,KAAK7E,GAAGT,EAAEwF,EAAM,kBAAJ/E,QAA0BsW,GAAG/W,SAASyW,GAAEzW,GAAG2F,EAAEc,GAAEjB,EAAEvF,GAAG,OAAO0F,EAAEnC,MAAMxF,KAAK2P,MAAMtN,EAAEE,GAAGoF,EAAEpC,OAAOvF,KAAK2P,MAAMrN,EAAEC,GAAGoF,EAAEzJ,MAAMsH,SAASnD,MAAMsF,EAAEzJ,MAAMqH,UAAUjD,MAAMqF,KAA6kB5I,EAAEwa,UAA3kB,SAAY3X,EAAEC,GAAG,OAAOd,EAAEoG,KAAK,KAAK,YAAY,OAAOsR,SAAQ3N,GAAElJ,EAAEjB,EAAEF,KAAKoB,IAAIyF,KAAK,oBAAqgBvI,EAAEya,WAApf,SAAY5X,EAAEC,GAAG,OAAOd,EAAEoG,KAAK,KAAK,YAAY,MAAMnF,QAAQ8I,GAAElJ,EAAEC,GAAGI,QAAQuW,GAAExW,GAAG,OAAOC,EAAE2N,WAAW,MAAMiC,aAAa,EAAE,EAAE5P,EAAEuD,MAAMvD,EAAEsD,QAAQ+I,QAAmXvP,EAAEX,SAA9W,SAAYwD,EAAEC,GAAG,OAAOd,EAAEoG,KAAK,KAAK,YAAY,OAAOsR,SAAQ3N,GAAElJ,EAAEjB,EAAEF,KAAKoB,IAAIyF,KAAK,mBAAuSvI,EAAE0a,SAASV,GAAGha,EAAE2a,UAArS,SAAY9X,EAAEC,GAAG,OAAOd,EAAEoG,KAAK,KAAK,YAAY,OAAOsR,SAAQ3N,GAAElJ,EAAEjB,EAAEF,KAAKoB,IAAIyF,KAAK,oBAA+NvI,EAAE4a,UAAU9Q,GAAE9J,EAAE6a,cAAc5P,GAAG9K,OAAOC,eAAeJ,EAAE8a,OAAOC,aAAatZ,MAAM,WAb1iHL,CAAE4Z,qCCAtE1c,EAAAC,EAAAC,EAAA,sBAAAyc,UACaA,EACXrW,cACEwD,KAAK8S,UAAY,IAAIC,aAAa,IAClC/S,KAAKgT,GAAK,EAEZrG,IAAIhJ,GACF,MAAMI,EAAI/D,KAAK8S,UACf,IAAIxX,EAAI,EACR,IAAK,IAAInB,EAAI,EAAGA,EAAI6F,KAAKgT,IAAM7Y,EAAI,GAAIA,IAAK,CAC1C,MAAMwM,EAAI5C,EAAE5J,GACV8Y,EAAKtP,EAAIgD,EACTuM,EAAKra,KAAKsa,IAAIxP,GAAK9K,KAAKsa,IAAIxM,GAAKhD,GAAKsP,EAAKtM,GAAKA,GAAKsM,EAAKtP,GACxDuP,IAAInP,EAAEzI,KAAO4X,GACjBvP,EAAIsP,EAIN,OAFAlP,EAAEzI,GAAKqI,EACP3D,KAAKgT,GAAK1X,EAAI,EACP0E,KAEToT,UACE,MAAMrP,EAAI/D,KAAK8S,UACf,IAAiBnP,EAAGgD,EAAGuM,EAAnBpY,EAAIkF,KAAKgT,GAAcC,EAAK,EAChC,GAAInY,EAAI,EAAG,CAET,IADAmY,EAAKlP,IAAIjJ,GACFA,EAAI,IACT6I,EAAIsP,IAGJC,GAFAvM,EAAI5C,IAAIjJ,MACRmY,EAAKtP,EAAIgD,GACMhD,OAGb7I,EAAI,IAAOoY,EAAK,GAAKnP,EAAEjJ,EAAI,GAAK,GAAOoY,EAAK,GAAKnP,EAAEjJ,EAAI,GAAK,KAC9D6L,EAAS,EAALuM,KACJvP,EAAIsP,EAAKtM,GACIsM,IAAIA,EAAKtP,GAG1B,OAAOsP,sCCtCX,IAAAI,EAAAnd,EAAA,KAAAA,EAAAC,EAAAC,EAAA,sBAAAid,EAAA,sUCAe1P,aAAKA,GCApB,SAAS2P,EAAeC,EAAUC,GAC5BD,GAAYE,EAAmBhb,eAAe8a,EAASpT,OACzDsT,EAAmBF,EAASpT,MAAMoT,EAAUC,GAIhD,IAAIE,GACFC,QAAS,SAASC,EAAQJ,GACxBF,EAAeM,EAAOL,SAAUC,IAElCK,kBAAmB,SAASD,EAAQJ,GAElC,IADA,IAAIlP,EAAWsP,EAAOtP,SAAUhJ,GAAK,EAAGR,EAAIwJ,EAASvJ,SAC5CO,EAAIR,GAAGwY,EAAehP,EAAShJ,GAAGiY,SAAUC,KAIrDC,GACFK,OAAQ,SAASF,EAAQJ,GACvBA,EAAOO,UAETC,MAAO,SAASJ,EAAQJ,GACtBI,EAASA,EAAOK,YAChBT,EAAOU,MAAMN,EAAO,GAAIA,EAAO,GAAIA,EAAO,KAE5CO,WAAY,SAASP,EAAQJ,GAE3B,IADA,IAAIS,EAAcL,EAAOK,YAAa3Y,GAAK,EAAGR,EAAImZ,EAAYlZ,SACrDO,EAAIR,GAAG8Y,EAASK,EAAY3Y,GAAIkY,EAAOU,MAAMN,EAAO,GAAIA,EAAO,GAAIA,EAAO,KAErFQ,WAAY,SAASR,EAAQJ,GAC3Ba,EAAWT,EAAOK,YAAaT,EAAQ,IAEzCc,gBAAiB,SAASV,EAAQJ,GAEhC,IADA,IAAIS,EAAcL,EAAOK,YAAa3Y,GAAK,EAAGR,EAAImZ,EAAYlZ,SACrDO,EAAIR,GAAGuZ,EAAWJ,EAAY3Y,GAAIkY,EAAQ,IAErDe,QAAS,SAASX,EAAQJ,GACxBgB,EAAcZ,EAAOK,YAAaT,IAEpCiB,aAAc,SAASb,EAAQJ,GAE7B,IADA,IAAIS,EAAcL,EAAOK,YAAa3Y,GAAK,EAAGR,EAAImZ,EAAYlZ,SACrDO,EAAIR,GAAG0Z,EAAcP,EAAY3Y,GAAIkY,IAEhDkB,mBAAoB,SAASd,EAAQJ,GAEnC,IADA,IAAImB,EAAaf,EAAOe,WAAYrZ,GAAK,EAAGR,EAAI6Z,EAAW5Z,SAClDO,EAAIR,GAAGwY,EAAeqB,EAAWrZ,GAAIkY,KAIlD,SAASa,EAAWJ,EAAaT,EAAQoB,GACvC,IAA6CC,EAAzCvZ,GAAK,EAAGR,EAAImZ,EAAYlZ,OAAS6Z,EAErC,IADApB,EAAOsB,cACExZ,EAAIR,GAAG+Z,EAAaZ,EAAY3Y,GAAIkY,EAAOU,MAAMW,EAAW,GAAIA,EAAW,GAAIA,EAAW,IACnGrB,EAAOuB,UAGT,SAASP,EAAcP,EAAaT,GAClC,IAAIlY,GAAK,EAAGR,EAAImZ,EAAYlZ,OAE5B,IADAyY,EAAOwB,iBACE1Z,EAAIR,GAAGuZ,EAAWJ,EAAY3Y,GAAIkY,EAAQ,GACnDA,EAAOyB,aAGM,IAAAzB,EAAA,SAASI,EAAQJ,GAC1BI,GAAUF,EAAiBjb,eAAemb,EAAOzT,MACnDuT,EAAiBE,EAAOzT,MAAMyT,EAAQJ,GAEtCF,EAAeM,EAAQJ,aChEhB0B,EAAKrc,KAAKsc,GAGVC,EAAW,EAALF,EAKN/B,EAAMta,KAAKsa,IAYXkC,GAXOxc,KAAKyc,KACJzc,KAAK0c,MACP1c,KAAK2c,IACJ3c,KAAK2Y,KACN3Y,KAAK4c,IACH5c,KAAK2P,MACL3P,KAAK6c,MACP7c,KAAK6M,IACL7M,KAAKC,IACLD,KAAK8c,IACJ9c,KAAK+c,KACL/c,KAAKwc,MACNxc,KAAKgd,ICvBP,SAASC,KCIxB,IAEIC,EACAC,EACAC,EACAC,EALAC,EAAU,IAAItD,IACduD,EAAc,IAAIvD,IAMlBwD,GACFnC,MAAO4B,EACPhB,UAAWgB,EACXf,QAASe,EACTd,aAAc,WACZqB,EAAWvB,UAAYwB,EACvBD,EAAWtB,QAAUwB,GAEvBtB,WAAY,WACVoB,EAAWvB,UAAYuB,EAAWtB,QAAUsB,EAAWnC,MAAQ4B,EAC/DK,EAAQxJ,IAAIwG,EAAIiD,IAChBA,EAAc,IAAIvD,KAEpB/R,OAAQ,WACN,IAAI0V,EAAOL,EAAU,EAErB,OADAA,EAAU,IAAItD,IACP2D,IAIX,SAASF,IACPD,EAAWnC,MAAQuC,EAGrB,SAASA,EAAe9S,EAAGgD,GACzB0P,EAAWnC,MAAQwC,EACnBX,EAAME,EAAKtS,EAAGqS,EAAME,EAAKvP,EAG3B,SAAS+P,EAAU/S,EAAGgD,GACpByP,EAAYzJ,IAAIuJ,EAAKvS,EAAIsS,EAAKtP,GAC9BsP,EAAKtS,EAAGuS,EAAKvP,EAGf,SAAS4P,IACPG,EAAUX,EAAKC,GAGFK,QC/CXJ,EAAKU,IACLT,EAAKD,EACLW,GAAMX,EACNY,EAAKD,EAsBME,ICdXf,EACAC,EACAC,EACAC,EDWWY,GAnBb5C,MAYF,SAAqBvQ,EAAGgD,GAClBhD,EAAIsS,IAAIA,EAAKtS,GACbA,EAAIiT,IAAIA,EAAKjT,GACbgD,EAAIuP,IAAIA,EAAKvP,GACbA,EAAIkQ,IAAIA,EAAKlQ,IAfjBmO,UAAWgB,EACXf,QAASe,EACTd,aAAcc,EACdb,WAAYa,EACZhV,OAAQ,WACN,IAAIiW,IAAWd,EAAIC,IAAMU,EAAIC,IAE7B,OADAD,EAAKC,IAAOX,EAAKD,EAAKU,KACfI,ICZPC,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EAMLC,GACFvD,MAAOwD,EACP5C,UAAW6C,EACX5C,QAAS6C,EACT5C,aAAc,WACZyC,EAAe3C,UAAY+C,EAC3BJ,EAAe1C,QAAU+C,IAE3B7C,WAAY,WACVwC,EAAevD,MAAQwD,EACvBD,EAAe3C,UAAY6C,EAC3BF,EAAe1C,QAAU6C,GAE3B9W,OAAQ,WACN,IAAIiX,EAAWP,GAAMF,EAAKE,EAAID,EAAKC,GAC7BH,GAAMF,EAAKE,EAAID,EAAKC,GACpBH,GAAMF,EAAKE,EAAID,EAAKC,IACnBc,IAAKA,KAIZ,OAHAhB,EAAKC,EAAKC,EACVC,EAAKC,EAAKC,EACVC,EAAKC,EAAKC,EAAK,EACRO,IAIX,SAASL,EAAc/T,EAAGgD,GACxBqQ,GAAMrT,EACNsT,GAAMtQ,IACJuQ,EAGJ,SAASS,IACPF,EAAevD,MAAQ+D,EAGzB,SAASA,EAAuBtU,EAAGgD,GACjC8Q,EAAevD,MAAQgE,EACvBR,EAAczB,EAAKtS,EAAGuS,EAAKvP,GAG7B,SAASuR,EAAkBvU,EAAGgD,GAC5B,IAAIwR,EAAKxU,EAAIsS,EAAImC,EAAKzR,EAAIuP,EAAInc,EAAIsb,EAAK8C,EAAKA,EAAKC,EAAKA,GACtDjB,GAAMpd,GAAKkc,EAAKtS,GAAK,EACrByT,GAAMrd,GAAKmc,EAAKvP,GAAK,EACrB0Q,GAAMtd,EACN2d,EAAczB,EAAKtS,EAAGuS,EAAKvP,GAG7B,SAASiR,IACPH,EAAevD,MAAQwD,EAGzB,SAASG,IACPJ,EAAevD,MAAQmE,GAGzB,SAASP,KACPQ,GAAkBvC,EAAKC,GAGzB,SAASqC,GAAuB1U,EAAGgD,GACjC8Q,EAAevD,MAAQoE,GACvBZ,EAAc3B,EAAME,EAAKtS,EAAGqS,EAAME,EAAKvP,GAGzC,SAAS2R,GAAkB3U,EAAGgD,GAC5B,IAAIwR,EAAKxU,EAAIsS,EACTmC,EAAKzR,EAAIuP,EACTnc,EAAIsb,EAAK8C,EAAKA,EAAKC,EAAKA,GAE5BjB,GAAMpd,GAAKkc,EAAKtS,GAAK,EACrByT,GAAMrd,GAAKmc,EAAKvP,GAAK,EACrB0Q,GAAMtd,EAGNud,IADAvd,EAAImc,EAAKvS,EAAIsS,EAAKtP,IACPsP,EAAKtS,GAChB4T,GAAMxd,GAAKmc,EAAKvP,GAChB6Q,GAAU,EAAJzd,EACN2d,EAAczB,EAAKtS,EAAGuS,EAAKvP,GAGd8Q,SChGA,SAASc,GAAYC,GAClCxY,KAAKyY,SAAWD,EAGlBD,GAAY/f,WACVkgB,QAAS,IACTC,YAAa,SAAStb,GACpB,OAAO2C,KAAK0Y,QAAUrb,EAAG2C,MAE3BgV,aAAc,WACZhV,KAAK4Y,MAAQ,GAEf3D,WAAY,WACVjV,KAAK4Y,MAAQZ,KAEflD,UAAW,WACT9U,KAAK6Y,OAAS,GAEhB9D,QAAS,WACY,IAAf/U,KAAK4Y,OAAa5Y,KAAKyY,SAASK,YACpC9Y,KAAK6Y,OAASb,KAEhB9D,MAAO,SAASvQ,EAAGgD,GACjB,OAAQ3G,KAAK6Y,QACX,KAAK,EACH7Y,KAAKyY,SAASM,OAAOpV,EAAGgD,GACxB3G,KAAK6Y,OAAS,EACd,MAEF,KAAK,EACH7Y,KAAKyY,SAASO,OAAOrV,EAAGgD,GACxB,MAEF,QACE3G,KAAKyY,SAASM,OAAOpV,EAAI3D,KAAK0Y,QAAS/R,GACvC3G,KAAKyY,SAASQ,IAAItV,EAAGgD,EAAG3G,KAAK0Y,QAAS,EAAGtD,KAK/CtU,OAAQgV,GCvCV,IACIoD,GACAnD,GACAC,GACAC,GACAC,GALAiD,GAAY,IAAItG,IAOhBuG,IACFlF,MAAO4B,EACPhB,UAAW,WACTsE,GAAalF,MAAQmF,IAEvBtE,QAAS,WACHmE,IAAYI,GAAYvD,GAAKC,IACjCoD,GAAalF,MAAQ4B,GAEvBd,aAAc,WACZkE,IAAa,GAEfjE,WAAY,WACViE,GAAa,MAEfpY,OAAQ,WACN,IAAI/F,GAAUoe,GAEd,OADAA,GAAY,IAAItG,IACT9X,IAIX,SAASse,GAAiB1V,EAAGgD,GAC3ByS,GAAalF,MAAQoF,GACrBvD,GAAME,GAAKtS,EAAGqS,GAAME,GAAKvP,EAG3B,SAAS2S,GAAY3V,EAAGgD,GACtBsP,IAAMtS,EAAGuS,IAAMvP,EACfwS,GAAUxM,IAAI0I,EAAKY,GAAKA,GAAKC,GAAKA,KAClCD,GAAKtS,EAAGuS,GAAKvP,EAGAyS,UC5CA,SAASG,KACtBvZ,KAAKwZ,WAoDP,SAASC,GAAOC,GACd,MAAO,MAAQA,EACT,IAAMA,EAAS,IAAMA,EAAS,aAAe,EAAIA,EACjD,IAAMA,EAAS,IAAMA,EAAS,YAAc,EAAIA,EAChD,IArDRH,GAAW/gB,WACTkgB,QAAS,IACTiB,QAASF,GAAO,KAChBd,YAAa,SAAStb,GAEpB,OADKA,GAAKA,KAAO2C,KAAK0Y,UAAS1Y,KAAK0Y,QAAUrb,EAAG2C,KAAK2Z,QAAU,MACzD3Z,MAETgV,aAAc,WACZhV,KAAK4Y,MAAQ,GAEf3D,WAAY,WACVjV,KAAK4Y,MAAQZ,KAEflD,UAAW,WACT9U,KAAK6Y,OAAS,GAEhB9D,QAAS,WACY,IAAf/U,KAAK4Y,OAAa5Y,KAAKwZ,QAAQpP,KAAK,KACxCpK,KAAK6Y,OAASb,KAEhB9D,MAAO,SAASvQ,EAAGgD,GACjB,OAAQ3G,KAAK6Y,QACX,KAAK,EACH7Y,KAAKwZ,QAAQpP,KAAK,IAAKzG,EAAG,IAAKgD,GAC/B3G,KAAK6Y,OAAS,EACd,MAEF,KAAK,EACH7Y,KAAKwZ,QAAQpP,KAAK,IAAKzG,EAAG,IAAKgD,GAC/B,MAEF,QACsB,MAAhB3G,KAAK2Z,UAAiB3Z,KAAK2Z,QAAUF,GAAOzZ,KAAK0Y,UACrD1Y,KAAKwZ,QAAQpP,KAAK,IAAKzG,EAAG,IAAKgD,EAAG3G,KAAK2Z,WAK7C7Y,OAAQ,WACN,GAAId,KAAKwZ,QAAQze,OAAQ,CACvB,IAAI+F,EAASd,KAAKwZ,QAAQ7R,KAAK,IAE/B,OADA3H,KAAKwZ,WACE1Y,EAEP,OAAO,OCvCE,IAAA8Y,GAAA,SAASC,EAAYrB,GAClC,IACIsB,EACAC,EAFApB,EAAc,IAIlB,SAASqB,EAAKpG,GAKZ,OAJIA,IACyB,mBAAhB+E,GAA4BoB,EAAcpB,aAAaA,EAAYne,MAAMwF,KAAMia,YAC1FzG,EAAOI,EAAQkG,EAAiBC,KAE3BA,EAAcjZ,SAwCvB,OArCAkZ,EAAKxD,KAAO,SAAS5C,GAEnB,OADAJ,EAAOI,EAAQkG,EAAiBI,IACzBA,EAASpZ,UAGlBkZ,EAAKG,QAAU,SAASvG,GAEtB,OADAJ,EAAOI,EAAQkG,EAAiBM,KACzBA,GAAYtZ,UAGrBkZ,EAAKjD,OAAS,SAASnD,GAErB,OADAJ,EAAOI,EAAQkG,EAAiBO,IACzBA,EAAWvZ,UAGpBkZ,EAAKjC,SAAW,SAASnE,GAEvB,OADAJ,EAAOI,EAAQkG,EAAiBQ,KACzBA,GAAaxZ,UAGtBkZ,EAAKH,WAAa,SAASxc,GACzB,OAAO4c,UAAUlf,QAAU+e,EAAwB,MAALzc,GAAawc,EAAa,KAAMU,IAAaV,EAAaxc,GAAGmW,OAAQwG,GAAQH,GAG7HG,EAAKxB,QAAU,SAASnb,GACtB,OAAK4c,UAAUlf,QACfgf,EAAqB,MAAL1c,GAAamb,EAAU,KAAM,IAAIe,IAAc,IAAIhB,GAAYC,EAAUnb,GAC9D,mBAAhBsb,GAA4BoB,EAAcpB,YAAYA,GAC1DqB,GAHuBxB,GAMhCwB,EAAKrB,YAAc,SAAStb,GAC1B,OAAK4c,UAAUlf,QACf4d,EAA2B,mBAANtb,EAAmBA,GAAK0c,EAAcpB,aAAatb,IAAKA,GACtE2c,GAFuBrB,GAKzBqB,EAAKH,WAAWA,GAAYrB,QAAQA,IC3D9BgC,GAAA,SAASC,GACtB,OACEjH,OAIG,SAAqBiH,GAC1B,OAAO,SAASjH,GACd,IAAIrY,EAAI,IAAIuf,GACZ,IAAK,IAAIC,KAAOF,EAAStf,EAAEwf,GAAOF,EAAQE,GAE1C,OADAxf,EAAEqY,OAASA,EACJrY,GATCyf,CAAYH,KAaxB,SAASC,MAETA,GAAgBliB,WACdgE,YAAake,GACbxG,MAAO,SAASvQ,EAAGgD,GAAK3G,KAAKwT,OAAOU,MAAMvQ,EAAGgD,IAC7CoN,OAAQ,WAAa/T,KAAKwT,OAAOO,UACjCe,UAAW,WAAa9U,KAAKwT,OAAOsB,aACpCC,QAAS,WAAa/U,KAAKwT,OAAOuB,WAClCC,aAAc,WAAahV,KAAKwT,OAAOwB,gBACvCC,WAAY,WAAajV,KAAKwT,OAAOyB,iDCxBnC4F,yBAAW,OAEf,SAASC,GAAKnX,GACZ,QAASA,EAAI9K,KAAK4c,IAAI9R,IAAM,EAAIA,GAAK,GAWxB,SAAUoX,EAAQC,EAAKC,EAAMC,GAI1C,SAASC,EAAKC,EAAIC,GAChB,IAKI/f,EACAkL,EANA8U,EAAMF,EAAG,GAAIG,EAAMH,EAAG,GAAII,EAAKJ,EAAG,GAClCK,EAAMJ,EAAG,GAAIK,EAAML,EAAG,GAAIM,EAAKN,EAAG,GAClClD,EAAKsD,EAAMH,EACXlD,EAAKsD,EAAMH,EACXK,EAAKzD,EAAKA,EAAKC,EAAKA,EAKxB,GAAIwD,EAAKf,GACPrU,EAAI3N,KAAK6M,IAAIiW,EAAKH,GAAMR,EACxB1f,EAAI,SAASZ,GACX,OACE4gB,EAAM5gB,EAAIyd,EACVoD,EAAM7gB,EAAI0d,EACVoD,EAAK3iB,KAAK4c,IAAIuF,EAAMtgB,EAAI8L,SAMzB,CACH,IAAIqV,EAAKhjB,KAAKwc,KAAKuG,GACfE,GAAMH,EAAKA,EAAKH,EAAKA,EAAKN,EAAOU,IAAO,EAAIJ,EAAKP,EAAOY,GACxDE,GAAMJ,EAAKA,EAAKH,EAAKA,EAAKN,EAAOU,IAAO,EAAID,EAAKV,EAAOY,GACxDG,EAAKnjB,KAAK6M,IAAI7M,KAAKwc,KAAKyG,EAAKA,EAAK,GAAKA,GACvCG,EAAKpjB,KAAK6M,IAAI7M,KAAKwc,KAAK0G,EAAKA,EAAK,GAAKA,GAC3CvV,GAAKyV,EAAKD,GAAMhB,EAChB1f,EAAI,SAASZ,GACX,IAtCMiJ,EAsCFxI,EAAIT,EAAI8L,EACR0V,EAASpB,GAAKkB,GACdxb,EAAIgb,GAAMP,EAAOY,IAAOK,GAxCtBvY,EAwCoCqX,EAAM7f,EAAI6gB,IAvCjDrY,EAAI9K,KAAK4c,IAAI,EAAI9R,IAAM,IAAMA,EAAI,IAL5C,SAAcA,GACZ,QAASA,EAAI9K,KAAK4c,IAAI9R,IAAM,EAAIA,GAAK,EA2C2BwY,CAAKH,IAC/D,OACEV,EAAM9a,EAAI2X,EACVoD,EAAM/a,EAAI4X,EACVoD,EAAKU,EAASpB,GAAKE,EAAM7f,EAAI6gB,KAOnC,OAFA1gB,EAAE8gB,SAAe,IAAJ5V,EAAWwU,EAAMniB,KAAKwjB,MAE5B/gB,EAQT,OALA6f,EAAKH,IAAM,SAAS3d,GAClB,IAAIif,EAAKzjB,KAAK0jB,IAAI,MAAOlf,GAAImf,EAAKF,EAAKA,EACvC,OAAOvB,EAAQuB,EAAIE,EAD6BA,EAAKA,IAIhDrB,GAvDM,CAwDZtiB,KAAKwjB,MAAO,EAAG,iBCtEX,SAASI,GAAU9f,EAAGgH,EAAGgD,GAC9B3G,KAAKrD,EAAIA,EACTqD,KAAK2D,EAAIA,EACT3D,KAAK2G,EAAIA,EAGX8V,GAAUjkB,WACRgE,YAAaigB,GACbvY,MAAO,SAASvH,GACd,OAAa,IAANA,EAAUqD,KAAO,IAAIyc,GAAUzc,KAAKrD,EAAIA,EAAGqD,KAAK2D,EAAG3D,KAAK2G,IAEjE+V,UAAW,SAAS/Y,EAAGgD,GACrB,OAAa,IAANhD,EAAgB,IAANgD,EAAU3G,KAAO,IAAIyc,GAAUzc,KAAKrD,EAAGqD,KAAK2D,EAAI3D,KAAKrD,EAAIgH,EAAG3D,KAAK2G,EAAI3G,KAAKrD,EAAIgK,IAEjGnM,MAAO,SAAS0Z,GACd,OAAQA,EAAM,GAAKlU,KAAKrD,EAAIqD,KAAK2D,EAAGuQ,EAAM,GAAKlU,KAAKrD,EAAIqD,KAAK2G,IAE/DgW,OAAQ,SAAShZ,GACf,OAAOA,EAAI3D,KAAKrD,EAAIqD,KAAK2D,GAE3BiZ,OAAQ,SAASjW,GACf,OAAOA,EAAI3G,KAAKrD,EAAIqD,KAAK2G,GAE3BkW,OAAQ,SAASje,GACf,QAASA,EAAS,GAAKoB,KAAK2D,GAAK3D,KAAKrD,GAAIiC,EAAS,GAAKoB,KAAK2G,GAAK3G,KAAKrD,IAEzEmgB,QAAS,SAASnZ,GAChB,OAAQA,EAAI3D,KAAK2D,GAAK3D,KAAKrD,GAE7BogB,QAAS,SAASpW,GAChB,OAAQA,EAAI3G,KAAK2G,GAAK3G,KAAKrD,GAE7BqgB,SAAU,SAASrZ,GACjB,OAAOA,EAAEsZ,OAAOC,OAAOvZ,EAAEwZ,QAAQha,IAAInD,KAAK8c,QAAS9c,MAAMmD,IAAIQ,EAAEkZ,OAAQlZ,KAEzEyZ,SAAU,SAASzW,GACjB,OAAOA,EAAEsW,OAAOC,OAAOvW,EAAEwW,QAAQha,IAAInD,KAAK+c,QAAS/c,MAAMmD,IAAIwD,EAAEkW,OAAQlW,KAEzElH,SAAU,WACR,MAAO,aAAeO,KAAK2D,EAAI,IAAM3D,KAAK2G,EAAI,WAAa3G,KAAKrD,EAAI,MAIlD,IAAI8f,GAAU,EAAG,EAAG,GAEpBA,GAAUjkB,4CC7ChC,IAAA6kB,EAAAnnB,EAAA,KAAAonB,EAAApnB,EAAA,KAGeE,EAAA,WAASmnB,GACtB,MAA2B,iBAAbA,EACR,IAAIC,KAAWnmB,SAAS6L,iBAAiBqa,KAAalmB,SAASomB,kBAC/D,IAAID,KAAWE,YAAMH,IAAYI,wCCNlC,SAASC,EAAc/O,EAAMgP,EAAUC,GAE1C,MACItF,EADWnhB,SAASC,cAAe,UAClBmR,WAAY,MAIjC,OAFA+P,EAAQrT,QAAW0Y,OAAgBC,IAE5BtF,EAAQuF,YAAalP,GAAOxQ,MAPvCnI,EAAAC,EAAAC,EAAA,sBAAAwnB,iJCKA,MAAMI,GAEFC,QAAS,CAAEC,EAAUC,SAEdD,EACHE,WAAY,SAGhBC,OAAQ,CAAEH,EAAUC,SACbD,EACHI,MAAOH,EAAMI,WAAa,UAAY,UACtCC,eAAgBL,EAAMM,UAAY,YAAc,OAChDha,gBAAiB0Z,EAAMO,WAAa,UAAY,cAChDC,OAAQR,EAAMI,WAAa,cAAgB,UAC3CK,QAAST,EAAMI,WAAa,MAAQ,MACpCM,WACIpa,gBAAiB,aAKzBqa,mBAAsBZ,QAEfA,EACHlnB,QAAS,SAIb+nB,kBAAqBb,QAEdA,EACHI,MAAO,YAIXU,WAAcd,QAEPA,EACHlnB,QAAS,SAIbioB,gBAAmBf,QAEZA,EACHlnB,QAAS,SAIbkoB,iBAAoBhB,QAEbA,EACHlnB,QAAS,SAKbmoB,eAAkBjB,QAEXA,EACHlnB,QAAS,UAMXooB,EAAS,EAAIC,UAASlf,OAAMmf,cAAaC,gBAAeC,UAASC,OAAMC,aAAYC,UAASC,aAAYrB,iBAE1G,MAAMsB,EAAeC,sBAAeC,IAEhCA,EAAS5c,IAAO6c,IAEZR,EAAQrc,IAAOkb,IAEX,GAAKA,EAAO4B,QAAUD,EAAOC,MAEzB,OAAOP,MAAiBF,EAASnB,EAAM,YAAiB,MAM1C,kBAAjB2B,EAAOC,OAERD,EAAM,cAAoB,UAC1BA,EAAM,OAAa7f,IAKnB6f,EAAM,cAAoBT,EAC1BS,EAAM,OAAa7f,KAO3Byf,MAAiBD,KAAYI,MAIjC,OACIG,EAAAhlB,EAAA5D,cAAA,OAAKwF,8BAAiCqD,EAAKsD,iBACvCyc,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,aACXojB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAUhgB,EAAKsD,eAChBgc,EACES,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,aACTuiB,EAAS,IAAGI,GAGlBS,EAAAhlB,EAAA5D,cAAA4oB,EAAAhlB,EAAAklB,SAAA,KAAIf,IAGZa,EAAAhlB,EAAA5D,cAAC+oB,EAAA,GACGjX,GAAKjJ,EAAKsD,cACVhH,KAAO0D,EAAKsD,cACZ3G,UAAY,SACZwiB,YAAcA,EACdjmB,MAAQ,KACRmmB,QAAUA,EACVc,SAAWT,EACXU,SAAU,EACVC,OAASxC,EACTyC,kBAAgB,aAChBlC,WAAaA,EACbmC,eAAgB,EAEhBC,iBAAqBtC,IAAkC,IAAtBA,EAAOE,gBAQ7Ca,QAEfA,EAAOwB,WACHvB,QAASwB,SACT1gB,KAAM0gB,SACNvB,YAAauB,SACbtB,cAAesB,SACfrB,QAAS9B,QACToD,gBAAiBC,OACjBC,iBAAkBD,OAClBE,cAAeF,OACfG,eAAgBH,OAChBtB,KAAM7L,SACN+L,QAASjC,QACTkC,WAAYmB,OACZI,gBAAiBzD,QACjB0D,mBAAoBL,OACpBxC,WAAY8C,qBCvJhB,MAAMC,EAAU,EAAIna,OAAMoa,UAAS5B,UAASC,aAAYvhB,YAEpD,MAAQmjB,EAAQC,EAAUC,EAAMC,GAAUxa,GAClCya,EAAcC,GAAoBC,oBAAU,IAC5CC,EAAcjB,GAAoBgB,uBAEjCN,GAASre,IAAOQ,KAERtK,MAAOsK,EAAEqe,WAAY/B,MAAOtc,EAAEse,WAAY9hB,KAAM,QAASoe,gBAA6D2D,IAAjDvC,EAAQwC,KAAQhgB,GAAOA,EAAE8d,QAAUtc,EAAEsc,YAGnHmC,EAAepB,GAAqBc,uBAEnCL,GAAWte,IAAOQ,KAEVtK,MAAOsK,EAAE0e,cAAepC,MAAOtc,EAAE2e,YAAaniB,KAAM,SAAUoe,gBAA6D2D,IAAjDvC,EAAQwC,KAAQhgB,GAAOA,EAAE8d,QAAUtc,EAAEsc,YAGxHsC,EAAYtB,GAAkBa,uBAE7BJ,GAAOve,IAAOQ,KAENtK,MAAOsK,EAAE6e,WAAYvC,MAAOtc,EAAE8e,WAAYtiB,KAAM,MAAOoe,gBAA6D2D,IAAjDvC,EAAQwC,KAAQhgB,GAAOA,EAAE8d,QAAUtc,EAAEsc,YAGjHyC,EAAaxB,GAAmBY,uBAE/BH,GAAQxe,IAAOQ,KAEPtK,MAAOsK,EAAEgf,gBAAiB1C,MAAOtc,EAAEif,cAAeziB,KAAM,OAAQoe,gBAA6D2D,IAAjDvC,EAAQwC,KAAQhgB,GAAOA,EAAE8d,QAAUtc,EAAEsc,WAU5H4C,EAAwB,KAE1BC,IACAlD,MACAiC,GAAiB,GACjBjC,OAiCEkD,EAAgB,KAElB,IAAM,MAAMC,KAAUpD,EAIlBoD,EAAOxE,YAAa,GAqB5B,OAfAyE,oBAAW,KAEFrD,EAAQ5kB,OAAS,EAElB8mB,GAAiB,GAKjBA,GAAiB,KAIpBlC,IAGDO,EAAAhlB,EAAA5D,cAAA4oB,EAAAhlB,EAAAklB,SAAA,KACIF,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,gCAEXojB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,mBACXojB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,kBAAiB,KAChCojB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,gBACXojB,EAAAhlB,EAAA5D,cAAA,MAAIwF,UAAU,iBAAgB,WAC9BojB,EAAAhlB,EAAA5D,cAAA,KAAGwF,UAAU,uBAAsB,qBAAkBojB,EAAAhlB,EAAA5D,cAAA,YAAM,qBAAwB,4BAEvF4oB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,kBAEXojB,EAAAhlB,EAAA5D,cAAA,UAAQ6I,KAAK,SACTrD,8BAAiC8kB,EAAe,GAAK,SACrDqB,QArFO,KAE3BpB,GAAiB,IAoFGqB,MAAM,oBACT,KAECtB,EAAe1B,EAAAhlB,EAAA5D,cAAA,UAAQwF,0BAA6BuB,EAAQ,IAAM,GAAK,gBAAmB8B,KAAK,QAAQ8iB,QAAUJ,GAAwB,qBAA6B,KAK5KjB,EACI,KAEA1B,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,WACXojB,EAAAhlB,EAAA5D,cAAC6rB,GACG9D,QAAQ,SACRlf,KAAK,QACLmf,YAAY,gBACZC,cAAc,QACdC,QAAUuC,EACVrC,WAAaoB,EACbnB,QAAUA,EACVC,WAAaA,EACbrB,WAAgC,IAAnBoB,EAAQ5kB,SAEzBmlB,EAAAhlB,EAAA5D,cAAC6rB,GACG9D,QAAQ,WACRlf,KAAK,SACLmf,YAAY,kBACZC,cAAc,SACdC,QAAU4C,EACV1C,WAAasB,EACbrB,QAAUA,EACVC,WAAaA,EACbrB,WAAgC,IAAnBoB,EAAQ5kB,SAEzBmlB,EAAAhlB,EAAA5D,cAAC6rB,GACG9D,QAAQ,SACRlf,KAAK,MACLmf,YAAY,gBACZC,cAAc,MACdC,QAAU+C,EACV7C,WAAauB,EACbtB,QAAUA,EACVC,WAAaA,EACbrB,WAAgC,IAAnBoB,EAAQ5kB,SAEzBmlB,EAAAhlB,EAAA5D,cAAC6rB,GACG9D,QAAQ,cACRlf,KAAK,OACLmf,YAAY,qBACZC,cAAc,aACdC,QAAUkD,EACVhD,WAAawB,EACbzB,KAAOS,EAAAhlB,EAAA5D,cAAC8rB,EAAA,GAAYjc,MAAQkY,QAASkC,EAAQlC,QAASlgB,KAAMoiB,EAAQpiB,KAAMkkB,oBAAoB,GAAQC,YAAcC,IAAeC,aACnI7D,QAAUA,EACVC,WAAaA,EACbrB,WAAgC,IAAnBoB,EAAQ5kB,UAIrCmlB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,oBAEP6iB,EAAQ5kB,OAAS,EAEbmlB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,gBACXojB,EAAAhlB,EAAA5D,cAAA,SAAG,cAGMqoB,EAAQ5kB,OAAS,EACd,KAEA4kB,EAAQxc,IAAK,CAAEsgB,EAAKnoB,IAGZ4kB,EAAAhlB,EAAA5D,cAAA,OAAKqjB,IAAMrf,EAAIwB,UAAU,oBACrBojB,EAAAhlB,EAAA5D,cAAA,SAAG,IAAC4oB,EAAAhlB,EAAA5D,cAAA,YAAQmsB,EAAIlE,cAAe,MAAWkE,EAAIxD,MAAO,KACrDC,EAAAhlB,EAAA5D,cAAA,UAAQ6I,KAAK,SAASrD,UAAU,wBAAwBmmB,QAAU,IAlJ/ElD,KAEnC,MAAM2D,EAAS/D,EAAQjc,OAAUsc,GAAYA,EAAOC,QAAUF,EAASE,OAYvE,OAVAL,EAAY8D,GAEZ7B,GAAiB,GAEX6B,EAAO3oB,QAET8nB,IAIK9C,EAAS5f,MAEd,IAAK,QACD,OAAO2gB,MAAsBiB,EAAchC,EAAQ,YAAiB,IACxE,IAAK,SACD,OAAOiB,MAAuBoB,EAAerC,EAAQ,YAAiB,IAC1E,IAAK,MACD,OAAOkB,MAAoBsB,EAAYxC,EAAQ,YAAiB,IACpE,IAAK,OACD,OAAOmB,MAAqBwB,EAAa3C,EAAQ,YAAiB,MA2H8C4D,CAA8BF,QAWlIvD,EAAAhlB,EAAA5D,cAAA,SAAG,kBAGPsqB,EAEI1B,EAAAhlB,EAAA5D,cAAA,UAAQwF,8CAAiDuB,EAAQ,IAAM,GAAK,gBAAmB8B,KAAK,QAAQ8iB,QAAUJ,GAAwB,qBAIlJ,OASTvB,QAEfA,EAAQV,WACJzZ,KAAMuW,QAAMkG,WACZrC,QAAS3N,SAAOgQ,WAChBlE,WAAYqB,OACZpB,QAASjC,QACTkC,WAAYmB,OAAK6C,WACjBvlB,MAAOwlB,UC3OX,MAAMC,EAAQ,EAAIC,YAAWC,QAAOC,WAAUC,aAAYC,eAAc9lB,YAEpE,MAAQ+lB,EAAkBC,GAAwBvC,qBAAY,GAAO,GAAO,KACpEwC,EAAkBC,GAAwBzC,qBAAY,GAAO,GAAO,GAAO,GAAO,GAAO,GAAO,GAAO,GAAO,GAAO,KACrH0C,EAA0BC,GAAgC3C,qBAAY,GAAO,GAAO,GAAO,GAAO,GAAO,KACzG4C,EAAeC,GAAqB7C,oBAAU,GAEhD8C,EAAkB9E,sBAAa,CAAEC,EAAU8E,KAE7C,MAAMC,IAAgB,GAAO,GAAO,GAEpCA,EAAYD,IAAW,EAEvBR,EAAqBS,GAGrB,MAAMC,MAAoBf,GAG1Be,EAAa,GAAKhF,EAClBkE,EAAUc,GACVZ,GAAc,KAIZa,EAAkBlF,sBAAa,CAAEC,EAAU8E,KAE7C,MAAMC,IAAgB,GAAO,GAAO,GAAO,GAAO,GAAO,GAAO,GAAO,GAAO,GAAO,GAErFA,EAAYD,IAAW,EAEvBN,EAAqBO,GAErB,MAAMC,MAAoBf,GAG1Be,EAAa,GAAKhF,EAClBkE,EAAUc,GACVZ,GAAc,GAEG,IAAZU,GAAwC,wBAAvB9E,EAASkF,YAE3BR,IAA+B,GAAM,GAAO,GAAO,GAAO,GAAO,IAEjEM,EAAa,IAAO5kB,KAAM,kBAAmB8kB,UAAW,OAExDhB,EAAUc,MAMZG,EAA0BpF,sBAAa,CAAEC,EAAU8E,KAIrD,MAAMC,IAAgB,GAAO,GAAO,GAAO,GAAO,GAAO,GAEzDA,EAAYD,IAAW,EAEvBJ,EAA6BK,GAE7B,MAAMC,MAAoBf,GAG1Be,EAAa,GAAKhF,EAClBkE,EAAUc,GACVZ,GAAc,KAUZgB,EAAsB,KAExBd,IAAuB,GAAO,GAAO,IACrCE,IAAuB,GAAO,GAAO,GAAO,GAAO,GAAO,IAC1DE,IAA+B,GAAO,GAAO,GAAO,GAAO,GAAO,IAElER,MACAE,GAAc,GACdQ,GAAkB,IAgBtB,OAZA3B,oBAAW,KAEDe,IAEFM,IAAuB,GAAO,GAAO,IACrCE,IAAuB,GAAO,GAAO,GAAO,GAAO,GAAO,IAC1DE,IAA+B,GAAO,GAAO,GAAO,GAAO,GAAO,OAIrEV,IAGD7D,EAAAhlB,EAAA5D,cAAA4oB,EAAAhlB,EAAAklB,SAAA,KACIF,EAAAhlB,EAAA5D,cAAA,OAAKwF,uCAA0CinB,EAAY,kBAAoB,uBAG3E7D,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,mBACXojB,EAAAhlB,EAAA5D,cAAA,OAAKwF,aAAgBinB,EAAY,kBAAoB,8BAAgC,KACrF7D,EAAAhlB,EAAA5D,cAAA,OAAKwF,aAAgBuB,EAAQ,IAAM,sBAAwB,kBACvD6hB,EAAAhlB,EAAA5D,cAAA,MAAIwF,aAAgBuB,EAAQ,IAAM,uBAAyB,mBAAqB0lB,EAAY,eAAiB,oBAAsB,8CAGnI7D,EAAAhlB,EAAA5D,cAAA,KAAGwF,gCAAmCinB,EAAY,eAAiB,oBAAsB,uEAIvFG,GACFhE,EAAAhlB,EAAA5D,cAAA,UAAQwF,4CAA+CuB,EAAQ,IAAM,GAAK,gBAAmB8B,KAAK,QAAQ8iB,QAAUkC,GAAsB,yBAG9IjF,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,kBAEXojB,EAAAhlB,EAAA5D,cAAA,UAAQ6I,KAAK,SACTrD,8BAAiCinB,EAAY,OAAS,mBACtDd,QArDO,KAE3B0B,GAAmBD,IAoDCxB,MAAM,oBACT,KAECgB,GACFhE,EAAAhlB,EAAA5D,cAAA,UAAQwF,0BAA6BuB,GAAS,IAAM,GAAK,gBAAmB8B,KAAK,QAAQ8iB,QAAUkC,GAAsB,0BAO7HpB,GACA7D,EAAAhlB,EAAA5D,cAAA4oB,EAAAhlB,EAAAklB,SAAA,KACIF,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,gBAAgB/F,OAASC,QAAS0tB,EAAgB,QAAU,SACvExE,EAAAhlB,EAAA5D,cAAA,MAAIwF,UAAU,eAAc,gBAC5BojB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,gBACXojB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,gBACH3M,KAAK,UACLpD,MAAM,gBACNyD,UAAU,YACV+nB,QAAUT,EAAiB,GAC3B9D,SAAa7lB,GAAOmqB,GAAmBzkB,KAAM,UAAW8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEhG6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,iBAAgB,iBAAqBD,EAAAhlB,EAAA5D,cAAA,YAExD4oB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,YACH3M,KAAK,UACLpD,MAAM,YACNyD,UAAU,YACV+nB,QAAUT,EAAiB,GAC3B9D,SAAa7lB,GAAOmqB,GAAmBzkB,KAAM,UAAW8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEhG6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,YAAYrjB,UAAU,eAAc,aAAiBojB,EAAAhlB,EAAA5D,cAAA,YAExE4oB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,mBACH3M,KAAK,UACLpD,MAAM,mBACNyD,UAAU,YACV+nB,QAAUT,EAAiB,GAC3B9D,SAAa7lB,GAAOmqB,GAAmBzkB,KAAM,UAAW8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEhG6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,oBAAmB,uBAI9CD,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,gBAAgB/F,OAASC,QAAS0tB,EAAgB,QAAU,SACvExE,EAAAhlB,EAAA5D,cAAA,MAAIwF,UAAU,eAAc,gBAC5BojB,EAAAhlB,EAAA5D,cAAA,OAAKwF,0BAA6BuB,EAAQ,IAAM,UAAY,MACxD6hB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,WACH3M,KAAK,UACLpD,MAAM,WACNyD,UAAU,YACV+nB,QAAUP,EAAiB,GAC3BhE,SAAa7lB,GAAOuqB,GAAoB7kB,KAAM,UAAW8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEjG6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,YAAW,oBAAwBD,EAAAhlB,EAAA5D,cAAA,YAEtD4oB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,eACH3M,KAAK,UACLpD,MAAM,eACNyD,UAAU,YACV+nB,QAAUP,EAAiB,GAC3BhE,SAAa7lB,GAAOuqB,GAAoB7kB,KAAM,UAAW8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEjG6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,gBAAe,gBAAoBD,EAAAhlB,EAAA5D,cAAA,YAEtD4oB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,YACH3M,KAAK,UACLpD,MAAM,YACNyD,UAAU,YACV+nB,QAAUP,EAAiB,GAC3BhE,SAAa7lB,GAAOuqB,GAAoB7kB,KAAM,UAAW8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEjG6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,aAAY,gBAE/BD,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,cACH3M,KAAK,UACLpD,MAAM,cACNyD,UAAU,YACV+nB,QAAUP,EAAiB,GAC3BhE,SAAa7lB,GAAOuqB,GAAoB7kB,KAAM,UAAW8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEjG6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,eAAc,eAAmBD,EAAAhlB,EAAA5D,cAAA,YAEpD4oB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,MACH3M,KAAK,UACLpD,MAAM,MACNyD,UAAU,YACV+nB,QAAUP,EAAiB,GAC3BhE,SAAa7lB,GAAOuqB,GAAoB7kB,KAAM,UAAW8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEjG6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,OAAM,uBAEzBD,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,sBACH3M,KAAK,UACLpD,MAAM,sBACNyD,UAAU,YACV+nB,QAAUP,EAAiB,GAC3BhE,SAAa7lB,GAAOuqB,GAAoB7kB,KAAM,UAAW8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEjG6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,uBAAsB,8BAAkCD,EAAAhlB,EAAA5D,cAAA,aAG/E4oB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,gBACXojB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,mBACH3M,KAAK,UACLpD,MAAM,mBACNyD,UAAU,YACV+nB,QAAUP,EAAiB,GAC3BhE,SAAa7lB,GAAOuqB,GAAoB7kB,KAAM,UAAW8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEjG6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,oBAAmB,uBAA2BD,EAAAhlB,EAAA5D,cAAA,YAEjE4oB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,kBACH3M,KAAK,UACLpD,MAAM,kBACNyD,UAAU,YACV+nB,QAAUP,EAAiB,GAC3BhE,SAAa7lB,GAAOuqB,GAAoB7kB,KAAM,UAAW8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEjG6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,mBAAkB,6BAAiCD,EAAAhlB,EAAA5D,cAAA,YAEtE4oB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,iBACH3M,KAAK,UACLpD,MAAM,iBACNyD,UAAU,YACV+nB,QAAUP,EAAiB,GAC3BhE,SAAa7lB,GAAOuqB,GAAoB7kB,KAAM,UAAW8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEjG6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,kBAAiB,iCAAqCD,EAAAhlB,EAAA5D,cAAA,YAEzE4oB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,kBACH3M,KAAK,UACLpD,MAAM,kBACNyD,UAAU,YACV+nB,QAAUP,EAAiB,GAC3BhE,SAAa7lB,GAAOuqB,GAAoB7kB,KAAM,UAAW8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEjG6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,mBAAkB,uCAA2CD,EAAAhlB,EAAA5D,cAAA,cAIxF4oB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,gBAAgB/F,OAASC,QAAS0tB,EAAgB,QAAU,SACvExE,EAAAhlB,EAAA5D,cAAA,MAAIwF,UAAU,eAAc,wBAC5BojB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,gBACXojB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,MACH3M,KAAK,kBACLpD,MAAM,MACNyD,UAAU,YACV+nB,QAAUL,EAAyB,GACnClE,SAAa7lB,GAAOyqB,GAA4B/kB,KAAM,kBAAmB8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEjH6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,OAAM,WAAeD,EAAAhlB,EAAA5D,cAAA,YAExC4oB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,aACH3M,KAAK,kBACLpD,MAAM,aACNyD,UAAU,YACVuoB,SAAWf,EAAiB,GAC5BO,QAAUL,EAAyB,GACnClE,SAAa7lB,GAAOyqB,GAA4B/kB,KAAM,kBAAmB8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEjH6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,cAAa,oBAAwBD,EAAAhlB,EAAA5D,cAAA,YAExD4oB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,sBACH3M,KAAK,kBACLpD,MAAM,sBACNyD,UAAU,YACVuoB,SAAWf,EAAiB,GAC5BO,QAAUL,EAAyB,GACnClE,SAAa7lB,GAAOyqB,GAA4B/kB,KAAM,kBAAmB8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEjH6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,uBAAsB,wBAEzCD,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,SACH3M,KAAK,kBACLpD,MAAM,SACNyD,UAAU,YACVuoB,SAAWf,EAAiB,GAC5BO,QAAUL,EAAyB,GACnClE,SAAa7lB,GAAOyqB,GAA4B/kB,KAAM,kBAAmB8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEjH6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,UAAS,UAAcD,EAAAhlB,EAAA5D,cAAA,YAE1C4oB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,iBACH3M,KAAK,kBACLpD,MAAM,iBACNyD,UAAU,YACVuoB,SAAWf,EAAiB,GAC5BO,QAAUL,EAAyB,GACnClE,SAAa7lB,GAAOyqB,GAA4B/kB,KAAM,kBAAmB8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEjH6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,kBAAiB,kBAAsBD,EAAAhlB,EAAA5D,cAAA,YAE1D4oB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,eACXojB,EAAAhlB,EAAA5D,cAAA,SACI6I,KAAK,QACLiJ,GAAG,YACH3M,KAAK,kBACLpD,MAAM,YACNyD,UAAU,YACVuoB,SAAWf,EAAiB,GAC5BO,QAAUL,EAAyB,GACnClE,SAAa7lB,GAAOyqB,GAA4B/kB,KAAM,kBAAmB8kB,UAAWxqB,EAAE2qB,cAAc/rB,OAAS,KAEjH6mB,EAAAhlB,EAAA5D,cAAA,SAAO6oB,QAAQ,aAAY,oBAahD2D,QAEfA,EAAMlD,WACFmD,UAAW1C,OAAKuC,WAChBI,MAAOtG,QACPuG,SAAUlD,OACVmD,WAAY7C,OAAKuC,WACjB0B,UAAWjE,OAAKuC,WAChBO,aAAcpD,OACd1iB,MAAOwlB,6ECnZX,MAAM0B,EAAQ,EAAIlnB,QAAOD,SAAQonB,SAAQ7hB,QAErC,MAAM8hB,EAAWC,mBAEXC,EAAYC,YAAYjiB,GAGxBM,EAAI+b,YAAQyF,EAASI,SAE3B,IAAIC,EAAS,EAGRznB,EAAQ,OAETynB,EAAS,GAIRznB,EAAQ,MAETynB,EAAS,GAGb7hB,EAAE1K,KAAMosB,EAAUI,cAAe,GAAIC,MAAOC,IAASC,MAAOJ,KAG5D7hB,EAAE+b,OAAQ,WACLmG,KAAM,SAAU,WAChBA,KAAM,eAAgB,SAE3BliB,EAAEmiB,UAAW,cACRD,KAAM,SAAU,WAChBA,KAAM,eAAgB,SAE3BliB,EAAEmiB,UAAW,cACRD,KAAM,IAAK,IACXA,KAAM,OAAQ,WACdA,KAAM,YAAa,QACnBA,KAAM,cAAe,kBACrBA,KAAM,QAAS,IAEpBliB,EAAE+b,OAAQ,2BACLmG,KAAM,KAAM,GAEjBliB,EAAEmiB,UAAW,cAAeD,KAAM,OAAQ,WACrCA,KAAM,YAAa,QACnBA,KAAM,cAAe,kBAG1B,MAAMzJ,iBAA4Bte,EAASonB,EAAOa,IAAMb,EAAOc,UAG/D,OACIpG,EAAAhlB,EAAA5D,cAAA,KACIwF,UAAU,SACVypB,IAAMd,EACN7Z,UAAY8Q,KAOT6I,QAEfA,EAAM3E,WACF4E,OAAQgB,iBAASH,IAAKxC,SAAQ4C,MAAO5C,SAAQyC,OAAQzC,SAAQ6C,KAAM7C,WACnEzlB,OAAQylB,SAAOD,WACfvlB,MAAOwlB,SAAOD,WACd+C,UAAW9C,SACXlgB,EAAGod,uCCtEQ6F,MANGC,GAEP,IAAI9Y,KAAM8Y,EAAM,EAAG,GCK9B,MAAMC,EAAQ,EAAIC,cAAaC,mBAC3B5oB,SAAQC,QAAOmnB,SACfyB,YAAW5rB,MAAK6rB,qBAAoBvjB,IAAGgD,IACvCwgB,SAAQC,aAAYC,cAAaC,iBAAgBC,cAAaC,YAAWC,gBAEzE,MAAMC,EAAUhC,mBACViC,EAASjC,mBACTkC,EAAclC,mBAEdmC,EAAgBC,cACjBC,QAAW5xB,GAAOA,EAAEkD,OAAqB,OAAZlD,EAAEkD,OAC/BsK,EAAKxN,GAEKwN,EAAGijB,EAASzwB,EAAE0wB,QAGxBlgB,EAAKxQ,GAEKwQ,EAAGxQ,EAAEkD,QAId2uB,EAAQf,EAAU9jB,IAAO8kB,GAGvB/H,EAAAhlB,EAAA5D,cAAA,QACIwF,UAAU,OACVorB,KAAK,OACLC,OAAUF,EAAQ3J,MAClB8J,YAAclB,EACdvM,IAAMsN,EAAQ7e,GACdjT,EAAI0xB,EAAeI,EAAQI,OAAOhtB,OAkBxCitB,EAAOrB,EAAU9jB,IAAOolB,IAI1B,MAhBmBC,SAEFtG,IAAZsG,EAA+B,KAE7BA,EAAQrlB,IAAK,CAAE2kB,EAAMxsB,IAEjBwsB,GAQOW,CAAcF,EAAOF,OAAOhtB,IAE7B8H,IAAK,CAAE+Q,EAAO5Y,KAE3B,GAAqB,OAAhB4Y,EAAM7a,MAEP,OACI6mB,EAAAhlB,EAAA5D,cAAA,UACIwF,UAAU,MACVorB,KAAOK,EAAOjK,MACd6J,OAASI,EAAOjK,MAChB3D,IAAMrf,EACNotB,GAAK/kB,EAAGijB,EAAS1S,EAAM2S,OACvB8B,GAAKhiB,EAAGuN,EAAM7a,OACdwB,EAAIqsB,EAAqB,QA4BvC0B,EAAsBnuB,IAGxB,MAAMutB,EAAQN,EAAQ7B,QAAQ/U,WAG9B8W,EAAY/B,QAAQ9uB,MAAM6nB,QAAU,EACpCwI,EAAWvB,QAAQ9uB,MAAMC,QAAU,QAGnC,MACM6xB,EAAUzqB,EAASonB,EAAOc,OAASd,EAAOa,IAE1CyC,EAAgB/B,EAAYgC,UAC5BC,EAAUvuB,EAAEwuB,MAAQH,EACpBI,EAAOrwB,KAAKsa,IAAK6V,EAAUxD,EAAOa,IAAMb,EAAOc,QAE/C6C,EAAiBpC,EAAYqC,WAC7BC,EAAsBrC,EAAiBoC,WACvCE,EAAU7uB,EAAE8uB,MAAQJ,EAAiBE,EAAsB7D,EAAOiB,MAAQ,GAAc,IAARprB,EAAYmqB,EAAOkB,KAAO,GAC1G8C,EAAO3wB,KAAKsa,IAAKmW,EAAU9D,EAAOkB,KAAOa,GAGzCkC,EAAO9lB,EAAEkZ,OAAQ2M,GAUjBluB,GAAIouB,EAPSC,YAAU,SAAWxzB,GAEpC,OAAOywB,EAASzwB,EAAE0wB,QAElBH,MAGkBO,EAAU,GAAGoB,OAAOhtB,GAAMouB,EAAM,GAChDG,EAAQ3C,EAAU,GAAGoB,OAAOhtB,GAAKC,EAAI,GACrCuuB,EAAQ5C,EAAU,GAAGoB,OAAOhtB,GAAKC,GAEvC,QAAe4mB,IAAV0H,QAAiC1H,IAAV2H,EAAsB,OAElD,MAAMC,EAAKlD,EAASgD,EAAM/C,MACpBhL,EAAK+K,EAASiD,EAAMhD,MACpB1wB,EAAIszB,EAAOK,EAAKjO,EAAK4N,EAAO5N,EAAKiO,EAEjCC,EAAqB9C,EAAU9jB,IAAOQ,KAE/ByF,GAAIzF,EAAEyF,GAAIyd,KAAM1wB,EAAE6zB,cAAe3B,OAAQ1kB,EAAE0kB,OAAOhtB,GAAKqI,OAAUiD,GAAOA,EAAEkgB,OAAS1wB,EAAE6zB,kBA7D9EnD,KAEpB,MAAMoD,EAAWhD,EAAU9jB,IAAOQ,KAErByF,GAAIzF,EAAEyF,GAAIyd,KAAMA,EAAMwB,OAAQ1kB,EAAE0kB,OAAOhtB,GAAKqI,OAAUiD,GAAOA,EAAEkgB,OAASA,MAIhFoD,GAED3C,EAAgB2C,IAwDpBC,CAAe/zB,EAAE6zB,eAKjB5C,EAAWvB,QAAQ9uB,MAAMsvB,OAAU6C,GAAS/B,EAAOpsB,OAAS,EAAI,IAAM,SAGtE,MAEMovB,EAAeX,EAAOhE,EAAOkB,KAAOlB,EAAOiB,MAAQ,EACnD2D,EAAehD,EAAWvB,QAAQ7d,wBAAwB3J,MAC1DgsB,EAAa7C,EAAYhC,EAAOkB,KAAOlB,EAAOiB,MAC9C6D,EAAc7C,GAAaD,IAAcnpB,GAAUgsB,EAAa7E,EAAOkB,KAAOlB,EAAOiB,OAAU,EAAM4D,EAAe,EAItHjD,EAAWvB,QAAQ9uB,MAAM2vB,KAD7Bc,EAAY,IACwBgC,GAAQc,EARd,MAShBH,EAVQ,OAWZ/C,EAAWvB,QAAQ9uB,MAAM2vB,KAAO8C,GAAQc,EAVpB,MAWZH,EAAiBC,EAAe,SAChCD,EAAeC,EAbX,OAecZ,GAAQc,KAC9BH,EAhBQ,IAgBiC,IAAR9uB,GAAcmsB,EAAY,IAAMnpB,EAAc,UAC/E8rB,EAAeC,EAjBP,IAiBgD,IAAR/uB,GAAcmsB,EAAY,IAAMnpB,EAAc,OAI5G2hB,YAAQ4H,EAAY/B,SACfM,KAAM,IAAK,KAER,IAAIhwB,MAASqzB,MAKb,OAFArzB,OAAUqzB,KAAUX,MAO5B,MAAM0B,EAAK5mB,EAAGijB,EAASzwB,EAAE6zB,gBAEzB5D,4BAA4B/qB,KACvB8qB,KAAM,YAAe,CAAEhf,EAAM7L,KAG1B,QAA4B4mB,IAAvB6H,GAA2D,OAAvBA,QACQ7H,IAA1C6H,EAAmBzuB,GAAG+sB,OAAO,GAAGhvB,OAAiE,OAA1C0wB,EAAmBzuB,GAAG+sB,OAAO,GAAGhvB,MAAiB,OAAO,KAEtH,MAAMmxB,EAAK7jB,EAAGojB,EAAmBzuB,GAAG+sB,OAAO,GAAGhvB,OAE9C,mBAAqBkxB,KAAQC,OAIhCrE,KAAM,OAAQ,WACdA,KAAM,SAAU,CAAEhf,EAAM7L,IAAO0sB,EAAM1sB,GAAG4M,aAAc,WACtDie,KAAM,UAAa,CAAEhf,EAAM7L,SAEQ4mB,IAAvB6H,GAA2D,OAAvBA,QACI7H,IAA1C6H,EAAmBzuB,GAAG+sB,OAAO,GAAGhvB,OAAiE,OAA1C0wB,EAAmBzuB,GAAG+sB,OAAO,GAAGhvB,MACxF,EAAI,IA6CtB,OACI6mB,EAAAhlB,EAAA5D,cAAA4oB,EAAAhlB,EAAAklB,SAAA,KACIF,EAAAhlB,EAAA5D,cAAA,KAAGwF,UAAU,cAAcypB,IAAMmB,GAC3BM,GAEN9H,EAAAhlB,EAAA5D,cAAA,KAAGwF,UAAU,aAAaypB,IAAMoB,GAC1BW,GAENpI,EAAAhlB,EAAA5D,cAAA,KAAGwF,UAAU,oBACTojB,EAAAhlB,EAAA5D,cAAA,QAAMwF,UAAU,WAAWypB,IAAMqB,IAjCrB,MAEpB,QAAqB1F,IAAhBmF,EAA4B,OAAO,KAiBxC,OAhBkBA,EAEKlkB,IAAK,CAAE2kB,EAAMxsB,IAG5B4kB,EAAAhlB,EAAA5D,cAAA,UACIuD,EAAE,IACF+jB,QAAU,EACVjE,IAAMrf,EACN8sB,YAAc,EACdtrB,yBAA4BzB,QAsB3BovB,GAELvK,EAAAhlB,EAAA5D,cAAA,QACIwF,UAAU,oBACVorB,KAAK,OACLwC,cAAc,MACdtsB,OAASA,EAASonB,EAAOa,IAAMb,EAAOc,OACtCjoB,MAAQA,EAAQmnB,EAAOiB,MAAQjB,EAAOkB,KACtCiE,YAAgBlwB,GAAOmuB,EAAmBnuB,GAC1CmwB,WAAenwB,IAzD3BmtB,EAAY/B,QAAQ9uB,MAAM6nB,QAAU,EACpCwI,EAAWvB,QAAQ9uB,MAAMC,QAAU,YAEjBgM,MAAMC,KAAM5L,SAASwzB,sCAAwCxvB,MAErEqO,QAAWohB,IAEjBA,EAASzd,aAAc,UAAW,WA0D/ByZ,QAEfA,EAAMlG,WACFmG,YAAanT,SAAOgQ,WACpBoD,iBAAkBpT,SAAOgQ,WACzBxlB,OAAQylB,SAAOD,WACfvlB,MAAOwlB,SAAOD,WACd4B,OAAQgB,iBAASH,IAAKxC,SAAQ4C,MAAO5C,SAAQyC,OAAQzC,SAAQ6C,KAAM7C,WACnEoD,UAAWvJ,QACXriB,IAAKwoB,SACLqD,mBAAoBrD,SACpBlgB,EAAGod,OACHpa,EAAGoa,OACHqG,WAAYxT,SACZyT,YAAa3J,QACb4J,eAAgBvG,OAChBwG,YAAa1D,SACbsD,OAAQzJ,QACR8J,UAAW3D,SACX4D,UAAWpG,QC7Sf,MAAM0J,EAAa,EAAI1sB,QAAO6kB,QAAOc,QAAO7J,UAAS6Q,qBAGjD,MAAMC,EAAkBrN,YAAcsF,EAAO,GAAI,wBAA2B,EACtEgI,mBAA2ClH,EAAM,GAAGiB,6BAA+B9K,EAAQ1d,OAC3F0uB,EAA8BvN,YAAcsN,EAAwB,GAAI,mBAAsB,EAC9FE,mBAAoCpH,EAAM,GAAGiB,YAC7CoG,EAAuBzN,YAAcwN,EAAiB,GAAI,mBAAsB,EAChFE,mBAAoCnR,EAAQ1d,OAC5C8uB,EAAuB3N,YAAc0N,EAAiB,GAAI,mBAAsB,EAChFE,mBAAyCR,EAAevuB,OACxDgvB,EAA4B7N,YAAc4N,EAAsB,GAAI,mBAAsB,EAE1FE,EAAe7K,IAEjB,MAAM8K,EAAQ9K,EAAOpd,cAIrB,OAFqBkoB,EAAMC,OAAQ,GAAIC,cAAgBF,EAAMroB,MAAO,IAMxE,OACI4c,EAAAhlB,EAAA5D,cAAA,KAAGsU,UAAU,mBAGLvN,EAAQ,IACJ6hB,EAAAhlB,EAAA5D,cAAA4oB,EAAAhlB,EAAAklB,SAAA,KACIF,EAAAhlB,EAAA5D,cAAA,QAAMqM,EAAMtF,EAAQ,EAAM4sB,EAAkBtkB,EAAE,KAAK7J,UAAU,eAAe+gB,SAAS,OAAOiO,WAAW,uBAAuB5D,KAAK,WAC7HhF,GAENhD,EAAAhlB,EAAA5D,cAAA,QAAMqM,EAAMtF,EAAQ,EAAMgtB,EAAuB1kB,EAAE,KAAKkX,SAAS,OAAOiO,WAAW,kBAAkB5D,KAAK,WACtGhI,EAAAhlB,EAAA5D,cAAA,SAAOumB,SAAS,OAAOiO,WAAW,oBAAmB,iBAAqB,IAAGJ,EAAY1H,EAAM,GAAGiB,YAEtG/E,EAAAhlB,EAAA5D,cAAA,QAAMqM,EAAMtF,EAAQ,EAAMktB,EAAuB5kB,EAAE,KAAKkX,SAAS,OAAOiO,WAAW,kBAAkB5D,KAAK,WACtGhI,EAAAhlB,EAAA5D,cAAA,SAAOumB,SAAS,OAAOiO,WAAW,oBAAmB,iBAAqB,IAAG3R,EAAQ1d,MAEzFyjB,EAAAhlB,EAAA5D,cAAA,QAAMqM,EAAMtF,EAAQ,EAAMotB,EAA4B9kB,EAAE,KAAKkX,SAAS,OAAOiO,WAAW,kBAAkB5D,KAAK,WAC3GhI,EAAAhlB,EAAA5D,cAAA,SAAOumB,SAAS,OAAOiO,WAAW,oBAAmB,oBAAwB,IAAGd,EAAevuB,OAIvGyjB,EAAAhlB,EAAA5D,cAAA4oB,EAAAhlB,EAAAklB,SAAA,KACIF,EAAAhlB,EAAA5D,cAAA,QAAMqM,EAAMtF,EAAQ,EAAM4sB,EAAkBtkB,EAAE,KAAK7J,UAAU,eAAe+gB,SAAS,OAAOiO,WAAW,uBAAuB5D,KAAK,WAC7HhF,GAENhD,EAAAhlB,EAAA5D,cAAA,QAAMqM,EAAMtF,EAAQ,EAAM8sB,EAA8BxkB,EAAE,KAAKkX,SAAS,OAAOiO,WAAW,kBAAkB5D,KAAK,WAC7GhI,EAAAhlB,EAAA5D,cAAA,SAAOumB,SAAS,OAAOiO,WAAW,oBAAmB,iBAAqB,IAAGJ,EAAY1H,EAAM,GAAGiB,WAAa,MAAG/E,EAAAhlB,EAAA5D,cAAA,SAAOumB,SAAS,OAAOiO,WAAW,oBAAmB,iBAAqB,IAAG3R,EAAQ1d,MAE3MyjB,EAAAhlB,EAAA5D,cAAA,QAAMqM,EAAMtF,EAAQ,EAAMotB,EAA4B9kB,EAAE,KAAKkX,SAAS,OAAOiO,WAAW,kBAAkB5D,KAAK,WAC3GhI,EAAAhlB,EAAA5D,cAAA,SAAOumB,SAAS,OAAOiO,WAAW,oBAAmB,oBAAwB,IAAGd,EAAevuB,SAW5GsuB,QAEfA,EAAWnK,WACPviB,MAAOwlB,SACPX,MAAOrC,SACPmD,MAAOtG,QACPvD,QAASvG,SACToX,eAAgBpX,UCrEpB,MAAMmY,EAAa,EAAIhJ,SAAQ1kB,QAAOmnB,iBAElBtD,IAAXa,EAA8B,KAG/B7C,EAAAhlB,EAAA5D,cAAA,KAAGsU,wBAA2B4Z,EAAOkB,QAAuB,IAAblB,EAAOa,IAAYb,EAAOa,QACrEnG,EAAAhlB,EAAA5D,cAAA,QAAMw0B,WAAW,mBAAmBjO,SAAS,OAAOqK,KAAK,UACrDvkB,EAAMtF,EAAQ,EAAMuf,YAAcmF,EAAOxD,cAAe,GAAI,gBAAmB,GAE7EwD,EAAOxD,eAEbW,EAAAhlB,EAAA5D,cAAA,QAAMumB,SAAS,OAAOiO,WAAW,kBAAkB5D,KAAK,UACpDvkB,EAAMtF,EAAQ,EAAMuf,YAAcmF,EAAO9C,MAAO,GAAI,oBAAuB,EAC3EtZ,EAAE,MAEAoc,EAAO9C,QAOV8L,QAEfA,EAAWnL,WACPmC,OAAQnP,SACRvV,MAAOwlB,SACP2B,OAAQgB,iBAASH,IAAKxC,SAAQ4C,MAAO5C,SAAQyC,OAAQzC,SAAQ6C,KAAM7C,YC1BvE,MAAMmI,EAAQ,EAAI3tB,QAAOmnB,SAAQrL,UAASxT,QAEtC,MAAMslB,EAAe5yB,IAEjB,IAAI4mB,EAAQ,GAEZ,QAAS,GAEL,KAAK5mB,GAAS,IAAMA,GAAS,GACzB4mB,EAAQ,WACR,MACJ,KAAK5mB,GAAS,IAAMA,GAAS,GACzB4mB,EAAQ,UACR,MACJ,KAAK5mB,GAAS,GAAKA,GAAS,EACxB4mB,EAAQ,UACR,MACJ,KAAK5mB,GAAS,GAAKA,GAAS,EACxB4mB,EAAQ,WAKhB,OAAOA,GAILiM,EAAWxG,mBAEXyG,EAAYC,YAAUzlB,GACvB0lB,SAAUhuB,GACViuB,WAAY,CAAEn2B,EAAGmF,EAAGwH,KAGjB,MAAMypB,EAAOzpB,EAAI,GAAG0pB,SAAS/sB,WAAW1E,OAClC0xB,EAAO3pB,EAAIA,EAAI/H,OAAS,GAAGyxB,SAAS/sB,WAAW1E,OAC/C2xB,EAAaT,EAAYM,KAAWN,EAAYQ,GAChDxM,EAAQgM,EAAYQ,GAE1B,GAAKA,EAAOF,GAAQ,GAAKG,EAErB,IAAM,MAAMjJ,KAAO3gB,EAAM,CAErB,MAAMzJ,EAAQoqB,EAAI+I,SACZG,EAActzB,EAAMoG,WAAW1E,OAE/B6xB,EAAYvzB,GADC,EAAM,IAAMszB,GAEzBE,EAAWD,EAAUntB,WAAW1E,OAAS,EAAIlC,KAAKi0B,MAAmB,GAAZF,GAAmB,GAAKA,EAEvF,GAAe,IAAVvzB,GAAeszB,EAAcF,EAE9B,OAASxM,GAEL,IAAK,WACDwD,EAAIrW,UAA4B,QAAhB+M,EAAQQ,KAAiC,gBAAhBR,EAAQQ,QAA6B9hB,KAAKi0B,MAAkB,GAAXD,GAAkB,SAAah0B,KAAKi0B,MAAkB,GAAXD,GAAkB,MACvJ,MACJ,IAAK,UACDpJ,EAAIrW,UAA4B,QAAhB+M,EAAQQ,KAAiC,gBAAhBR,EAAQQ,QAA6B9hB,KAAKi0B,MAAkB,GAAXD,GAAkB,SAAah0B,KAAKi0B,MAAkB,GAAXD,GAAkB,MACvJ,MACJ,IAAK,UACDpJ,EAAIrW,UAA4B,QAAhB+M,EAAQQ,KAAiC,gBAAhBR,EAAQQ,QAA6BkS,QAAmBA,KACjG,MACJ,IAAK,WACDpJ,EAAIrW,UAA4B,QAAhB+M,EAAQQ,KAAiC,gBAAhBR,EAAQQ,QAA6BkS,QAAmBA,MAWrH,OAAO,IAAIE,KAAKC,aAAc,SACxBj2B,MAAOojB,EAAQpjB,MACbk2B,SAAU,MACVC,sBAA6B,IAAN/2B,EAAU,EAAIgkB,EAAQgT,kBAC7CC,sBAA6B,IAANj3B,EAAU,EAAIgkB,EAAQgT,kBAC7CE,SAAU,UACVC,eAAgB,UAEtBC,OAAQp3B,EAAGgkB,EAAQgT,qBAGxBnH,MAAO,GAEN/hB,EAAI+b,YAAQkM,EAASrG,SAoB3B,OAlBA5hB,EAAE1K,KAAM4yB,GAERloB,EAAE+b,OAAQ,WAAYvS,SACtBxJ,EAAEmiB,UAAW,cACRD,KAAM,KAAM,IACZA,KAAM,KAAM,KACZA,KAAM,OAAQ,WACdA,KAAM,YAAa,QACnBA,KAAM,cAAe,kBAC1BliB,EAAEmiB,UAAW,cACRD,KAAM,mBAAsBhwB,GAEV,IAANA,EAAU,IAAM,KAG5BgwB,KAAM,SAAU,WAChBA,KAAM,KAAM9nB,EAAQmnB,EAAOkB,KAAOlB,EAAOiB,OAG1CvG,EAAAhlB,EAAA5D,cAAA,KACIwF,UAAU,SACVypB,IAAM2F,KAOHF,QAEfA,EAAMpL,WACF4E,OAAQgB,iBAASH,IAAKxC,SAAQ4C,MAAO5C,SAAQyC,OAAQzC,SAAQ6C,KAAM7C,WACnExlB,MAAOwlB,SAAOD,WACdzJ,QAASqT,iBAASz2B,MAAO8pB,SAAQsM,kBAAmBtJ,WACpDld,EAAGoa,QCpHP,MAAM0M,IAEEhxB,KAAM,mBACNke,IAAK,WACL+S,OAAQ,MACRvtB,KAAM,UACNgtB,kBAAmB,EACnBp2B,MAAO,YAGP0F,KAAM,eACNke,IAAK,eACL+S,OAAQ,QACRvtB,KAAM,WACNgtB,kBAAmB,EACnBp2B,MAAO,YAGP0F,KAAM,cACNke,IAAK,YACL+S,OAAQ,MACRvtB,KAAM,IACNwtB,aAAc,SACdR,kBAAmB,EACnBp2B,MAAO,YAGP0F,KAAM,cACNke,IAAK,cACL+S,OAAQ,MACRvtB,KAAM,IACNwtB,aAAc,SACdR,kBAAmB,EACnBp2B,MAAO,aAGP0F,KAAM,qBACNke,IAAK,MACL+S,OAAQ,OACRvtB,KAAM,IACNwtB,aAAc,SACdR,kBAAmB,EACnBp2B,MAAO,aAGP0F,KAAM,6BACNke,IAAK,sBACL+S,OAAQ,QACRvtB,KAAM,IACNwtB,aAAc,SACdR,kBAAmB,EACnBp2B,MAAO,YAGP0F,KAAM,sBACNke,IAAK,mBACL+S,OAAQ,aACRvtB,KAAM,IACNwtB,aAAc,SACdR,kBAAmB,EACnBp2B,MAAO,YAGP0F,KAAM,4BACNke,IAAK,kBACL+S,OAAQ,YACRvtB,KAAM,IACNwtB,aAAc,SACdR,kBAAmB,EACnBp2B,MAAO,YAGP0F,KAAM,gCACNke,IAAK,iBACL+S,OAAQ,WACRvtB,KAAM,IACNwtB,aAAc,SACdR,kBAAmB,EACnBp2B,MAAO,YAGP0F,KAAM,sCACNke,IAAK,kBACL+S,OAAQ,YACRvtB,KAAM,IACNwtB,aAAc,SACdR,kBAAmB,EACnBp2B,MAAO,YAIT62B,IAEEnxB,KAAM,UACNke,IAAK,MACLkT,WAAa,OACbC,cAAgB,SAChBC,eAAiB,WAAY,UAAW,SAAU,WAClD5G,QAAU,WACV6G,WAAa,OAAQ,aAAc,iBAAkB,0BAGrDvxB,KAAM,mBACNke,IAAK,aACLkT,WAAa,UAAW,WACxB1G,QAAU,2BAA4B,8BAGtC1qB,KAAM,sBACNke,IAAK,sBACLkT,WAAa,YAAa,aAC1B1G,QAAU,2BAA4B,8BAGtC1qB,KAAM,SACNke,IAAK,SACLkT,WAAa,SAAU,QACvB1G,QAAU,SAAU,UAGpB1qB,KAAM,iBACNke,IAAK,iBACLkT,WAAa,QAAS,QAAS,OAAQ,SACvC1G,QAAU,uBAAwB,uBAAwB,WAAY,0BAGtE1qB,KAAM,YACNke,IAAK,YACLkT,WAAa,eAAgB,MAAO,YACpC1G,QAAU,eAAgB,MAAO,gBAInC8G,IACAxpB,gBAAiB,YACjBA,gBAAiB,YACjBA,gBAAiB,YACjBA,gBAAiB,YACjBA,gBAAiB,YACjBA,gBAAiB,YACjBA,gBAAiB,YACjBA,gBAAiB,YAGjBypB,IAEE/T,QAAS,WACT6Q,eAAgB,QAGhB7Q,QAAS,eACT6Q,eAAgB,QAGhB7Q,QAAS,sBACT6Q,eAAgB,QAIxB,SAASmD,EAAQC,GAEb,MAAMzO,QAAEA,EAAFqE,MAAWA,EAAXwB,OAAkBA,EAAlB6I,WAA0BA,GAAeD,EACzCjU,EAAUsT,EAAa/pB,OAAUC,GAAOA,EAAEgX,MAAQqJ,EAAM,GAAGiB,WAAY,GACvEyI,EAASvT,EAAQuT,OACjB1C,EAAiB4C,EAAoBlqB,OAAUC,GAAOA,EAAEgX,MAAQqJ,EAAM,GAAGiB,WAAY,GAE3F,IAAI4I,EAAY7C,EAAe6C,UAAU1qB,IAAO8D,GAAOymB,EAASzmB,GAE5DqnB,EAAc,YAEbJ,EAA4Bhe,KAAQvM,GAAOA,EAAEwW,UAAYA,EAAQQ,KAAOhX,EAAEqnB,iBAAmBA,EAAerQ,OAExF,wBAAhBR,EAAQQ,KAETkT,EAAY7C,EAAe+C,cAAc5qB,IAAO8D,GAAOymB,EAASzmB,GAChEqnB,EAAc,kBAKdT,EAAY7C,EAAe8C,aAAa3qB,IAAO8D,GAAOymB,EAASzmB,GAC/DqnB,EAAc,iBAMtB,MAeMnH,EAfY,KAEO,wBAAhBhN,EAAQQ,IAEFqQ,EAAegD,UAKfhD,EAAe7D,OAMfoH,GAETC,GAAkB,eAAgB,OACpC,gBAAiB,UACjB,aAAc,aACd,cAAe,gBACf,aAAc,aACd,gBAAiB,qBACdX,IA6DC5G,GAAcnF,mBA3DN,MAEZ,MAAM3rB,EAAIi4B,EAAMjnB,KAAKhE,IAAOgE,GAEjBA,EAAKhE,IAAOhN,IAEf,MAAMs4B,EAAO12B,OAAO02B,KAAMt4B,GACrBuN,OAAUiX,GAAS6T,EAAcryB,SAAUwe,IAGhD,IAAM,IAAIrf,EAAI,EAAGA,EAAIuyB,EAAU9yB,OAAS,EAAGO,IAEjCmzB,EAAKtyB,SAAU0xB,EAAUvyB,KAE3BmzB,EAAKrkB,KAAMyjB,EAAUvyB,IAM7B,OAAOmzB,EAAKC,OAAQ,CAAEC,EAAKhU,KAEvB,MAAM8I,EAAMttB,EAAEwkB,GAId,OAFAgU,EAAIhU,QAAeuH,IAARuB,EAAoB,KAAOA,EAE/BkL,UA4BnB,OAnBef,EACVlqB,OAAUC,GAAOA,EAAEgX,MAAQqJ,EAAM,GAAN,WAAwB,GAAGsK,GAAanrB,IAAK,CAAEQ,EAAGrI,MAGtE8N,GAAIzF,EACJ2a,MAAO2P,EAAY3yB,GAAGmJ,gBACtB4jB,OAAQlyB,EAAEgN,IAAOT,GAENA,EAAQS,IAAOyrB,KAET/H,KAAM+H,EAAE,KAAUv1B,MAAOu1B,EAAGlB,EAAS/pB,WActCkrB,KACxBxH,EAAaC,GAAmBxF,mBAAUmF,IAC1C6H,EAASC,GAAejN,wBACxBoF,GAAuBpF,mBAAU,GAEnCkN,EAAetJ,mBACfuJ,EAASvJ,mBACT0B,EAAa1B,mBAEnB1C,oBAAW,KAEP+L,EAAYG,EAAYjI,MAEvBA,IAGL,MA0BMiI,EAAeC,IAEjB,MAAML,GACFM,SAAU,EACVC,SAAUpnB,OAAOqnB,WAmBrB,OAhBAH,EAAgBzlB,QAAWhH,IAEvBA,EAAQ2lB,OAAO3e,QAAWvC,IAEtBA,EAAKuC,QAAWzC,IAEK,OAAZA,EAAE5N,QACPy1B,EAAQM,SAAWG,WAAYtoB,EAAE5N,QAAWk2B,WAAYT,EAAQM,UAAanoB,EAAE5N,MAAQy1B,EAAQM,SAC/FN,EAAQO,SAAWE,WAAYtoB,EAAE5N,QAAWk2B,WAAYT,EAAQO,UAAapoB,EAAE5N,MAAQy1B,EAAQO,gBAQpGP,GAKLU,EAAwC,IAAtBpB,EAAMjnB,KAAKpM,QAAgBqzB,EAAM/vB,MAAQ,IAAM+vB,EAAM/vB,MAAQ,EAAI+vB,EAAM/vB,MACzFoxB,EAA8C,IAAtBrB,EAAMjnB,KAAKpM,QAAgBqzB,EAAM/vB,MAAQ,IAAM+vB,EAAM/vB,MAAQ+vB,EAAM/vB,MAAQ,EACnGsF,EAxDetF,IAGbqxB,cACKxS,OAAQyS,YAAQ1I,EAAU,GAAGoB,OAAO,GAAI,SAAWlyB,GAEhD,OAAOywB,EAASzwB,EAAE0wB,SAGrB1J,OAAS,EAAG9e,IA+CfuxB,CAAYJ,EAAkBhK,EAAOkB,KAAOlB,EAAOiB,OACvD9f,EA3CevI,IAGbyxB,cACK3S,QAAU4R,EAAQM,SAAUN,EAAQO,WACpClS,OAAS/e,EAAQ,IACjB0xB,OAqCHC,CAAY3B,EAAMhwB,OAASonB,EAAOa,IAAMb,EAAOc,QA8DnD0J,EAAiB5B,EAAM/vB,MAAQ,IAAM,GAAK,GAC1C4xB,EAAiB7B,EAAM/vB,MAAQ,IAAM,GAAK,GAC1C6xB,EAAkB9B,EAAM/vB,MAAQ,IAAM,GAAK,GAC3C8xB,EAAO/B,EAAM/vB,MAAQ,IAAM,GAAK,GAChC+xB,EAAyBD,EAAOF,EAChCI,EAAOjC,EAAM/vB,MAAQ,IAAM,EAAI,GAC/BiyB,EAAelC,EAAM/vB,MAAQ,KAAO,IAAM,GAC1CkyB,EAAenC,EAAM/vB,MAAQ,IAAM,GAAK,GAkCxCmyB,EAAiBC,IAEnB,MAAMC,EAA+B,IAAlBvJ,EAAOpsB,OAAe,EAAIo1B,EACvCQ,EAAmBxJ,EACpBhkB,IAAO0G,KAEKgF,KAAMhF,EAAMxL,MAAOuf,YAAc/T,EAAMmmB,EAAgB,mBAAsBC,EAAiBG,EAAyBM,KAMlIE,EAHmBD,EAAiBjC,OAAQ,CAAEmC,EAAKC,IAAkBD,EAAMC,EAAazyB,MAAO,GAGhDqyB,EAAgC,EAAjBT,EAEpE,OAEI/P,EAAAhlB,EAAA5D,cAAA,KAAGwF,UAAU,gBAAgB8O,wBAA4BwiB,EAAM/vB,MAAQuyB,GAA8B,EAAIX,KAAsB7B,EAAMhwB,OAASqyB,EAAgB,OAC1JvQ,EAAAhlB,EAAA5D,cAAA,QACI4wB,KAAK,QACLC,OAAO,UACPC,YAAY,IACZ/pB,MAAQuyB,EACRxyB,OAASmyB,EACT5sB,EAAI2sB,EACJ3pB,EAAI2pB,IAzDSK,IAElBA,EAAiBxtB,IAAK,CAAE0G,EAAMvO,EAAGy1B,KAEpC,MAAMC,EAAwB,IAAN11B,EAAUy1B,EAAUztB,MAAO,EAAGhI,GAAIozB,OAAQ,CAAEmC,EAAKC,IAAkBD,EAAMC,EAAazyB,MAAO,GAAM,EACrHqe,eAAgC,IAANphB,EAAU,EAAI01B,OAE9C,OACI9Q,EAAAhlB,EAAA5D,cAAA,KACIsU,UAAY8Q,EACZ/B,OAAUrf,KAAOuO,EAAKgF,OAAUoiB,YAAY31B,EAAI,GAEhD4kB,EAAAhlB,EAAA5D,cAAA,QACI+G,MAAQ4xB,EACR7xB,OAAS8xB,EAAkBhI,KAAO+F,EAAY3yB,GAAGmJ,kBAErDyb,EAAAhlB,EAAA5D,cAAA,QACIqM,EAAIwsB,EACJxpB,EAAI0pB,EACJnI,KAAK,UACLrK,YAAemS,MACflE,WAAW,mBAETjiB,EAAKgF,SAqCXqiB,CAAoBP,KAS9BQ,EAAe/C,EAAM/vB,MAAQ,IAAM,IAAM,IACzC+yB,EAAkBhD,EAAM/vB,MAAQ,IAAM,IAAM,IAC5CgzB,EAAmBjD,EAAM/vB,MAAQ,IAAM,GAAK,GAC5CizB,GAA8Bb,IAEhC,MAAMc,GAAoB,EAAG,EAAG,GAAI,IAGpC,OACIrR,EAAAhlB,EAAA5D,cAAA,KAAGwF,UAAU,gBAAgB8O,wBAA4BwiB,EAAM/vB,MAAQ+yB,GAAoB,EAAInB,KAAsB7B,EAAMhwB,OAASqyB,EAAgB,OAChJvQ,EAAAhlB,EAAA5D,cAAA,QAAM4wB,KAAK,QACPC,OAAO,UACPC,YAAY,IACZ/pB,MAAQ+yB,EAAkBhzB,OAASizB,EACnC1tB,EAAI2sB,EAAe3pB,EAAI2pB,IAGvBnJ,EAAOhkB,IAAK,CAAE0G,EAAMvO,IAGZ4kB,EAAAhlB,EAAA5D,cAAA,KAAGsU,uBAA0BtQ,EAAI,GAAM,EAAI61B,EAAe,KAAOI,EAAgBj2B,MAAS21B,YAAU,IAAItW,OAAU9Q,KAAUvO,KACxH4kB,EAAAhlB,EAAA5D,cAAA,QACI+G,MAAQ4xB,EACR7xB,OAAS8xB,EACThI,KAAO+F,EAAY3yB,GAAGmJ,kBAE1Byb,EAAAhlB,EAAA5D,cAAA,QAAMqM,EAAIwsB,EACNxpB,EAAI0pB,EACJnI,KAAK,UACLrK,YAAemS,MACflE,WAAW,mBACZjiB,OAW/B,OACIqW,EAAAhlB,EAAA5D,cAAA4oB,EAAAhlB,EAAAklB,SAAA,KACIF,EAAAhlB,EAAA5D,cAAA,OAAKivB,IAAMyI,GACP9O,EAAAhlB,EAAA5D,cAAA,OAAKivB,IAAM0I,EACP5wB,MAAQ+vB,EAAM/vB,MACdD,OAAWgwB,EAAMhwB,OAASonB,EAAOkB,MAAW0H,EAAM/vB,MAAQ,KAA6B,IAAtB+vB,EAAMjnB,KAAKpM,OAAeqzB,EAAMhwB,OAAS,GAC1G8pB,KAAK,WAELhI,EAAAhlB,EAAA5D,cAAA,QACIk6B,YAAU,+BACVtJ,KAAK,OACL7pB,MAAQ+vB,EAAM/vB,MACdD,OAAWgwB,EAAMhwB,OAASonB,EAAOa,KAAU+H,EAAM/vB,MAAQ,KAA6B,IAAtB+vB,EAAMjnB,KAAKpM,OAAeqzB,EAAMhwB,OAAS,GACzGqzB,GAAG,OACHC,GAAG,SAGPxR,EAAAhlB,EAAA5D,cAACq6B,GACGzO,MAAM,gBACN7kB,MAAQ+vB,EAAM/vB,MACd2lB,MAAQA,EACR7J,QAAUA,EACV6Q,eAAiBA,IAErB9K,EAAAhlB,EAAA5D,cAAA,KAAGsU,uBAA0B4Z,EAAOkB,QAAUlB,EAAOa,QAEjDnG,EAAAhlB,EAAA5D,cAACs6B,GACG7O,OAASpD,EAAQ,GACjBthB,MAAQmxB,EACRhK,OAASA,IAGbtF,EAAAhlB,EAAA5D,cAACu6B,GAAMxzB,MAAQ+vB,EAAM/vB,MAAQmnB,OAASA,EAASrL,QAAUA,EAAUxT,EAAIA,IACvEuZ,EAAAhlB,EAAA5D,cAACw6B,GAAMzzB,MAAQ+vB,EAAM/vB,MAAQD,OAASgwB,EAAMhwB,OAASonB,OAASA,EAAS7hB,EAAIA,IAE3Euc,EAAAhlB,EAAA5D,cAACy6B,GACGhL,YAAcqH,EAAMrH,YACpBC,iBAAmBoH,EAAMpH,iBACzB5oB,OAASgwB,EAAMhwB,OACfC,MAAQmxB,EACRhK,OAASA,EACTyB,UAAYA,EACZ5rB,IAAM,EACN6rB,mBAAqBA,EACrBvjB,EAAIA,EACJgD,EAAIA,EACJwgB,OAASA,EACTC,WAAaA,EACbC,YAAcA,EACdC,eAAiBA,EACjBC,YAAc,EACdC,UAAY4G,EAAM/vB,MAClBopB,UAAoC,IAAtB2G,EAAMjnB,KAAKpM,UAMT,IAAtBqzB,EAAMjnB,KAAKpM,QACTmlB,EAAAhlB,EAAA5D,cAAA,KAAGsU,uBAA0B4Z,EAAOkB,MAAS0H,EAAM/vB,MAAQ,IAAM,EAAIoxB,OAA8BjK,EAAOa,KAAQ+H,EAAM/vB,MAAQ,IAAM+vB,EAAMhwB,OAAS,OAEjJ8hB,EAAAhlB,EAAA5D,cAACs6B,GACG7O,OAASpD,EAAQ,GACjBthB,MAAQoxB,EACRjK,OAASA,IAIT4I,EAAM/vB,MAAQ,IAAM6hB,EAAAhlB,EAAA5D,cAACu6B,GAAMxzB,MAAQ+vB,EAAM/vB,MAAQmnB,OAASA,EAASrL,QAAUA,EAAUxT,EAAIA,IAAS,KAIxGuZ,EAAAhlB,EAAA5D,cAACw6B,GAAMzzB,MAAQ+vB,EAAM/vB,MAAQD,OAASgwB,EAAMhwB,OAASonB,OAASA,EAAS7hB,EAAIA,IAE3Euc,EAAAhlB,EAAA5D,cAACy6B,GACGhL,YAAcqH,EAAMrH,YACpBC,iBAAmBoH,EAAMpH,iBACzB5oB,OAASgwB,EAAMhwB,OACfC,MAAQoxB,EACRjK,OAASA,EACTyB,UAAYA,EACZ5rB,IAAM,EACN6rB,mBAAqBA,EACrBvjB,EAAIA,EACJgD,EAAIA,EACJwgB,OAASA,EACTC,WAAaA,EACbC,YAAcA,EACdC,eAAiBA,EACjBC,YAAc/B,EAAOkB,MAAS0H,EAAM/vB,MAAQ,IAAM,EAAIoxB,GACtDjI,UAAY4G,EAAM/vB,MAClBopB,UAAoC,IAAtB2G,EAAMjnB,KAAKpM,UAOZ,IAArBksB,EAAUlsB,OAAeu2B,GAA2B,GAAMd,EAAc,GAGlD,IAAtBpC,EAAMjnB,KAAKpM,QAAgBqzB,EAAM/vB,MAAQ,IAA6B,IAArB4oB,EAAUlsB,OAAeu2B,GAA2B,GAAMd,EAAc,GAAQ,MAKzItQ,EAAAhlB,EAAA5D,cAAA,OAAKwF,aAAgBsxB,EAAM/vB,MAAQ,IAAM,oBAAsB,gBAEhC,aAAvB2lB,EAAM,GAAGiB,UACL/E,EAAAhlB,EAAA5D,cAAA,SAAK+2B,EAAW2D,SAEhB9R,EAAAhlB,EAAA5D,cAAA,SAAK+2B,EAAW4D,OAExB/R,EAAAhlB,EAAA5D,cAAA,SAAK+2B,EAAW6D,WApSV,MAGlB,GAA4B,IAAvB7K,EAAYtsB,OAEb,OACImlB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,UAAUypB,IAAMa,GAC3BlH,EAAAhlB,EAAA5D,cAAA,UAAI,IAAG+vB,EAAY,GAAGR,KAAM,KAC5B3G,EAAAhlB,EAAA5D,cAAA,aACI4oB,EAAAhlB,EAAA5D,cAAA,aACI4oB,EAAAhlB,EAAA5D,cAAA,MAAIqjB,IAAO,kBACPuF,EAAAhlB,EAAA5D,cAAA,MAAIwF,UAAU,QAAQ/F,OAAS0N,gBAAiBwpB,EAAY,GAAGxpB,mBAC/Dyb,EAAAhlB,EAAA5D,cAAA,MAAIwF,UAAU,SAAQ,OAAOqqB,EAAO,KAAO,KAC3CjH,EAAAhlB,EAAA5D,cAAA,MAAIwF,UAAU,SAAQ,IAAsC,OAAnCuqB,EAAY,GAAGgB,OAAO,GAAGhvB,MAAiB,IAAI0zB,KAAKC,aAAc,SAEtFj2B,MAAOojB,EAAQpjB,MAAOk2B,SAAU,MAChCC,sBAAuC,QAAhB/S,EAAQQ,KAAiC,gBAAhBR,EAAQQ,KAAyC,iBAAhBR,EAAQQ,IAAyB,EAAIR,EAAQgT,kBAC9HC,sBAAuC,QAAhBjT,EAAQQ,KAAiC,gBAAhBR,EAAQQ,KAAyC,iBAAhBR,EAAQQ,IAAyB,EAAIR,EAAQgT,oBAC9HI,OAAQlG,EAAY,GAAGgB,OAAO,GAAGhvB,OAAU,WAQlE,CAED,MAAM84B,EAAkB9K,EAAYlkB,IAAK,CAAE2kB,EAAMxsB,IAGzC4kB,EAAAhlB,EAAA5D,cAAA,MAAIqjB,WAAcrf,KACd4kB,EAAAhlB,EAAA5D,cAAA,MAAIwF,UAAU,QAAQ/F,OAAS0N,gBAAiBwpB,EAAY3yB,GAAGmJ,mBAC/Dyb,EAAAhlB,EAAA5D,cAAA,MAAIwF,UAAU,SAAQ,OAAOqqB,EAAO7rB,KAAO,KAC3C4kB,EAAAhlB,EAAA5D,cAAA,MAAIwF,UAAU,SAAQ,IAA4B,OAAzBgrB,EAAKO,OAAO,GAAGhvB,MAAiB,IAAI0zB,KAAKC,aAAc,SAExEj2B,MAAOojB,EAAQpjB,MAAOk2B,SAAU,MAChCC,sBAAuC,QAAhB/S,EAAQQ,KAAiC,gBAAhBR,EAAQQ,KAAyC,iBAAhBR,EAAQQ,IAAyB,EAAIR,EAAQgT,kBAC9HC,sBAAuC,QAAhBjT,EAAQQ,KAAiC,gBAAhBR,EAAQQ,KAAyC,iBAAhBR,EAAQQ,IAAyB,EAAIR,EAAQgT,oBAC9HI,OAAQzF,EAAKO,OAAO,GAAGhvB,OAAU,SAMrD,OACI6mB,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,UAAUypB,IAAMa,GAC3BlH,EAAAhlB,EAAA5D,cAAA,UAAI,IAAG+vB,EAAY,GAAGR,KAAM,KAC5B3G,EAAAhlB,EAAA5D,cAAA,aACI4oB,EAAAhlB,EAAA5D,cAAA,aACM66B,OAwPdC,IAODjE,QAEfA,EAAOvN,WACHzZ,KAAMuW,QAAMkG,WACZyO,WAAYC,qBAAYC,aACxB/M,OAAQgB,iBAASH,IAAKxC,SAAQ4C,MAAO5C,SAAQyC,OAAQzC,SAAQ6C,KAAM7C,WACnEzlB,OAAQylB,SAAOD,WACfvlB,MAAOwlB,SAAOD,WACdyK,WAAYza,SAAOgQ,WACnBmD,YAAanT,SAAOgQ,WACpBoD,iBAAkBpT,SAAOgQ,WACzB4O,UAAW3O,SACX4O,QAAS5O,SACTG,MAAOtG,QACPiC,QAASjC,QACTgV,oBAAqB9e,UCpqBzB,MA6LM+e,EAAa,CAAExrB,EAAMyrB,EAAOC,KAE9B,MACMlT,EArJWiT,KAEjB,IAAIjT,KAEJ,GAAsB,IAAjBiT,EAAM73B,QAAgB63B,EAAM,GAAG7P,SAAW6P,EAAM,GAAG7P,OAAS,CAE7D,IAAI+P,KAEAC,KAEJ,OAASH,EAAM,GAAG7P,QAEd,IAAK,QACD+P,GAAY,aAAc,cAC1B,MACJ,IAAK,SACDA,GAAY,gBAAiB,eAC7B,MACJ,IAAK,MACDA,GAAY,aAAc,cAC1B,MACJ,IAAK,OACDA,GAAY,kBAAmB,iBAKvC,OAASF,EAAM,GAAG7P,QAEd,IAAK,QACDgQ,GAAY,aAAc,cAC1B,MACJ,IAAK,SACDA,GAAY,gBAAiB,eAC7B,MACJ,IAAK,MACDA,GAAY,aAAc,cAC1B,MACJ,IAAK,OACDA,GAAY,kBAAmB,iBAKvCpT,MAAemT,KAAYC,QAK3B,OAASH,EAAM,GAAG7P,QAEd,IAAK,QACDpD,GAAY,aAAc,cAC1B,MACJ,IAAK,SACDA,GAAY,gBAAiB,eAC7B,MACJ,IAAK,MACDA,GAAY,aAAc,cAC1B,MACJ,IAAK,OACDA,GAAY,kBAAmB,iBAO3C,OAAOA,GAiFSqT,CAAYJ,GACtB5O,EA7ES6O,KAEf,IAAI1Y,EAAU,GAEV8Y,KAGJ,OAASJ,EAAW,GAAG5N,WAEnB,IAAK,WACD9K,EAAU,MACV,MACJ,IAAK,eACDA,EAAU,QACV,MACJ,IAAK,YACDA,EAAU,MACV,MACJ,IAAK,cACDA,EAAU,MACV,MACJ,IAAK,MACDA,EAAU,OACV,MACJ,IAAK,sBACDA,EAAU,QACV,MACJ,IAAK,mBACDA,EAAU,aACV,MACJ,IAAK,kBACDA,EAAU,YACV,MACJ,IAAK,iBACDA,EAAU,WACV,MACJ,IAAK,kBACDA,EAAU,YAMlB,OAAS0Y,EAAW,GAAG5N,WAEnB,IAAK,MACDgO,GAAoB,MAAO,QAAS,WAAY,UAAW,SAAU,UAAW,aAAc,YAAa,WAAY,aACvH,MACJ,IAAK,aACDA,GAAoB,UAAW,WAC/B,MACJ,IAAK,sBACDA,GAAoB,YAAa,aACjC,MACJ,IAAK,SACDA,GAAoB,SAAU,OAAQ,eACtC,MACJ,IAAK,iBACDA,GAAoB,QAAS,QAAS,OAAQ,QAAS,QAAS,WAChE,MACJ,IAAK,YACDA,GAAoB,MAAO,eAAgB,YAOnD,OAFcA,EAAgB9vB,IAAO+vB,GAAU/Y,EAAU+Y,IAW3CC,CAAUN,GAClBO,GAHoB,eAAgB,QAGVC,OAAQ1T,GAAU0T,OAAQrP,GAEpDsP,KAEN,IAAM,MAAMC,KAAUpsB,EAAO,CAEzB,MAAMqsB,KAGN,IAAM,MAAM9vB,KAAU0vB,EAAU,CAE5B,MAAMK,EAAc17B,OAAO02B,KAAM8E,GAC5B7vB,OAAUiX,GAASA,EAAIxe,SAAWuH,IAEX,IAAvB+vB,EAAY14B,QAEby4B,EAAiBppB,KAAMqpB,GAO/B,MAAMC,EAAiBF,EAAiB9E,OAAQ,CAAEC,EAAKhU,IAE5C5iB,OAAO47B,OAAQhF,GAClBiF,CAACjZ,GAAM4Y,EAAO5Y,SAKtB2Y,EAAalpB,KAAMspB,GAIvB,OAAOG,EAAaP,EAAcT,EAAYO,IAI5CS,EAAc,CAAE1sB,EAAM0rB,EAAYO,KAGpC,MAMMU,KAQA7lB,EA/NS,EAAE9G,EAAMisB,IAElBjsB,EAAKpM,OAAS,GAERq4B,EAKAr7B,OAAO02B,KAAMtnB,EAAK,KAsNb4sB,CAdG5sB,EAAK6sB,KAAM,CAAE94B,EAAG8I,IAExBjM,OAAO02B,KAAMvzB,GAAIH,OAAShD,OAAO02B,KAAMzqB,GAAIjJ,QAYdq4B,GAIxCU,EAAQ1pB,KAAM6D,EAAQtG,KAAM,MAG5B,IAAM,MAAMssB,KAAO9sB,EAAO,CAEtB,MAAMkhB,EAASpa,EAAQ9K,IAAO+wB,IAE1B,MAAMzQ,EAAMwQ,EAAIC,GAGhB,YAAahS,IAARuB,EAEO,OAKIA,OAQpBqQ,EAAQ1pB,KAAMie,EAAO1gB,KAAM,MAsB/B,OAjBwB,sBAAuB,mBAAoB,kBAAmB,iBAAkB,mBAErFxL,SAAU02B,EAAW,GAAG5N,aAEvC6O,EAAQ,GAAKA,EAAQ,GAAGxzB,MAAO,SAAUqH,KAAM,WAIlB,cAA5BkrB,EAAW,GAAG5N,YAEf6O,EAAQ,GAAKA,EAAQ,GAAGxzB,MAAO,OAAQqH,KAAM,WAO1CmsB,EAAQnsB,KAAM,OAwBVwsB,MApBM,CAAEC,EAASxB,EAAOC,EAAYwB,KAI/C,MAAMC,EArTQ,EAAEntB,EAAMyrB,EAAOC,KAE7B,GAAqB,IAAhB1rB,EAAKpM,OAAe,CAGrB,MAAMw5B,MAAYptB,EAAK,MAAOA,EAAK,IAEnC,OAAOwrB,EAAY4B,EAAM3B,EAAOC,GAKhC,OAAOF,EAAYxrB,EAAK,GAAIyrB,EAAOC,IAyS3B2B,CAAWJ,EAASxB,EAAOC,GAGjC4B,EAAU,IAAIh0B,MAAQ6zB,IAASn0B,KAAM,aACrCu0B,EAAer9B,SAASC,cAAe,KAG7Co9B,EAAan9B,SAAW88B,EACxBK,EAAal9B,KAAOmE,OAAOg5B,IAAIC,gBAAiBH,GAChDC,EAAa39B,MAAMC,QAAU,OAE7BK,SAAS8H,KAAKD,YAAaw1B,GAC3BA,EAAaj9B,2BC1TjB,MAAMo9B,EAAkB,CAAE9R,EAAQ1pB,KAE9B,IAAIy7B,EAEAC,EAEArH,EAAS3K,EAEb,OAASA,GAEL,IAAK,QACDgS,EAAO17B,EAAMoG,WAAWu1B,SAAU,EAAG,KACrCF,EAAW,aACX,MACJ,IAAK,SACDC,EAAO17B,EAAMoG,WAAWu1B,SAAU,EAAG,KACrCF,EAAW,gBACX,MACJ,IAAK,MACDpH,EAAS,QACTqH,EAAO17B,EAAMoG,WACbq1B,EAAW,aACX,MACJ,IAAK,OACDC,EAAO17B,EAAMoG,WAAWu1B,SAAU,EAAG,KACrCF,EAAW,kBACX,MACJ,QACIC,EAAO,GACPD,EAAW,GAKnB,OAASpH,OAAQA,EAAQqH,KAAMA,EAAMD,SAAUA,IAsBnD,MAAMG,EAAO,EAAIlO,cAAaC,mBAAkBkO,iBAE5C,MAAM/tB,KAAEA,EAAFguB,cAAQA,EAAR9G,WAAuBA,EAAvB9M,QAAmCA,GAAY2T,GAC7CvV,EAASC,GAAekC,wBACxBiC,EAAWqR,GAAiBtT,oBAAU,IACtCkC,EAAOC,GAAanC,wBACpBoC,EAAYmR,GAAkBvT,oBAAU,IACxCmF,EAAWqO,GAAiBxT,uBAE9ByT,EAAc7P,sBAEZJ,EAAWnB,GAAiBrC,oBAAU,GAExC0T,EAAqB9P,mBACrBgN,EAAsBhN,oBAGpBrnB,EAAOo3B,GAAa3T,mBAAUkF,EAAiB7b,YAAgB,GAAsB,GAE7F6X,oBAAW,KAEFrD,EAAQ5kB,OAAS,GAElBq6B,GAAc,GAEdG,EAAY1P,WAEZlG,EAAQjW,QAAWub,IAEf,MAAMtK,EAAMka,EAAiB5P,EAAUlC,OAAQkC,EAAU5rB,OAEzD,IAAMk8B,EAAY1P,QAAQ3V,KAAQvM,GAAOA,EAAEgX,EAAIma,YAAcna,EAAIoa,MAAS,CAEtE,IAAIW,EAAe,GAEnB,GAAoB,WAAf/a,EAAI+S,OAAsB,CAE3B,MAAMiI,EAAUC,SAAUjb,EAAIoa,MAI1BW,EAFCC,GAAW,MAEG,MAGTA,GAAW,MAEF,MAGTA,GAAW,MAEF,MAKA,MAKvB/wB,SAAWuwB,IAAkBxa,EAAI+S,UAAYgI,IAAiB/a,EAAI+S,UAAY/S,EAAIoa,aAC7E79B,KAAQ4J,GAAYA,EAAO+0B,QAC3B3+B,KAAQf,GAAOo/B,EAAY1P,YAAe0P,EAAY1P,WAAY1vB,SAS/Ei/B,GAAc,GACdnR,OAGJE,GAAc,KAEbxE,IAELqD,oBAAW,KAEPmB,GAAc,QAEIjC,IAAb8B,EAAM,SAAiC9B,IAAb8B,EAAM,SAAiC9B,IAAb8B,EAAM,GAE3DqR,GAAe,GAKfA,GAAe,KAKlBrR,IAELhB,oBAAW,KAEP,MAAM8S,EAtHd,SAAmBC,EAAIC,GAEnB,IAAIC,EAEJ,OAAS54B,IAELwE,aAAco0B,GACdA,EAAQn0B,WAAczE,IAElB44B,EAAQ,KAERF,EAAGv7B,MAAOwF,KAAMia,YAEjB+b,IAyG2BE,CAAU,WAEpC,MAAMC,EAAYnP,EAAiB7b,YAE9B9M,IAAU83B,GAEfV,EAAUzO,EAAiB7b,YAAgB,GAAsB,IAElE,IAIH,OAFAxP,OAAO2G,iBAAkB,SAAUwzB,GAE1Bz4B,IAEL1B,OAAO0G,oBAAqB,SAAUyzB,SAM9C,MAYMM,EAAc,KAEhB,MAAMC,EAAcd,EAAY1P,QAAQniB,OAAUC,GAAOA,EAAC,eAAqBqgB,EAAM,GAAGiB,WAElFqR,KAEN3W,EAAQjW,QAAWub,IAEf,MAAMtK,EAA0B,kBAApBsK,EAAUhF,OAA8B6U,SAAU,gBAAiBC,KAAM,IAAKrH,OAAQ,UAC5FmH,EAAiB5P,EAAUlC,OAAQkC,EAAU5rB,OAE7Ck9B,EAAMF,EAAY3yB,OAAUC,GAAOsE,OAAQtE,EAAEgX,EAAIma,aAAgB7sB,OAAQ0S,EAAIoa,OAEnFuB,EAAGlsB,KAAMmsB,EAAIvC,KAAM,CAAE94B,EAAG8I,IAAS9I,EAAC,KAAW8I,EAAC,MAAY,EAAI,MAIlEsxB,EAAcgB,IAoBlB,OACIpW,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,iBACXojB,EAAAhlB,EAAA5D,cAAA,KAAGwF,UAAU,gBAAe,2EAC5BojB,EAAAhlB,EAAA5D,cAACk/B,GACGrvB,KAAOA,EACPoa,QAAUA,EACV5B,QAAUA,EACVC,WAAaA,EACbvhB,MAAQA,IAEZ6hB,EAAAhlB,EAAA5D,cAACm/B,GACG1S,UAAYA,EACZC,MAAQA,EACRC,SAAWA,EACXC,WAAaA,EACboB,UAAYA,EACZnB,aAAeA,EACf9lB,MAAQA,IAIRinB,GACIpF,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,iBACXojB,EAAAhlB,EAAA5D,cAAA,KAAGwF,UAAU,qBAAoB,yDAKzCinB,GACI7D,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,iBACXojB,EAAAhlB,EAAA5D,cAAA,UAAQwF,yBAA4BonB,IAAeoB,EAAY,cAAgB,kBAC3EnlB,KAAK,SAAS9G,MAAM,SACpB4pB,QAjFL,KAEViB,IAEDC,GAAc,GAEdiS,MA4EgB/Q,UAAYnB,GACf,mBAOToB,EACIpF,EAAAhlB,EAAA5D,cAAA4oB,EAAAhlB,EAAAklB,SAAA,KACIF,EAAAhlB,EAAA5D,cAAA,OAAKwF,UAAU,mBAEXojB,EAAAhlB,EAAA5D,cAAA,UAAQ8R,GAAG,aAAajJ,KAAK,SAAS+iB,MAAM,eAAepmB,UAAU,0CAA0CypB,IAAMmM,EAAsBzP,QAAU,IA5D3J,MAEd,MACMC,2BADawT,YAAY,WACSC,CAAY,IAAI5oB,QAExDvX,YAAsBg/B,EAAmB3P,QAAS6M,EAAoB7M,QAAS3C,IAuDgG0T,IAAc,OAEzK1W,EAAAhlB,EAAA5D,cAAA,OAAKivB,IAAMiP,GACPtV,EAAAhlB,EAAA5D,cAACu/B,GACG9P,YAAcA,EACdC,iBAAmBA,EACnB7f,KAAO8f,EACP5oB,MAAQA,EACRD,OAAS,IACTuhB,QAAUA,EACVmX,iBAAmBnX,QAASA,EAASqE,MAAOA,GAC5CwB,QAAUa,IAAK,IAAKI,MAAO,GAAIH,OAAQ,GAAII,KAAM,IACjD2H,WAAaA,EACbrK,MAAQA,EACR0O,oBAAsBA,MAMlCxS,EAAAhlB,EAAA5D,cAAA,OAAKwF,2BAA8BuB,EAAQ,IAAM,uBAAyB,MACtE6hB,EAAAhlB,EAAA5D,cAAA,UAAQ6I,KAAK,SAASrD,UAAU,wBAAwBmmB,QAxEtD,KAEtBkR,EAAclN,EAAWtH,EAASqE,EAAO,wCAsEiE,mBAI9F,OAQLiR,eAGfA,EAAKrU,WACDmG,YAAanT,SAAOgQ,WACpBoD,iBAAkBpT,SAAOgQ,WACzBsR,WAAYthB,SAAOgQ,kBCzTFmT,GAIjBv6B,YAAaw6B,GAETj/B,OAAO47B,OAAQ3zB,KAAMg3B,GAErBh3B,KAAK+mB,YAAc1vB,SAASqZ,cAAe,SAI/CumB,QAEIC,iBACIhX,EAAAhlB,EAAA5D,cAAC6/B,IACGpQ,YAAc/mB,KAAK+mB,YACnBC,iBAAmBhnB,KAAKo3B,QACxBlC,WAAal1B,KAAKk1B,aAClBl1B,KAAKo3B,YAjBH","file":"assets/js/48.js","sourcesContent":["export {default as bisect, bisectRight, bisectLeft, bisectCenter} from \"./bisect.js\";\nexport {default as ascending} from \"./ascending.js\";\nexport {default as bisector} from \"./bisector.js\";\nexport {default as count} from \"./count.js\";\nexport {default as cross} from \"./cross.js\";\nexport {default as cumsum} from \"./cumsum.js\";\nexport {default as descending} from \"./descending.js\";\nexport {default as deviation} from \"./deviation.js\";\nexport {default as extent} from \"./extent.js\";\nexport {Adder, fsum, fcumsum} from \"./fsum.js\";\nexport {default as group, flatGroup, flatRollup, groups, index, indexes, rollup, rollups} from \"./group.js\";\nexport {default as groupSort} from \"./groupSort.js\";\nexport {default as bin, default as histogram} from \"./bin.js\"; // Deprecated; use bin.\nexport {default as thresholdFreedmanDiaconis} from \"./threshold/freedmanDiaconis.js\";\nexport {default as thresholdScott} from \"./threshold/scott.js\";\nexport {default as thresholdSturges} from \"./threshold/sturges.js\";\nexport {default as max} from \"./max.js\";\nexport {default as maxIndex} from \"./maxIndex.js\";\nexport {default as mean} from \"./mean.js\";\nexport {default as median} from \"./median.js\";\nexport {default as merge} from \"./merge.js\";\nexport {default as min} from \"./min.js\";\nexport {default as minIndex} from \"./minIndex.js\";\nexport {default as mode} from \"./mode.js\";\nexport {default as nice} from \"./nice.js\";\nexport {default as pairs} from \"./pairs.js\";\nexport {default as permute} from \"./permute.js\";\nexport {default as quantile, quantileSorted} from \"./quantile.js\";\nexport {default as quickselect} from \"./quickselect.js\";\nexport {default as range} from \"./range.js\";\nexport {default as rank} from \"./rank.js\";\nexport {default as least} from \"./least.js\";\nexport {default as leastIndex} from \"./leastIndex.js\";\nexport {default as greatest} from \"./greatest.js\";\nexport {default as greatestIndex} from \"./greatestIndex.js\";\nexport {default as scan} from \"./scan.js\"; // Deprecated; use leastIndex.\nexport {default as shuffle, shuffler} from \"./shuffle.js\";\nexport {default as sum} from \"./sum.js\";\nexport {default as ticks, tickIncrement, tickStep} from \"./ticks.js\";\nexport {default as transpose} from \"./transpose.js\";\nexport {default as variance} from \"./variance.js\";\nexport {default as zip} from \"./zip.js\";\nexport {default as every} from \"./every.js\";\nexport {default as some} from \"./some.js\";\nexport {default as filter} from \"./filter.js\";\nexport {default as map} from \"./map.js\";\nexport {default as reduce} from \"./reduce.js\";\nexport {default as reverse} from \"./reverse.js\";\nexport {default as sort} from \"./sort.js\";\nexport {default as difference} from \"./difference.js\";\nexport {default as disjoint} from \"./disjoint.js\";\nexport {default as intersection} from \"./intersection.js\";\nexport {default as subset} from \"./subset.js\";\nexport {default as superset} from \"./superset.js\";\nexport {default as union} from \"./union.js\";\nexport {InternMap, InternSet} from \"internmap\";\n","export {default as create} from \"./create.js\";\nexport {default as creator} from \"./creator.js\";\nexport {default as local} from \"./local.js\";\nexport {default as matcher} from \"./matcher.js\";\nexport {default as namespace} from \"./namespace.js\";\nexport {default as namespaces} from \"./namespaces.js\";\nexport {default as pointer} from \"./pointer.js\";\nexport {default as pointers} from \"./pointers.js\";\nexport {default as select} from \"./select.js\";\nexport {default as selectAll} from \"./selectAll.js\";\nexport {default as selection} from \"./selection/index.js\";\nexport {default as selector} from \"./selector.js\";\nexport {default as selectorAll} from \"./selectorAll.js\";\nexport {styleValue as style} from \"./selection/style.js\";\nexport {default as window} from \"./window.js\";\n","import { domToPng } from 'modern-screenshot';\r\n\r\n\r\nconst exportElementAsImage = async ( el, trigger, imageFileName = 'chart.png', headerRef, subHeaderRef ) => {\r\n\r\n trigger.style.display = 'none';\r\n\r\n if ( headerRef ) headerRef.style.display = 'block';\r\n\r\n if ( subHeaderRef ) subHeaderRef.style.display = 'block';\r\n\r\n domToPng( el ).then( function ( dataUrl ) {\r\n\r\n // download( dataUrl, imageFileName );\r\n const link = document.createElement( 'a' );\r\n\r\n link.download = imageFileName;\r\n link.href = dataUrl;\r\n link.click();\r\n\r\n trigger.style.display = 'flex';\r\n\r\n if ( headerRef ) headerRef.style.display = 'none';\r\n\r\n if ( subHeaderRef ) subHeaderRef.style.display = 'none';\r\n\r\n } );\r\n\r\n};\r\n\r\nexport default exportElementAsImage;","export {\n default as scaleBand,\n point as scalePoint\n} from \"./band.js\";\n\nexport {\n default as scaleIdentity\n} from \"./identity.js\";\n\nexport {\n default as scaleLinear\n} from \"./linear.js\";\n\nexport {\n default as scaleLog\n} from \"./log.js\";\n\nexport {\n default as scaleSymlog\n} from \"./symlog.js\";\n\nexport {\n default as scaleOrdinal,\n implicit as scaleImplicit\n} from \"./ordinal.js\";\n\nexport {\n default as scalePow,\n sqrt as scaleSqrt\n} from \"./pow.js\";\n\nexport {\n default as scaleRadial\n} from \"./radial.js\";\n\nexport {\n default as scaleQuantile\n} from \"./quantile.js\";\n\nexport {\n default as scaleQuantize\n} from \"./quantize.js\";\n\nexport {\n default as scaleThreshold\n} from \"./threshold.js\";\n\nexport {\n default as scaleTime\n} from \"./time.js\";\n\nexport {\n default as scaleUtc\n} from \"./utcTime.js\";\n\nexport {\n default as scaleSequential,\n sequentialLog as scaleSequentialLog,\n sequentialPow as scaleSequentialPow,\n sequentialSqrt as scaleSequentialSqrt,\n sequentialSymlog as scaleSequentialSymlog\n} from \"./sequential.js\";\n\nexport {\n default as scaleSequentialQuantile\n} from \"./sequentialQuantile.js\";\n\nexport {\n default as scaleDiverging,\n divergingLog as scaleDivergingLog,\n divergingPow as scaleDivergingPow,\n divergingSqrt as scaleDivergingSqrt,\n divergingSymlog as scaleDivergingSymlog\n} from \"./diverging.js\";\n\nexport {\n default as tickFormat\n} from \"./tickFormat.js\";\n","(function(h,C){typeof exports==\"object\"&&typeof module!=\"undefined\"?C(exports):typeof define==\"function\"&&define.amd?define([\"exports\"],C):(h=typeof globalThis!=\"undefined\"?globalThis:h||self,C(h.modernScreenshot={}))})(this,function(h){var Ue;\"use strict\";var Qt=Object.defineProperty,Zt=Object.defineProperties;var er=Object.getOwnPropertyDescriptors;var Z=Object.getOwnPropertySymbols;var Le=Object.prototype.hasOwnProperty,Me=Object.prototype.propertyIsEnumerable;var Oe=Math.pow,Be=(h,C,T)=>C in h?Qt(h,C,{enumerable:!0,configurable:!0,writable:!0,value:T}):h[C]=T,D=(h,C)=>{for(var T in C||(C={}))Le.call(C,T)&&Be(h,T,C[T]);if(Z)for(var T of Z(C))Me.call(C,T)&&Be(h,T,C[T]);return h},L=(h,C)=>Zt(h,er(C));var We=(h,C)=>{var T={};for(var N in h)Le.call(h,N)&&C.indexOf(N)<0&&(T[N]=h[N]);if(h!=null&&Z)for(var N of Z(h))C.indexOf(N)<0&&Me.call(h,N)&&(T[N]=h[N]);return T};var E=(h,C,T)=>new Promise((N,M)=>{var z=R=>{try{W(T.next(R))}catch(j){M(j)}},O=R=>{try{W(T.throw(R))}catch(j){M(j)}},W=R=>R.done?N(R.value):Promise.resolve(R.value).then(z,O);W((T=T.apply(h,C)).next())});function C(e,t){return e[13]=1,e[14]=t>>8,e[15]=t&255,e[16]=t>>8,e[17]=t&255,e}const T=\"p\".charCodeAt(0),N=\"H\".charCodeAt(0),M=\"Y\".charCodeAt(0),z=\"s\".charCodeAt(0);let O;function W(){const e=new Int32Array(256);for(let t=0;t<256;t++){let r=t;for(let n=0;n<8;n++)r=r&1?3988292384^r>>>1:r>>>1;e[t]=r}return e}function R(e){let t=-1;O||(O=W());for(let r=0;r>>8;return t^-1}function j(e){const t=e.length-1;for(let r=t;r>=4;r--)if(e[r-4]===9&&e[r-3]===T&&e[r-2]===N&&e[r-1]===M&&e[r]===z)return r-3;return 0}function ae(e,t,r=!1){const n=new Uint8Array(13);t*=39.3701,n[0]=T,n[1]=N,n[2]=M,n[3]=z,n[4]=t>>>24,n[5]=t>>>16,n[6]=t>>>8,n[7]=t&255,n[8]=n[4],n[9]=n[5],n[10]=n[6],n[11]=n[7],n[12]=1;const a=R(n),s=new Uint8Array(4);if(s[0]=a>>>24,s[1]=a>>>16,s[2]=a>>>8,s[3]=a&255,r){const o=j(e);return e.set(n,o),e.set(s,o+13),e}else{const o=new Uint8Array(4);o[0]=0,o[1]=0,o[2]=0,o[3]=9;const i=new Uint8Array(54);return i.set(e,0),i.set(o,33),i.set(n,37),i.set(s,50),i}}const je=\"AAlwSFlz\",qe=\"AAAJcEhZ\",Ve=\"AAAACXBI\";function He(e){let t=e.indexOf(je);return t===-1&&(t=e.indexOf(qe)),t===-1&&(t=e.indexOf(Ve)),t}const ee=\"[modern-screenshot]\",F=typeof window!=\"undefined\",ze=F&&\"Worker\"in window,se=F&&\"atob\"in window,Xe=F&&\"btoa\"in window,te=F?(Ue=window.navigator)==null?void 0:Ue.userAgent:\"\",ie=te.includes(\"Chrome\"),X=te.includes(\"AppleWebKit\")&&!ie,re=te.includes(\"Firefox\"),Ge=e=>e&&\"__CONTEXT__\"in e,Ye=e=>e.constructor.name===\"CSSFontFaceRule\",Je=e=>e.constructor.name===\"CSSImportRule\",k=e=>e.nodeType===1,q=e=>typeof e.className==\"object\",ce=e=>e.tagName===\"image\",Ke=e=>e.tagName===\"use\",V=e=>k(e)&&typeof e.style!=\"undefined\"&&!q(e),Qe=e=>e.nodeType===8,Ze=e=>e.nodeType===3,_=e=>e.tagName===\"IMG\",G=e=>e.tagName===\"VIDEO\",et=e=>e.tagName===\"CANVAS\",le=e=>e.tagName===\"TEXTAREA\",tt=e=>e.tagName===\"INPUT\",rt=e=>e.tagName===\"STYLE\",nt=e=>e.tagName===\"SCRIPT\",ot=e=>e.tagName===\"SELECT\",at=e=>e.tagName===\"SLOT\",st=e=>e.tagName===\"IFRAME\",A=(...e)=>console.warn(ee,...e),it=e=>console.time(`${ee} ${e}`),ct=e=>console.timeEnd(`${ee} ${e}`),lt=e=>{var r;const t=(r=e==null?void 0:e.createElement)==null?void 0:r.call(e,\"canvas\");return t&&(t.height=t.width=1),t&&\"toDataURL\"in t&&Boolean(t.toDataURL(\"image/webp\").includes(\"image/webp\"))},ne=e=>e.startsWith(\"data:\");function ue(e,t){if(e.match(/^[a-z]+:\\/\\//i))return e;if(F&&e.match(/^\\/\\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i)||!F)return e;const r=Y().implementation.createHTMLDocument(),n=r.createElement(\"base\"),a=r.createElement(\"a\");return r.head.appendChild(n),r.body.appendChild(a),t&&(n.href=t),a.href=e,a.href}function Y(e){var t;return(t=e&&k(e)?e==null?void 0:e.ownerDocument:e)!=null?t:window.document}const J=\"http://www.w3.org/2000/svg\";function fe(e,t,r){const n=Y(r).createElementNS(J,\"svg\");return n.setAttributeNS(null,\"width\",e.toString()),n.setAttributeNS(null,\"height\",t.toString()),n.setAttributeNS(null,\"viewBox\",`0 0 ${e} ${t}`),n}function de(e,t){let r=new XMLSerializer().serializeToString(e);return t&&(r=r.replace(/[\\u0000-\\u0008\\u000B\\u000C\\u000E-\\u001F\\uD800-\\uDFFF\\uFFFE\\uFFFF]/ug,\"\")),`data:image/svg+xml;charset=utf-8,${encodeURIComponent(r)}`}function ut(e,t=\"image/png\",r=1){return E(this,null,function*(){try{return yield new Promise((n,a)=>{e.toBlob(s=>{s?n(s):a(new Error(\"Blob is null\"))},t,r)})}catch(n){if(se)return A(\"Failed canvas to blob\",{type:t,quality:r},n),ft(e.toDataURL(t,r));throw n}})}function ft(e){var i,l;const[t,r]=e.split(\",\"),n=(l=(i=t.match(/data:(.+);/))==null?void 0:i[1])!=null?l:void 0,a=window.atob(r),s=a.length,o=new Uint8Array(s);for(let u=0;u{const a=new FileReader;a.onload=()=>r(a.result),a.onerror=()=>n(a.error),a.onabort=()=>n(new Error(`Failed read blob to ${t}`)),t===\"dataUrl\"?a.readAsDataURL(e):t===\"arrayBuffer\"&&a.readAsArrayBuffer(e)})}const dt=e=>me(e,\"dataUrl\"),mt=e=>me(e,\"arrayBuffer\");function U(e,t){const r=Y(t).createElement(\"img\");return r.decoding=\"sync\",r.loading=\"eager\",r.src=e,r}function $(e,t){return new Promise(r=>{const{timeout:n,ownerDocument:a,onError:s}=t!=null?t:{},o=typeof e==\"string\"?U(e,Y(a)):e;let i=null,l=null;function u(){r(o),i&&clearTimeout(i),l==null||l()}if(n&&(i=setTimeout(u,n)),G(o)){const c=o.currentSrc||o.src;if(!c)return o.poster?$(o.poster,t).then(r):u();if(o.readyState>=2)return u();const f=u,d=m=>{A(\"Failed video load\",c,m),s==null||s(m),u()};l=()=>{o.removeEventListener(\"loadeddata\",f),o.removeEventListener(\"error\",d)},o.addEventListener(\"loadeddata\",f,{once:!0}),o.addEventListener(\"error\",d,{once:!0})}else{const c=ce(o)?o.href.baseVal:o.currentSrc||o.src;if(!c)return u();const f=()=>E(this,null,function*(){if(_(o)&&\"decode\"in o)try{yield o.decode()}catch(m){A(\"Failed to decode image, trying to render anyway\",o.dataset.originalSrc||c,m)}u()}),d=m=>{A(\"Failed image load\",o.dataset.originalSrc||c,m),u()};if(_(o)&&o.complete)return f();l=()=>{o.removeEventListener(\"load\",f),o.removeEventListener(\"error\",d)},o.addEventListener(\"load\",f,{once:!0}),o.addEventListener(\"error\",d,{once:!0})}})}function ge(e,t){return E(this,null,function*(){V(e)&&(_(e)||G(e)?yield $(e,{timeout:t}):yield Promise.all([\"img\",\"video\"].flatMap(r=>Array.from(e.querySelectorAll(r)).map(n=>$(n,{timeout:t})))))})}const he=function(){let t=0;const r=()=>`0000${(Math.random()*Oe(36,4)<<0).toString(36)}`.slice(-4);return()=>(t+=1,`u${r()}${t}`)}();function we(e){return e==null?void 0:e.split(\",\").map(t=>t.trim().replace(/\"|'/g,\"\").toLowerCase()).filter(Boolean)}function gt(e){return{time:t=>e&&it(t),timeEnd:t=>e&&ct(t),warn:(...t)=>e&&A(...t)}}function ht(e){return{cache:e?\"no-cache\":\"force-cache\"}}function x(e,t){return E(this,null,function*(){return Ge(e)?e:pe(e,L(D({},t),{autoDestruct:!0}))})}function pe(e,t){return E(this,null,function*(){var m,w,p,b,g;const{scale:r=1,workerUrl:n,workerNumber:a=1}=t||{},s=Boolean(t==null?void 0:t.debug),o=(m=t==null?void 0:t.features)!=null?m:!0,i=(w=e.ownerDocument)!=null?w:F?window.document:void 0,l=(b=(p=e.ownerDocument)==null?void 0:p.defaultView)!=null?b:F?window:void 0,u=new Map,c=L(D({width:0,height:0,quality:1,type:\"image/png\",scale:r,backgroundColor:null,style:null,filter:null,maximumCanvasSize:0,timeout:3e4,progress:null,debug:s,fetch:D({requestInit:ht((g=t==null?void 0:t.fetch)==null?void 0:g.bypassingCache),placeholderImage:\"data:image/png;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\",bypassingCache:!1},t==null?void 0:t.fetch),fetchFn:null,font:{},drawImageInterval:100,workerUrl:null,workerNumber:a,onCloneNode:null,onEmbedNode:null,onCreateForeignObjectSvg:null,includeStyleProperties:null,autoDestruct:!1},t),{__CONTEXT__:!0,log:gt(s),node:e,ownerDocument:i,ownerWindow:l,dpi:r===1?null:96*r,svgStyleElement:ye(i),svgDefsElement:i==null?void 0:i.createElementNS(J,\"defs\"),svgStyles:new Map,defaultComputedStyles:new Map,workers:[...new Array(ze&&n&&a?a:0)].map(()=>{try{const S=new Worker(n);return S.onmessage=y=>E(this,null,function*(){var P,_e,Q,$e;const{url:v,result:I}=y.data;I?(_e=(P=u.get(v))==null?void 0:P.resolve)==null||_e.call(P,I):($e=(Q=u.get(v))==null?void 0:Q.reject)==null||$e.call(Q,new Error(`Error receiving message from worker: ${v}`))}),S.onmessageerror=y=>{var I,P;const{url:v}=y.data;(P=(I=u.get(v))==null?void 0:I.reject)==null||P.call(I,new Error(`Error receiving message from worker: ${v}`))},S}catch(S){return A(\"Failed to new Worker\",S),null}}).filter(Boolean),fontFamilies:new Set,fontCssTexts:new Map,acceptOfImage:`${[lt(i)&&\"image/webp\",\"image/svg+xml\",\"image/*\",\"*/*\"].filter(Boolean).join(\",\")};q=0.8`,requests:u,drawImageCount:0,tasks:[],features:o,isEnable:S=>{var y,v;return S===\"restoreScrollPosition\"?typeof o==\"boolean\"?!1:(y=o[S])!=null?y:!1:typeof o==\"boolean\"?o:(v=o[S])!=null?v:!0}});c.log.time(\"wait until load\"),yield ge(e,c.timeout),c.log.timeEnd(\"wait until load\");const{width:f,height:d}=wt(e,c);return c.width=f,c.height=d,c})}function ye(e){if(!e)return;const t=e.createElement(\"style\"),r=t.ownerDocument.createTextNode(`\n.______background-clip--text {\n background-clip: text;\n -webkit-background-clip: text;\n}\n`);return t.appendChild(r),t}function wt(e,t){let{width:r,height:n}=t;if(k(e)&&(!r||!n)){const a=e.getBoundingClientRect();r=r||a.width||Number(e.getAttribute(\"width\"))||0,n=n||a.height||Number(e.getAttribute(\"height\"))||0}return{width:r,height:n}}function pt(e,t){return E(this,null,function*(){const{log:r,timeout:n,drawImageCount:a,drawImageInterval:s}=t;r.time(\"image to canvas\");const o=yield $(e,{timeout:n}),{canvas:i,context2d:l}=yt(e.ownerDocument,t),u=()=>{try{l==null||l.drawImage(o,0,0,i.width,i.height)}catch(c){A(\"Failed to drawImage\",c)}};if(u(),t.isEnable(\"fixSvgXmlDecode\"))for(let c=0;c{setTimeout(()=>{u(),f()},c+s)});return t.drawImageCount=0,r.timeEnd(\"image to canvas\"),i})}function yt(e,t){const{width:r,height:n,scale:a,backgroundColor:s,maximumCanvasSize:o}=t,i=e.createElement(\"canvas\");i.width=Math.floor(r*a),i.height=Math.floor(n*a),i.style.width=`${r}px`,i.style.height=`${n}px`,o&&(i.width>o||i.height>o)&&(i.width>o&&i.height>o?i.width>i.height?(i.height*=o/i.width,i.width=o):(i.width*=o/i.height,i.height=o):i.width>o?(i.height*=o/i.width,i.width=o):(i.width*=o/i.height,i.height=o));const l=i.getContext(\"2d\");return l&&s&&(l.fillStyle=s,l.fillRect(0,0,i.width,i.height)),{canvas:i,context2d:l}}const bt=[\"width\",\"height\",\"-webkit-text-fill-color\"],St=[\"stroke\",\"fill\"];function be(e,t,r){var b;const{defaultComputedStyles:n,ownerDocument:a}=r,s=e.nodeName.toLowerCase(),o=q(e)&&s!==\"svg\",i=o?St.map(g=>[g,e.getAttribute(g)]).filter(([,g])=>g!==null):[],l=[o&&\"svg\",s,i.map((g,S)=>`${g}=${S}`).join(\",\"),t].filter(Boolean).join(\":\");if(n.has(l))return n.get(l);let u=r.sandbox;if(!u)try{a&&(u=a.createElement(\"iframe\"),u.id=`__SANDBOX__-${he()}`,u.width=\"0\",u.height=\"0\",u.style.visibility=\"hidden\",u.style.position=\"fixed\",a.body.appendChild(u),(b=u.contentWindow)==null||b.document.write(''),r.sandbox=u)}catch(g){A(\"Failed to create iframe sandbox\",g)}if(!u)return new Map;const c=u.contentWindow;if(!c)return new Map;const f=c.document;let d,m;o?(d=f.createElementNS(J,\"svg\"),m=d.ownerDocument.createElementNS(d.namespaceURI,s),i.forEach(([g,S])=>{m.setAttributeNS(null,g,S)}),d.appendChild(m)):d=m=f.createElement(s),m.textContent=\" \",f.body.appendChild(d);const w=c.getComputedStyle(m,t),p=new Map;for(let g=w.length,S=0;Sn.set(f,c));function o(l){const u=e.getPropertyValue(l),c=e.getPropertyPriority(l),f=l.lastIndexOf(\"-\"),d=f>-1?l.substring(0,f):void 0;if(d){let m=s.get(d);m||(m=new Map,s.set(d,m)),m.set(l,[u,c])}t.get(l)===u&&!c||(d?a.push(d):n.set(l,[u,c]))}return n}const Et=[\":before\",\":after\"],Ct=[\":-webkit-scrollbar\",\":-webkit-scrollbar-button\",\":-webkit-scrollbar-thumb\",\":-webkit-scrollbar-track\",\":-webkit-scrollbar-track-piece\",\":-webkit-scrollbar-corner\",\":-webkit-resizer\"];function Tt(e,t,r,n){const{ownerWindow:a,svgStyleElement:s,svgStyles:o,currentNodeStyle:i}=n;if(!s||!a)return;function l(u){var S;const c=a.getComputedStyle(e,u);let f=c.getPropertyValue(\"content\");if(!f||f===\"none\")return;f=f.replace(/(')|(\")|(counter\\(.+\\))/g,\"\");const d=[he()],m=be(e,u,n);i==null||i.forEach((y,v)=>{m.delete(v)});const w=Se(c,m,n.includeStyleProperties);w.delete(\"content\"),w.delete(\"-webkit-locale\"),((S=w.get(\"background-clip\"))==null?void 0:S[0])===\"text\"&&t.classList.add(\"______background-clip--text\");const p=[`content: '${f}';`];if(w.forEach(([y,v],I)=>{p.push(`${I}: ${y}${v?\" !important\":\"\"};`)}),p.length===1)return;try{t.className=[t.className,...d].join(\" \")}catch(y){return}const b=p.join(`\n `);let g=o.get(b);g||(g=[],o.set(b,g)),g.push(`.${d[0]}:${u}`)}Et.forEach(l),r&&Ct.forEach(l)}function vt(e,t){le(e)&&(t.innerHTML=e.value),(le(e)||tt(e)||ot(e))&&t.setAttribute(\"value\",e.value)}function At(e,t,r,n){var f,d,m,w;const{ownerWindow:a,includeStyleProperties:s,currentParentNodeStyle:o}=n,i=t.style,l=a.getComputedStyle(e),u=be(e,null,n);o==null||o.forEach((p,b)=>{u.delete(b)});const c=Se(l,u,s);return c.delete(\"transition-property\"),c.delete(\"all\"),c.delete(\"d\"),c.delete(\"content\"),r&&(c.delete(\"margin-top\"),c.delete(\"margin-right\"),c.delete(\"margin-bottom\"),c.delete(\"margin-left\"),c.delete(\"margin-block-start\"),c.delete(\"margin-block-end\"),c.delete(\"margin-inline-start\"),c.delete(\"margin-inline-end\"),c.set(\"box-sizing\",[\"border-box\",\"\"])),((f=c.get(\"background-clip\"))==null?void 0:f[0])===\"text\"&&t.classList.add(\"______background-clip--text\"),ie&&(c.has(\"font-kerning\")||c.set(\"font-kerning\",[\"normal\",\"\"]),(((d=c.get(\"overflow-x\"))==null?void 0:d[0])===\"hidden\"||((m=c.get(\"overflow-y\"))==null?void 0:m[0])===\"hidden\")&&((w=c.get(\"text-overflow\"))==null?void 0:w[0])===\"ellipsis\"&&e.scrollWidth===e.clientWidth&&c.set(\"text-overflow\",[\"clip\",\"\"])),c.forEach(([p,b],g)=>{i.setProperty(g,p,b)}),c}function Nt(e,t){var r;try{if((r=e==null?void 0:e.contentDocument)!=null&&r.body)return oe(e.contentDocument.body,t)}catch(n){A(\"Failed to clone iframe\",n)}return e.cloneNode(!1)}function Ee(e){if(e.ownerDocument)try{const a=e.toDataURL();if(a!==\"data:,\")return U(a,e.ownerDocument)}catch(a){}const t=e.cloneNode(!1),r=e.getContext(\"2d\"),n=t.getContext(\"2d\");try{return r&&n&&n.putImageData(r.getImageData(0,0,e.width,e.height),0,0),t}catch(a){A(\"Failed to clone canvas\",a)}return t}function It(e){return E(this,null,function*(){if(e.ownerDocument&&!e.currentSrc&&e.poster)return U(e.poster,e.ownerDocument);const t=e.cloneNode(!1);t.crossOrigin=\"anonymous\",e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc);const r=t.ownerDocument;if(r){let n=!0;if(yield $(t,{onError:()=>n=!1}),!n)return e.poster?U(e.poster,e.ownerDocument):t;t.currentTime=e.currentTime,yield new Promise(s=>{t.addEventListener(\"seeked\",s,{once:!0})});const a=r.createElement(\"canvas\");a.width=e.offsetWidth,a.height=e.offsetHeight;try{const s=a.getContext(\"2d\");s&&s.drawImage(t,0,0,a.width,a.height)}catch(s){return A(\"Failed to clone video\",s),e.poster?U(e.poster,e.ownerDocument):t}return Ee(a)}return t})}function kt(e){const t=e.cloneNode(!1);return e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc,t.srcset=\"\"),t.loading===\"lazy\"&&(t.loading=\"eager\"),t}function xt(e,t){return et(e)?Ee(e):st(e)?Nt(e,t):_(e)?kt(e):G(e)?It(e):e.cloneNode(!1)}const Ce=new Set([\"symbol\"]);function Te(e,t,r,n){return E(this,null,function*(){if(k(r)&&(rt(r)||nt(r))||n.filter&&!n.filter(r))return;Ce.has(t.nodeName)||Ce.has(r.nodeName)?n.currentParentNodeStyle=void 0:n.currentParentNodeStyle=n.currentNodeStyle;const a=yield oe(r,n);n.isEnable(\"restoreScrollPosition\")&&Dt(e,a),t.appendChild(a)})}function ve(e,t,r){return E(this,null,function*(){var a,s;const n=(s=k(e)?(a=e.shadowRoot)==null?void 0:a.firstChild:void 0)!=null?s:e.firstChild;for(let o=n;o;o=o.nextSibling)if(!Qe(o))if(k(o)&&at(o)&&typeof o.assignedNodes==\"function\"){const i=o.assignedNodes();for(let l=0;le.clientHeight||e.scrollWidth>e.clientWidth)}return Tt(e,f,m,t),vt(e,f),(c=we((u=d.get(\"font-family\"))==null?void 0:u[0]))==null||c.forEach(w=>s.add(w)),G(e)||(yield ve(e,f,t)),f}const o=e.cloneNode(!1);return yield ve(e,o,t),o})}function Ae(e){if(e.ownerDocument=void 0,e.ownerWindow=void 0,e.svgStyleElement=void 0,e.svgDefsElement=void 0,e.svgStyles.clear(),e.defaultComputedStyles.clear(),e.sandbox){try{e.sandbox.remove()}catch(t){}e.sandbox=void 0}e.workers=[],e.fontFamilies.clear(),e.fontCssTexts.clear(),e.requests.clear(),e.tasks=[]}function Ft(e){const i=e,{url:t,timeout:r,responseType:n}=i,a=We(i,[\"url\",\"timeout\",\"responseType\"]),s=new AbortController,o=r?setTimeout(()=>s.abort(),r):void 0;return fetch(t,D({signal:s.signal},a)).then(l=>{if(!l.ok)throw new Error(\"Failed fetch, not 2xx response\",{cause:l});switch(n){case\"dataUrl\":return l.blob().then(dt);case\"text\":default:return l.text()}}).finally(()=>clearTimeout(o))}function H(e,t){const{url:r,requestType:n=\"text\",responseType:a=\"text\",imageDom:s}=t;let o=r;const{timeout:i,acceptOfImage:l,requests:u,fetchFn:c,fetch:{requestInit:f,bypassingCache:d,placeholderImage:m},workers:w}=e;n===\"image\"&&(X||re)&&e.drawImageCount++;let p=u.get(r);if(!p){d&&d instanceof RegExp&&d.test(o)&&(o+=(/\\?/.test(o)?\"&\":\"?\")+new Date().getTime());const b=D({url:o,timeout:i,responseType:a,headers:n===\"image\"?{accept:l}:void 0},f);p={type:n,resolve:void 0,reject:void 0,response:null},p.response=(()=>E(this,null,function*(){if(c&&n===\"image\"){const g=yield c(r);if(g)return g}return!X&&r.startsWith(\"http\")&&w.length?new Promise((g,S)=>{w[u.size&w.length-1].postMessage(D({rawUrl:r},b)),p.resolve=g,p.reject=S}):Ft(b)}))().catch(g=>{if(u.delete(r),n===\"image\"&&m)return A(\"Failed to fetch image base64, trying to use placeholder image\",o),typeof m==\"string\"?m:m(s);throw g}),u.set(r,p)}return p.response}function Ne(e,t,r,n){return E(this,null,function*(){if(!Ie(e))return e;for(const[a,s]of Ut(e,t))try{const o=yield H(r,{url:s,requestType:n?\"image\":\"text\",responseType:\"dataUrl\"});e=e.replace(_t(a),`$1${o}$3`)}catch(o){A(\"Failed to fetch css data url\",a,o)}return e})}function Ie(e){return/url\\((['\"]?)([^'\"]+?)\\1\\)/.test(e)}const ke=/url\\((['\"]?)([^'\"]+?)\\1\\)/g;function Ut(e,t){const r=[];return e.replace(ke,(n,a,s)=>(r.push([s,ue(s,t)]),n)),r.filter(([n])=>!ne(n))}function _t(e){const t=e.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g,\"\\\\$1\");return new RegExp(`(url\\\\(['\"]?)(${t})(['\"]?\\\\))`,\"g\")}function $t(e,t){return E(this,null,function*(){const{ownerDocument:r,svgStyleElement:n,fontFamilies:a,fontCssTexts:s,tasks:o,font:i}=t;if(!(!r||!n||!a.size))if(i&&i.cssText){const l=De(i.cssText,t);n.appendChild(r.createTextNode(`${l}\n`))}else{const l=Array.from(r.styleSheets).filter(c=>{try{return\"cssRules\"in c&&Boolean(c.cssRules.length)}catch(f){return A(`Error while reading CSS rules from ${c.href}`,f),!1}});yield Promise.all(l.flatMap(c=>Array.from(c.cssRules).map((f,d)=>E(this,null,function*(){if(Je(f)){let m=d+1;const w=f.href;let p=\"\";try{p=yield H(t,{url:w,requestType:\"text\",responseType:\"text\"})}catch(g){A(`Error fetch remote css import from ${w}`,g)}const b=p.replace(ke,(g,S,y)=>g.replace(y,ue(y,w)));for(const g of Lt(b))try{c.insertRule(g,g.startsWith(\"@import\")?m+=1:c.cssRules.length)}catch(S){A(\"Error inserting rule from remote css import\",{rule:g,error:S})}}})))),l.flatMap(c=>Array.from(c.cssRules)).filter(c=>{var f;return Ye(c)&&Ie(c.style.getPropertyValue(\"src\"))&&((f=we(c.style.getPropertyValue(\"font-family\")))==null?void 0:f.some(d=>a.has(d)))}).forEach(c=>{const f=c,d=s.get(f.cssText);d?n.appendChild(r.createTextNode(`${d}\n`)):o.push(Ne(f.cssText,f.parentStyleSheet?f.parentStyleSheet.href:null,t).then(m=>{m=De(m,t),s.set(f.cssText,m),n.appendChild(r.createTextNode(`${m}\n`))}))})}})}const Bt=/(\\/\\*[\\s\\S]*?\\*\\/)/gi,xe=/((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})/gi;function Lt(e){if(e==null)return[];const t=[];let r=e.replace(Bt,\"\");for(;;){const s=xe.exec(r);if(!s)break;t.push(s[0])}r=r.replace(xe,\"\");const n=/@import[\\s\\S]*?url\\([^)]*\\)[\\s\\S]*?;/gi,a=new RegExp(\"((\\\\s*?(?:\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/)?\\\\s*?@media[\\\\s\\\\S]*?){([\\\\s\\\\S]*?)}\\\\s*?})|(([\\\\s\\\\S]*?){([\\\\s\\\\S]*?)})\",\"gi\");for(;;){let s=n.exec(r);if(s)a.lastIndex=n.lastIndex;else if(s=a.exec(r),s)n.lastIndex=a.lastIndex;else break;t.push(s[0])}return t}const Mt=/url\\([^)]+\\)\\s*format\\(([\"']?)([^\"']+)\\1\\)/g,Ot=/src:\\s*(?:url\\([^)]+\\)\\s*format\\([^)]+\\)[,;]\\s*)+/g;function De(e,t){const{font:r}=t,n=r?r==null?void 0:r.preferredFormat:void 0;return n?e.replace(Ot,a=>{for(;;){const[s,,o]=Mt.exec(a)||[];if(!o)return\"\";if(o===n)return`src: ${s};`}}):e}function Wt(e,t){if(_(e)){const r=e.currentSrc||e.src;if(!ne(r))return[H(t,{url:r,imageDom:e,requestType:\"image\",responseType:\"dataUrl\"}).then(n=>{n&&(e.srcset=\"\",e.dataset.originalSrc=r,e.src=n||\"\")})];(X||re)&&t.drawImageCount++}else if(q(e)&&!ne(e.href.baseVal)){const r=e.href.baseVal;return[H(t,{url:r,imageDom:e,requestType:\"image\",responseType:\"dataUrl\"}).then(n=>{n&&(e.dataset.originalSrc=r,e.href.baseVal=n||\"\")})]}return[]}const jt=[\"background-image\",\"border-image-source\",\"-webkit-border-image\",\"-webkit-mask-image\",\"list-style-image\"];function qt(e,t){return jt.map(r=>{const n=e.getPropertyValue(r);return!n||n===\"none\"?null:((X||re)&&t.drawImageCount++,Ne(n,null,t,!0).then(a=>{!a||n===a||e.setProperty(r,a,e.getPropertyPriority(r))}))}).filter(Boolean)}function Vt(e,t){var i;const{ownerDocument:r,svgDefsElement:n}=t,a=(i=e.getAttribute(\"href\"))!=null?i:e.getAttribute(\"xlink:href\");if(!a)return[];const[s,o]=a.split(\"#\");if(o){const l=`#${o}`,u=r==null?void 0:r.querySelector(`svg ${l}`);if(s&&e.setAttribute(\"href\",l),n!=null&&n.querySelector(l))return[];if(u)return n==null||n.appendChild(u.cloneNode(!0)),[];if(s)return[H(t,{url:s,responseType:\"text\"}).then(c=>{n==null||n.insertAdjacentHTML(\"beforeend\",c)})]}return[]}function Re(e,t){const{tasks:r}=t;k(e)&&((_(e)||ce(e))&&r.push(...Wt(e,t)),Ke(e)&&r.push(...Vt(e,t))),V(e)&&r.push(...qt(e.style,t)),e.childNodes.forEach(n=>{Re(n,t)})}function Pe(e,t){return E(this,null,function*(){const r=yield x(e,t);if(k(r.node)&&q(r.node))return r.node;const{ownerDocument:n,log:a,tasks:s,svgStyleElement:o,svgDefsElement:i,svgStyles:l,font:u,progress:c,autoDestruct:f,onCloneNode:d,onEmbedNode:m,onCreateForeignObjectSvg:w}=r;a.time(\"clone node\");const p=yield oe(r.node,r,!0);if(o&&n){let v=\"\";l.forEach((I,P)=>{v+=`${I.join(`,\n`)} {\n ${P}\n}\n`}),o.appendChild(n.createTextNode(v))}a.timeEnd(\"clone node\"),d==null||d(p),u!==!1&&k(p)&&(a.time(\"embed web font\"),yield $t(p,r),a.timeEnd(\"embed web font\")),a.time(\"embed node\"),Re(p,r);const b=s.length;let g=0;const S=()=>E(this,null,function*(){for(;;){const v=s.pop();if(!v)break;try{yield v}catch(I){A(\"Failed to run task\",I)}c==null||c(++g,b)}});c==null||c(g,b),yield Promise.all([...Array(4)].map(S)),a.timeEnd(\"embed node\"),m==null||m(p);const y=Ht(p,r);return i&&y.insertBefore(i,y.children[0]),o&&y.insertBefore(o,y.children[0]),f&&Ae(r),w==null||w(y),y})}function Ht(e,t){const{width:r,height:n}=t,a=fe(r,n,e.ownerDocument),s=a.ownerDocument.createElementNS(a.namespaceURI,\"foreignObject\");return s.setAttributeNS(null,\"x\",\"0%\"),s.setAttributeNS(null,\"y\",\"0%\"),s.setAttributeNS(null,\"width\",\"100%\"),s.setAttributeNS(null,\"height\",\"100%\"),s.append(e),a.appendChild(s),a}function K(e,t){return E(this,null,function*(){var o;const r=yield x(e,t),n=yield Pe(r),a=de(n,r.isEnable(\"removeControlCharacter\"));r.autoDestruct||(r.svgStyleElement=ye(r.ownerDocument),r.svgDefsElement=(o=r.ownerDocument)==null?void 0:o.createElementNS(J,\"defs\"),r.svgStyles.clear());const s=U(a,n.ownerDocument);return yield pt(s,r)})}function zt(e,t){return E(this,null,function*(){const r=yield x(e,t),{log:n,type:a,quality:s,dpi:o}=r,i=yield K(r);n.time(\"canvas to blob\");const l=yield ut(i,a,s);if([\"image/png\",\"image/jpeg\"].includes(a)&&o){const u=yield mt(l.slice(0,33));let c=new Uint8Array(u);return a===\"image/png\"?c=ae(c,o):a===\"image/jpeg\"&&(c=C(c,o)),n.timeEnd(\"canvas to blob\"),new Blob([c,l.slice(33)],{type:a})}return n.timeEnd(\"canvas to blob\"),l})}function B(e,t){return E(this,null,function*(){const r=yield x(e,t),{log:n,quality:a,type:s,dpi:o}=r,i=yield K(r);n.time(\"canvas to data url\");let l=i.toDataURL(s,a);if([\"image/png\",\"image/jpeg\"].includes(s)&&o&&se&&Xe){const[u,c]=l.split(\",\");let f=0,d=!1;if(s===\"image/png\"){const y=He(c);y>=0?(f=Math.ceil((y+28)/3)*4,d=!0):f=33/3*4}else s===\"image/jpeg\"&&(f=18/3*4);const m=c.substring(0,f),w=c.substring(f),p=window.atob(m),b=new Uint8Array(p.length);for(let y=0;y 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\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n","export {default as timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse} from \"./defaultLocale.js\";\nexport {default as timeFormatLocale} from \"./locale.js\";\nexport {default as isoFormat} from \"./isoFormat.js\";\nexport {default as isoParse} from \"./isoParse.js\";\n","export default x => x;\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\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}\n","export 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;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\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) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n areaRingSum = new Adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum = new Adder();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum = new Adder();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\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}\n\nexport default boundsStream;\n","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;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, 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}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\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}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\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};\n","import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum = new Adder();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\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\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\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\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\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}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], 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(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\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(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([array(selector)], root);\n}\n","export function getTextWidth( text, fontSize, fontFace ) {\r\n\r\n const canvas = document.createElement( 'canvas' ),\r\n context = canvas.getContext( '2d' );\r\n\r\n context.font = `${ fontSize }px ${ fontFace }`;\r\n\r\n return context.measureText( text ).width;\r\n\r\n}","\r\nimport { array, func, string, object, bool } from 'prop-types';\r\nimport React, { useCallback } from 'react';\r\nimport Select from 'react-select';\r\n\r\nconst customSelectStyles = {\r\n\r\n control: ( provided, state ) => ( {\r\n\r\n ...provided,\r\n background: '#fff'\r\n } ),\r\n\r\n option: ( provided, state ) => ( {\r\n ...provided,\r\n color: state.isDisabled ? '#979797' : '#011d4e',\r\n textDecoration: state.isFocused ? 'underline' : 'none',\r\n backgroundColor: state.isSelected ? '#ebf0f4' : 'transparent',\r\n cursor: state.isDisabled ? 'not-allowed' : 'pointer',\r\n opacity: state.isDisabled ? '0.5' : '1.0',\r\n '&:hover': {\r\n backgroundColor: '#ebf0f4'\r\n // textDecoration: 'underline'\r\n }\r\n } ),\r\n\r\n indicatorSeparator: ( provided ) => ( {\r\n\r\n ...provided,\r\n display: 'none'\r\n\r\n } ),\r\n\r\n dropdownIndicator: ( provided ) => ( {\r\n\r\n ...provided,\r\n color: '#011E4D'\r\n\r\n } ),\r\n\r\n multiValue: ( provided ) => ( {\r\n\r\n ...provided,\r\n display: 'none'\r\n\r\n } ),\r\n\r\n multiValueLabel: ( provided ) => ( {\r\n\r\n ...provided,\r\n display: 'none'\r\n\r\n } ),\r\n\r\n multiValueRemove: ( provided ) => ( {\r\n\r\n ...provided,\r\n display: 'none'\r\n\r\n } ),\r\n\r\n\r\n clearIndicator: ( provided ) => ( {\r\n\r\n ...provided,\r\n display: 'none'\r\n\r\n } )\r\n\r\n};\r\n\r\nconst Region = ( { heading, type, placeholder, selectionText, options, info, setOptions, regions, setRegions, isDisabled } ) => {\r\n\r\n const handleChange = useCallback( ( selected ) => {\r\n\r\n selected.map( ( select ) => {\r\n\r\n options.map( ( option ) => {\r\n\r\n if ( option.label === select.label ) {\r\n\r\n return setOptions( [ ...options, option['isDisabled'] = true ] );\r\n\r\n }\r\n\r\n } );\r\n\r\n if ( select.label === 'United States' ) {\r\n\r\n select['selectionText'] = 'Country';\r\n select['region'] = type;\r\n\r\n }\r\n else {\r\n\r\n select['selectionText'] = selectionText;\r\n select['region'] = type;\r\n\r\n }\r\n\r\n\r\n } );\r\n\r\n setRegions( [ ...regions, ...selected ] );\r\n\r\n } );\r\n\r\n return (\r\n
\r\n
\r\n \r\n option.isDisabled === true }\r\n />\r\n
\r\n
\r\n );\r\n\r\n};\r\n\r\nexport default Region;\r\n\r\nRegion.propTypes = {\r\n heading: string,\r\n type: string,\r\n placeholder: string,\r\n selectionText: string,\r\n options: array,\r\n setStateOptions: func,\r\n setCountyOptions: func,\r\n setMsaOptions: func,\r\n setPumaOptions: func,\r\n info: object,\r\n regions: array,\r\n setRegions: func,\r\n filteredOptions: array,\r\n setFilteredOptions: func,\r\n isDisabled: bool\r\n};","import { array, func, number, object } from 'prop-types';\r\nimport React, { useEffect, useState } from 'react';\r\n// import Select from 'react-select';\r\nimport InfoOverlay from '../../info-overlay/info-overlay';\r\nimport Region from './region';\r\nimport { OverlayOptions } from 'enums/overlay-options';\r\n\r\nconst Regions = ( { data, overlay, regions, setRegions, width } ) => {\r\n\r\n const [ states, counties, msas, pumas ] = data;\r\n const [ clearRegions, setClearRegions ] = useState( false );\r\n const [ stateOptions, setStateOptions ] = useState(\r\n\r\n [ ...states ].map( ( x ) => {\r\n\r\n return { value: x.state_code, label: x.State_Name, type: 'state', isDisabled: regions.find( ( f ) => f.label === x.label ) !== undefined ? true : false };\r\n\r\n } ) );\r\n const [ countyOptions, setCountyOptions ] = useState(\r\n\r\n [ ...counties ].map( ( x ) => {\r\n\r\n return { value: x.STCounty_FIPS, label: x.County_Name, type: 'county', isDisabled: regions.find( ( f ) => f.label === x.label ) !== undefined ? true : false };\r\n\r\n } ) );\r\n const [ msaOptions, setMsaOptions ] = useState(\r\n\r\n [ ...msas ].map( ( x ) => {\r\n\r\n return { value: x.Metro_Code, label: x.CBSA_Title, type: 'msa', isDisabled: regions.find( ( f ) => f.label === x.label ) !== undefined ? true : false };\r\n\r\n } ) );\r\n const [ pumaOptions, setPumaOptions ] = useState(\r\n\r\n [ ...pumas ].map( ( x ) => {\r\n\r\n return { value: x.STPUMA_FIPS_Tab, label: x.PUMA_Name_Tab, type: 'puma', isDisabled: regions.find( ( f ) => f.label === x.label ) !== undefined ? true : false };\r\n\r\n } ) );\r\n\r\n const onOpenAccordianClicked = () => {\r\n\r\n setClearRegions( false );\r\n\r\n };\r\n\r\n const onClearRegionsClicked = () => {\r\n\r\n clearDisabled();\r\n setRegions( [] );\r\n setClearRegions( false );\r\n setRegions( [] );\r\n\r\n };\r\n\r\n const onClearSelectedRegionClicked = ( selected ) => {\r\n\r\n const newArr = regions.filter( ( select ) => select.label !== selected.label );\r\n\r\n setRegions( newArr );\r\n\r\n setClearRegions( false );\r\n\r\n if ( !newArr.length ) {\r\n\r\n onClearRegionsClicked();\r\n\r\n }\r\n\r\n switch ( selected.type ) {\r\n\r\n case 'state':\r\n return setStateOptions( [ ...stateOptions, selected['isDisabled'] = false ] );\r\n case 'county':\r\n return setCountyOptions( [ ...countyOptions, selected['isDisabled'] = false ] );\r\n case 'msa':\r\n return setMsaOptions( [ ...msaOptions, selected['isDisabled'] = false ] );\r\n case 'puma':\r\n return setPumaOptions( [ ...pumaOptions, selected['isDisabled'] = false ] );\r\n\r\n }\r\n\r\n };\r\n\r\n const clearDisabled = () => {\r\n\r\n for ( const region of regions ) {\r\n\r\n console.log( 'region', region );\r\n\r\n region.isDisabled = false;\r\n\r\n }\r\n\r\n };\r\n\r\n useEffect( () => {\r\n\r\n if ( regions.length > 1 ) {\r\n\r\n setClearRegions( true );\r\n\r\n }\r\n else {\r\n\r\n setClearRegions( false );\r\n\r\n }\r\n\r\n }, [ regions ] );\r\n\r\n return (\r\n <>\r\n
\r\n\r\n
\r\n
1
\r\n
\r\n

Regions

\r\n

Search and select up to two regions using the menus below.

\r\n
\r\n
\r\n\r\n \r\n\r\n { clearRegions ? : '' }\r\n\r\n
\r\n
\r\n {\r\n clearRegions ?\r\n null\r\n :\r\n
\r\n \r\n \r\n \r\n }\r\n regions={ regions }\r\n setRegions={ setRegions }\r\n isDisabled={ regions.length === 2 }\r\n />\r\n
\r\n }\r\n
\r\n {\r\n regions.length > 0 ?\r\n\r\n
\r\n

Selected:

\r\n {\r\n\r\n !regions.length > 0 ?\r\n null\r\n :\r\n regions.map( ( val, i ) => {\r\n\r\n return (\r\n
\r\n

{ val.selectionText }: { val.label }

\r\n \r\n
\r\n );\r\n\r\n } )\r\n\r\n }\r\n
\r\n\r\n :\r\n\r\n

Selected: None

\r\n }\r\n {\r\n clearRegions ?\r\n\r\n \r\n\r\n :\r\n\r\n ''\r\n }\r\n
\r\n
\r\n \r\n );\r\n\r\n};\r\n\r\nexport default Regions;\r\n\r\nRegions.propTypes = {\r\n data: array.isRequired,\r\n overlay: object.isRequired,\r\n setOptions: func,\r\n regions: array,\r\n setRegions: func.isRequired,\r\n width: number\r\n};","import { func, bool, array, number } from 'prop-types';\r\nimport React, { useCallback, useEffect, useState } from 'react';\r\n\r\nconst Types = ( { showTypes, types, setTypes, clearTypes, setShowChart, width } ) => {\r\n\r\n const [ purposeIsChecked, setPurposeIsChecked ] = useState( [ false, false, false ] );\r\n const [ measureIsChecked, setMeasureIsChecked ] = useState( [ false, false, false, false, false, false, false, false, false, false ] );\r\n const [ characteristicsIsChecked, setCharacteristicsIsChecked ] = useState( [ false, false, false, false, false, false ] );\r\n const [ showAccordion, setShowAccordion ] = useState( true );\r\n\r\n const onPurposeChange = useCallback( ( selected, checked ) => {\r\n\r\n const typeChecked = [ false, false, false ];\r\n\r\n typeChecked[checked] = true;\r\n\r\n setPurposeIsChecked( typeChecked );\r\n\r\n\r\n const currentTypes = [ ...types ];\r\n\r\n\r\n currentTypes[0] = selected;\r\n setTypes( currentTypes );\r\n setShowChart( false );\r\n\r\n } );\r\n\r\n const onMeasureChange = useCallback( ( selected, checked ) => {\r\n\r\n const typeChecked = [ false, false, false, false, false, false, false, false, false, false ];\r\n\r\n typeChecked[checked] = true;\r\n\r\n setMeasureIsChecked( typeChecked );\r\n\r\n const currentTypes = [ ...types ];\r\n\r\n\r\n currentTypes[1] = selected;\r\n setTypes( currentTypes );\r\n setShowChart( false );\r\n\r\n if ( checked === 3 || selected.selection === 'deni-reason-overall' ) {\r\n\r\n setCharacteristicsIsChecked( [ true, false, false, false, false, false ] );\r\n\r\n currentTypes[2] = { type: 'characteristics', selection: 'all' };\r\n\r\n setTypes( currentTypes );\r\n\r\n }\r\n\r\n } );\r\n\r\n const onCharacteristicsChange = useCallback( ( selected, checked ) => {\r\n\r\n // console.log( 'inside onCharacteristicsChange with ... selected: ', selected, 'and checked: ', checked );\r\n\r\n const typeChecked = [ false, false, false, false, false, false ];\r\n\r\n typeChecked[checked] = true;\r\n\r\n setCharacteristicsIsChecked( typeChecked );\r\n\r\n const currentTypes = [ ...types ];\r\n\r\n\r\n currentTypes[2] = selected;\r\n setTypes( currentTypes );\r\n setShowChart( false );\r\n\r\n } );\r\n\r\n const onOpenAccordianClicked = () => {\r\n\r\n setShowAccordion( !showAccordion );\r\n\r\n };\r\n\r\n const onClearTypesClicked = () => {\r\n\r\n setPurposeIsChecked( [ false, false, false ] );\r\n setMeasureIsChecked( [ false, false, false, false, false, false ] );\r\n setCharacteristicsIsChecked( [ false, false, false, false, false, false ] );\r\n\r\n setTypes( [] );\r\n setShowChart( false );\r\n setShowAccordion( true );\r\n\r\n };\r\n\r\n useEffect( () => {\r\n\r\n if ( !showTypes ) {\r\n\r\n setPurposeIsChecked( [ false, false, false ] );\r\n setMeasureIsChecked( [ false, false, false, false, false, false ] );\r\n setCharacteristicsIsChecked( [ false, false, false, false, false, false ] );\r\n\r\n }\r\n\r\n }, [ showTypes ] );\r\n\r\n return (\r\n <>\r\n
\r\n\r\n\r\n
\r\n
2
\r\n
\r\n

\r\n Loan Purpose, Measure, and Characteristics\r\n

\r\n

\r\n Select purpose, measure, and characteristics to generate the chart.\r\n

\r\n\r\n { clearTypes &&\r\n \r\n }\r\n
\r\n
\r\n\r\n \r\n\r\n { clearTypes &&\r\n \r\n }\r\n\r\n
\r\n
\r\n\r\n {\r\n showTypes &&\r\n <>\r\n
\r\n

Loan Purpose

\r\n
\r\n
\r\n onPurposeChange( { type: 'purpose', selection: e.currentTarget.value }, 0 ) }\r\n />\r\n
\r\n
\r\n
\r\n onPurposeChange( { type: 'purpose', selection: e.currentTarget.value }, 1 ) }\r\n />\r\n
\r\n
\r\n
\r\n onPurposeChange( { type: 'purpose', selection: e.currentTarget.value }, 2 ) }\r\n />\r\n \r\n
\r\n
\r\n
\r\n
\r\n

Loan Measure

\r\n
768 ? 'top-row' : '' }` }>\r\n
\r\n onMeasureChange ( { type: 'measure', selection: e.currentTarget.value }, 0 ) }\r\n />\r\n
\r\n
\r\n
\r\n onMeasureChange ( { type: 'measure', selection: e.currentTarget.value }, 1 ) }\r\n />\r\n
\r\n
\r\n
\r\n onMeasureChange ( { type: 'measure', selection: e.currentTarget.value }, 2 ) }\r\n />\r\n \r\n
\r\n
\r\n onMeasureChange ( { type: 'measure', selection: e.currentTarget.value }, 4 ) }\r\n />\r\n
\r\n
\r\n
\r\n onMeasureChange ( { type: 'measure', selection: e.currentTarget.value }, 5 ) }\r\n />\r\n \r\n
\r\n
\r\n onMeasureChange ( { type: 'measure', selection: e.currentTarget.value }, 3 ) }\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n onMeasureChange ( { type: 'measure', selection: e.currentTarget.value }, 6 ) }\r\n />\r\n
\r\n
\r\n
\r\n onMeasureChange ( { type: 'measure', selection: e.currentTarget.value }, 7 ) }\r\n />\r\n
\r\n
\r\n
\r\n onMeasureChange ( { type: 'measure', selection: e.currentTarget.value }, 8 ) }\r\n />\r\n
\r\n
\r\n
\r\n onMeasureChange ( { type: 'measure', selection: e.currentTarget.value }, 9 ) }\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Loan Characteristics

\r\n
\r\n
\r\n onCharacteristicsChange ( { type: 'characteristics', selection: e.currentTarget.value }, 0 ) }\r\n />\r\n
\r\n
\r\n
\r\n onCharacteristicsChange ( { type: 'characteristics', selection: e.currentTarget.value }, 1 ) }\r\n />\r\n
\r\n
\r\n
\r\n onCharacteristicsChange ( { type: 'characteristics', selection: e.currentTarget.value }, 2 ) }\r\n />\r\n \r\n
\r\n
\r\n onCharacteristicsChange ( { type: 'characteristics', selection: e.currentTarget.value }, 3 ) }\r\n />\r\n
\r\n
\r\n
\r\n onCharacteristicsChange ( { type: 'characteristics', selection: e.currentTarget.value }, 4 ) }\r\n />\r\n
\r\n
\r\n
\r\n onCharacteristicsChange ( { type: 'characteristics', selection: e.currentTarget.value }, 5 ) }\r\n />\r\n \r\n
\r\n
\r\n
\r\n \r\n }\r\n\r\n
\r\n \r\n );\r\n\r\n};\r\n\r\nexport default Types;\r\n\r\nTypes.propTypes = {\r\n showTypes: bool.isRequired,\r\n types: array,\r\n setTypes: func,\r\n clearTypes: bool.isRequired,\r\n showChart: bool.isRequired,\r\n setShowChart: func,\r\n width: number\r\n};","import React, { useRef } from 'react';\r\nimport { axisBottom } from 'd3-axis';\r\nimport { select } from 'd3-selection';\r\nimport { timeYear } from 'd3-time';\r\nimport { number, exact, func } from 'prop-types';\r\n\r\nconst XAxis = ( { width, height, margin, x } ) => {\r\n\r\n const axisXRef = useRef();\r\n\r\n const xAxisPath = axisBottom( x );\r\n\r\n // Selects where the axis will be injected\r\n const g = select( axisXRef.current );\r\n\r\n let nTicks = 1;\r\n\r\n\r\n if ( width < 1100 ) {\r\n\r\n nTicks = 2;\r\n\r\n }\r\n\r\n if ( width < 367 ) {\r\n\r\n nTicks = 4;\r\n\r\n }\r\n g.call( xAxisPath.tickSizeInner( 6 ).ticks( timeYear.every( nTicks ) ) );\r\n\r\n // Label only certain points\r\n g.select( '.domain' )\r\n .attr( 'stroke', '#515c70' )\r\n .attr( 'stroke-width', '1.5px' );\r\n\r\n g.selectAll( '.tick line' )\r\n .attr( 'stroke', '#515c70' )\r\n .attr( 'stroke-width', '1.5px' );\r\n\r\n g.selectAll( '.tick text' )\r\n .attr( 'y', 22 )\r\n .attr( 'fill', '#515c70' )\r\n .attr( 'font-size', '12px' )\r\n .attr( 'font-family', 'Graphik-Medium' )\r\n .attr( 'class', '' );\r\n\r\n g.select( '.tick:last-of-type text' )\r\n .attr( 'x', -5 );\r\n\r\n g.selectAll( '.tick text' ).attr( 'fill', '#515c70' )\r\n .attr( 'font-size', '12px' )\r\n .attr( 'font-family', 'Graphik-Medium' );\r\n\r\n // Transformation to move the axis down\r\n const translate = `translate(0,${ height - margin.top - margin.bottom })`; // this moves it down\r\n\r\n // Returns the html for rendering the x-axis\r\n return (\r\n \r\n );\r\n\r\n\r\n};\r\n\r\nexport default XAxis;\r\n\r\nXAxis.propTypes = {\r\n margin: exact( { top: number, right: number, bottom: number, left: number } ),\r\n height: number.isRequired,\r\n width: number.isRequired,\r\n xPosition: number,\r\n x: func\r\n};","const getDate = ( year ) => {\r\n\r\n return new Date( year, 0, 1 );\r\n\r\n};\r\n\r\nexport default getDate;","import React, { useRef } from 'react';\r\nimport { bisector } from 'd3-array';\r\nimport { select, selectAll } from 'd3-selection';\r\nimport { line } from 'd3-shape';\r\nimport { number, array, func, exact, object, bool } from 'prop-types';\r\nimport getDate from './date-util';\r\n\r\nconst Lines = ( { pageWrapper, componentWrapper,\r\n height, width, margin,\r\n chartData, set, lineThicknessValue, x, y,\r\n legend, tooltipRef, tooltipData, setTooltipData, hoverOffset, fullWidth, twoCharts } ) => {\r\n\r\n const lineRef = useRef();\r\n const dotRef = useRef();\r\n const scrubberRef = useRef();\r\n\r\n const lineGenerator = line()\r\n .defined( ( d ) => d.value || d.value !== null )\r\n .x( ( d ) => {\r\n\r\n return x( getDate( d.year ) );\r\n\r\n } )\r\n .y( ( d )=>{\r\n\r\n return y( d.value );\r\n\r\n } );\r\n\r\n const lines = chartData.map( ( lineObj ) => {\r\n\r\n return (\r\n \r\n );\r\n\r\n } );\r\n\r\n const dotGenerator = ( dotSets ) => {\r\n\r\n if ( dotSets === undefined ) return null;\r\n\r\n return dotSets.map( ( line, i ) => {\r\n\r\n return line;\r\n\r\n } );\r\n\r\n };\r\n\r\n const dots = chartData.map( ( dotObj ) => {\r\n\r\n const dotMapper = dotGenerator( dotObj.values[set] );\r\n\r\n return dotMapper.map( ( point, i ) => {\r\n\r\n if ( point.value !== null ) {\r\n\r\n return (\r\n \r\n );\r\n\r\n }\r\n\r\n\r\n } );\r\n\r\n\r\n } );\r\n\r\n const updateTooltip = ( year ) => {\r\n\r\n const currData = chartData.map( ( x ) => {\r\n\r\n return { id: x.id, year: year, values: x.values[set].filter( ( y ) => y.year === year ) };\r\n\r\n } );\r\n\r\n if ( currData ) {\r\n\r\n setTooltipData( currData );\r\n\r\n }\r\n\r\n };\r\n\r\n const handleSliderHover = ( e ) => {\r\n\r\n // For hover dots\r\n const lines = lineRef.current.childNodes;\r\n\r\n // Makes tooltip and scrubber visible\r\n scrubberRef.current.style.opacity = 1;\r\n tooltipRef.current.style.display = 'block';\r\n\r\n // Variables for the positioning of items on page\r\n const yStartVal = 0;\r\n const yEndVal = height - margin.bottom - margin.top;\r\n\r\n const pageMarginTop = pageWrapper.offsetTop;\r\n const yOffset = e.pageY - pageMarginTop;\r\n const yVal = Math.abs( yOffset - margin.top - margin.bottom );\r\n\r\n const pageMarginLeft = pageWrapper.offsetLeft;\r\n const chartLineMarginLeft = componentWrapper.offsetLeft;\r\n const xOffset = e.pageX - pageMarginLeft - chartLineMarginLeft - margin.right - 2 + ( set === 1 ? margin.left : 0 );\r\n const xVal = Math.abs( xOffset - margin.left - hoverOffset );\r\n\r\n // mapping the mouse position to what value corresponds on the chart\r\n const date = x.invert( xVal );\r\n\r\n // d3 bisector is used to help figure out what value the mouse is currently/or nearest to pointing to? (https://observablehq.com/@d3/d3-bisect)\r\n const bisectDate = bisector( function ( d ) {\r\n\r\n return getDate( d.year );\r\n\r\n } ).left;\r\n\r\n // this section is looking for the date from the dataset which is nearest to the mouse\r\n const i = bisectDate( chartData[0].values[set], date, 1 );\r\n const year0 = chartData[0].values[set][i - 1];\r\n const year1 = chartData[0].values[set][i];\r\n\r\n if ( year0 === undefined || year1 === undefined ) return;\r\n\r\n const d0 = getDate( year0.year );\r\n const d1 = getDate( year1.year );\r\n const d = date - d0 > d1 - date ? d1 : d0;\r\n\r\n const currentToolTipData = chartData.map( ( x ) => {\r\n\r\n return { id: x.id, year: d.getFullYear(), values: x.values[set].filter( ( y ) => y.year === d.getFullYear() ) };\r\n\r\n } );\r\n\r\n\r\n updateTooltip( d.getFullYear() );\r\n\r\n // console.info( 'xVal', xVal );\r\n // console.info( 'yVal', yVal );\r\n // Move tooltip\r\n tooltipRef.current.style.top = `${ yVal + ( legend.length > 3 ? 100 : 140 ) }px`; // allows for vertical movement of box\r\n\r\n\r\n const tooltipOffset = 16;\r\n const mobileMiddleAlignZone = 50;\r\n const startTooltip = xVal + margin.left + margin.right + 1;\r\n const tooltipWidth = tooltipRef.current.getBoundingClientRect().width;\r\n const chartWidth = fullWidth - margin.left - margin.right;\r\n const centerChart = twoCharts && fullWidth !== width ? ( chartWidth - margin.left - margin.right ) / 4 : ( chartWidth ) / 2;\r\n\r\n\r\n fullWidth < 768 ?\r\n tooltipRef.current.style.left = xVal <= centerChart - mobileMiddleAlignZone\r\n ? `${ startTooltip + tooltipOffset }px`\r\n : tooltipRef.current.style.left = xVal <= centerChart + mobileMiddleAlignZone\r\n ? `${ startTooltip - ( tooltipWidth / 2 ) }px`\r\n : `${ startTooltip - tooltipWidth - tooltipOffset }px`\r\n :\r\n tooltipRef.current.style.left = xVal <= centerChart\r\n ? `${ startTooltip + tooltipOffset + ( set === 1 ? ( fullWidth > 768 ? width : 0 ) : 0 ) }px`\r\n : `${ startTooltip - tooltipWidth - tooltipOffset + ( set === 1 ? ( fullWidth > 768 ? width : 0 ) : 0 ) }px`;\r\n\r\n\r\n // Move scrubber line\r\n select( scrubberRef.current )\r\n .attr( 'd', () => {\r\n\r\n let d = `M${ xVal },${ yStartVal }`;\r\n\r\n\r\n d += ` ${ xVal },${ yEndVal }`;\r\n\r\n return d;\r\n\r\n } );\r\n\r\n // Move dots along lines\r\n const x2 = x( getDate( d.getFullYear() ) );\r\n\r\n selectAll( `.dot-per-line${ set }` )\r\n .attr( 'transform', ( ( data, i ) => {\r\n\r\n\r\n if ( currentToolTipData === undefined || currentToolTipData === null\r\n || currentToolTipData[i].values[0].value === undefined || currentToolTipData[i].values[0].value === null ) return null;\r\n\r\n const y2 = y( currentToolTipData[i].values[0].value );\r\n\r\n return `translate(${ x2 },${ y2 })`;\r\n\r\n\r\n } ) )\r\n .attr( 'fill', '#ffffff' )\r\n .attr( 'stroke', ( data, i ) => lines[i].getAttribute( 'stroke' ) )\r\n .attr( 'opacity', ( ( data, i ) => {\r\n\r\n return ( currentToolTipData === undefined || currentToolTipData === null\r\n || currentToolTipData[i].values[0].value === undefined || currentToolTipData[i].values[0].value === null )\r\n ? 0 : 1;\r\n\r\n } ) );\r\n\r\n };\r\n\r\n const handleSliderOut = ( e ) => {\r\n\r\n scrubberRef.current.style.opacity = 0;\r\n tooltipRef.current.style.display = 'none';\r\n\r\n const mouseDots = Array.from( document.getElementsByClassName( `dot-per-line${ set }` ) );\r\n\r\n mouseDots.forEach( ( hoverDot ) => {\r\n\r\n hoverDot.setAttribute( 'opacity', 0 );\r\n\r\n } );\r\n\r\n };\r\n\r\n const renderHoverDots = () => {\r\n\r\n if ( tooltipData === undefined ) return null;\r\n const chartRows = tooltipData;\r\n\r\n const dots = chartRows.map( ( line, i ) => {\r\n\r\n return (\r\n \r\n );\r\n\r\n } );\r\n\r\n return dots;\r\n\r\n };\r\n\r\n\r\n return (\r\n <>\r\n \r\n { lines }\r\n \r\n \r\n { dots }\r\n \r\n \r\n \r\n {\r\n renderHoverDots()\r\n }\r\n handleSliderHover( e ) }\r\n onMouseOut={ ( e ) => handleSliderOut( e ) }\r\n />\r\n \r\n \r\n );\r\n\r\n};\r\n\r\nexport default Lines;\r\n\r\nLines.propTypes = {\r\n pageWrapper: object.isRequired,\r\n componentWrapper: object.isRequired,\r\n height: number.isRequired,\r\n width: number.isRequired,\r\n margin: exact( { top: number, right: number, bottom: number, left: number } ),\r\n chartData: array,\r\n set: number,\r\n lineThicknessValue: number,\r\n x: func,\r\n y: func,\r\n tooltipRef: object,\r\n tooltipData: array,\r\n setTooltipData: func,\r\n hoverOffset: number,\r\n legend: array,\r\n fullWidth: number,\r\n twoCharts: bool\r\n};","import React from 'react';\r\nimport { array, string, object, number } from 'prop-types';\r\nimport { getTextWidth } from '../../../utils/svg/text-utils';\r\n\r\nconst ChartTitle = ( { width, title, types, measure, characteristic } ) => {\r\n\r\n\r\n const chartTitleWidth = getTextWidth( title, 20, 'TiemposHeadline-Bold' ) / 2;\r\n const loanPurposeMeasureText = `Loan purpose: ${ types[0].selection } | Loan measure: ${ measure.name }`;\r\n const loanPurposeMeasureTextWidth = getTextWidth( loanPurposeMeasureText, 16, 'Graphik-Regular' ) / 2;\r\n const loanPurposeText = `Loan purpose: ${ types[0].selection }`;\r\n const loanPurposeTextWidth = getTextWidth( loanPurposeText, 16, 'Graphik-Regular' ) / 2;\r\n const loanMeasureText = `Loan measure: ${ measure.name }`;\r\n const loanMeasureTextWidth = getTextWidth( loanMeasureText, 16, 'Graphik-Regular' ) / 2;\r\n const loanDemographicText2 = `Demographics: ${ characteristic.name }`;\r\n const loanDemographicTextWidth2 = getTextWidth( loanDemographicText2, 16, 'Graphik-Regular' ) / 2;\r\n\r\n const capitalize = ( string ) => {\r\n\r\n const reset = string.toLowerCase();\r\n\r\n const sentenceCase = reset.charAt( 0 ).toUpperCase() + reset.slice( 1 );\r\n\r\n return sentenceCase;\r\n\r\n };\r\n\r\n return (\r\n \r\n\r\n {\r\n width < 768 ?\r\n <>\r\n \r\n { title }\r\n \r\n \r\n Loan purpose: { capitalize( types[0].selection ) }\r\n \r\n \r\n Loan measure: { measure.name }\r\n \r\n \r\n Characteristics: { characteristic.name }\r\n \r\n \r\n :\r\n <>\r\n \r\n { title }\r\n \r\n \r\n Loan purpose: { capitalize( types[0].selection ) } | Loan measure: { measure.name }\r\n \r\n \r\n Characteristics: { characteristic.name }\r\n \r\n \r\n }\r\n\r\n \r\n );\r\n\r\n\r\n};\r\n\r\nexport default ChartTitle;\r\n\r\nChartTitle.propTypes = {\r\n width: number,\r\n title: string,\r\n types: array,\r\n measure: object,\r\n characteristic: object\r\n};","import React from 'react';\r\nimport { exact, object, number } from 'prop-types';\r\nimport { getTextWidth } from '../../../utils/svg/text-utils';\r\n\r\nconst ChartLabel = ( { region, width, margin } ) => {\r\n\r\n if ( region === undefined ) return null;\r\n\r\n return (\r\n \r\n \r\n { region.selectionText }\r\n \r\n \r\n { region.label }\r\n \r\n \r\n );\r\n\r\n};\r\n\r\nexport default ChartLabel;\r\n\r\nChartLabel.propTypes = {\r\n region: object,\r\n width: number,\r\n margin: exact( { top: number, right: number, bottom: number, left: number } )\r\n};","import React, { useRef } from 'react';\r\nimport { axisLeft } from 'd3-axis';\r\nimport { select } from 'd3-selection';\r\nimport { exact, func, number, shape, string } from 'prop-types';\r\n\r\nconst YAxis = ( { width, margin, measure, y } ) => {\r\n\r\n const labelCheck = ( value ) => {\r\n\r\n let label = '';\r\n\r\n switch ( true ) {\r\n\r\n case value >= 13 && value <= 15:\r\n label = 'trillion';\r\n break;\r\n case value >= 10 && value <= 12:\r\n label = 'billion';\r\n break;\r\n case value >= 7 && value <= 9:\r\n label = 'million';\r\n break;\r\n case value >= 4 && value <= 6:\r\n label = 'thousand';\r\n break;\r\n\r\n }\r\n\r\n return label;\r\n\r\n };\r\n\r\n const axisYRef = useRef();\r\n\r\n const yAxisPath = axisLeft( y )\r\n .tickSize( width )\r\n .tickFormat( ( d, i, all ) => {\r\n\r\n // minY and maxY length\r\n const minY = all[1].__data__.toString().length; // second number is used beacuse the first number is always 0\r\n const maxY = all[all.length - 1].__data__.toString().length;\r\n const rangeCheck = labelCheck( minY ) !== labelCheck( maxY );\r\n const label = labelCheck( maxY );\r\n\r\n if ( maxY - minY >= 1 && rangeCheck ) {\r\n\r\n for ( const val of all ) {\r\n\r\n const value = val.__data__;\r\n const valueLength = value.toString().length;\r\n const multiplier = 1 / ( 10 ** valueLength );\r\n const calcValue = value * multiplier;\r\n const newValue = calcValue.toString().length > 3 ? Math.round( calcValue * 10 ) / 10 : calcValue;\r\n\r\n if ( value !== 0 && valueLength < maxY ) {\r\n\r\n switch ( label ) {\r\n\r\n case 'trillion':\r\n val.innerHTML = measure.key === 'mla' || measure.key === 'loan-volume' ? `$${ Math.round( newValue * 10 ) / 10 }T` : `${ Math.round( newValue * 10 ) / 10 }T`;\r\n break;\r\n case 'billion':\r\n val.innerHTML = measure.key === 'mla' || measure.key === 'loan-volume' ? `$${ Math.round( newValue * 10 ) / 10 }B` : `${ Math.round( newValue * 10 ) / 10 }B`;\r\n break;\r\n case 'million':\r\n val.innerHTML = measure.key === 'mla' || measure.key === 'loan-volume' ? `$${ newValue }M` : `${ newValue }M`;\r\n break;\r\n case 'thousand':\r\n val.innerHTML = measure.key === 'mla' || measure.key === 'loan-volume' ? `$${ newValue }K` : `${ newValue }K`;\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n return new Intl.NumberFormat( 'en-US',\r\n { style: measure.style,\r\n currency: 'USD',\r\n maximumFractionDigits: d === 0 ? 0 : measure.significantDigits,\r\n minimumFractionDigits: d === 0 ? 0 : measure.significantDigits,\r\n notation: 'compact',\r\n compactDisplay: 'short'\r\n }\r\n ).format( d, measure.significantDigits );\r\n\r\n } )\r\n .ticks( 4 );\r\n\r\n const g = select( axisYRef.current );\r\n\r\n g.call( yAxisPath );\r\n\r\n g.select( '.domain' ).remove();\r\n g.selectAll( '.tick text' )\r\n .attr( 'x', -10 )\r\n .attr( 'dy', 3.5 )\r\n .attr( 'fill', '#515c70' )\r\n .attr( 'font-size', '12px' )\r\n .attr( 'font-family', 'Graphik-Medium' );\r\n g.selectAll( '.tick line' )\r\n .attr( 'stroke-dasharray', ( d ) => {\r\n\r\n return ( d === 0 ? '0' : '4' );\r\n\r\n } )\r\n .attr( 'stroke', '#929fb3' )\r\n .attr( 'x2', width - margin.left - margin.right );\r\n\r\n return (\r\n \r\n );\r\n\r\n\r\n};\r\n\r\nexport default YAxis;\r\n\r\nYAxis.propTypes = {\r\n margin: exact( { top: number, right: number, bottom: number, left: number } ),\r\n width: number.isRequired,\r\n measure: shape( { style: string, significantDigits: number } ),\r\n y: func\r\n};","import React, { useState, useRef, useEffect } from 'react';\r\nimport { extent } from 'd3-array';\r\nimport { scaleTime, scaleLinear } from 'd3-scale';\r\nimport { object, number, array, exact, instanceOf } from 'prop-types';\r\nimport { getTextWidth } from '../../../utils/svg/text-utils';\r\nimport XAxis from './xaxis';\r\nimport Lines from './lines';\r\nimport ChartTitle from './chart-title';\r\nimport ChartLabel from './chart-label';\r\nimport YAxis from './yaxis';\r\nimport getDate from './date-util';\r\n\r\nconst loanMeasures = [\r\n {\r\n name: 'Application rate',\r\n key: 'app-rate',\r\n prefix: 'ar_',\r\n type: 'Per 10k',\r\n significantDigits: 1,\r\n style: 'decimal'\r\n },\r\n {\r\n name: 'Originations',\r\n key: 'originations',\r\n prefix: 'orig_',\r\n type: 'Per 100k',\r\n significantDigits: 1,\r\n style: 'decimal'\r\n },\r\n {\r\n name: 'Denial rate',\r\n key: 'deni-rate',\r\n prefix: 'dr_',\r\n type: '%',\r\n typePosition: 'suffix',\r\n significantDigits: 1,\r\n style: 'percent'\r\n },\r\n {\r\n name: 'Loan volume',\r\n key: 'loan-volume',\r\n prefix: 'lv_',\r\n type: '$',\r\n typePosition: 'prefix',\r\n significantDigits: 1,\r\n style: 'currency'\r\n },\r\n {\r\n name: 'Median loan amount',\r\n key: 'mla',\r\n prefix: 'mla_',\r\n type: '$',\r\n typePosition: 'prefix',\r\n significantDigits: 1,\r\n style: 'currency'\r\n },\r\n {\r\n name: 'Denial reason: All reasons',\r\n key: 'deni-reason-overall',\r\n prefix: 'perc_',\r\n type: '%',\r\n typePosition: 'suffix',\r\n significantDigits: 1,\r\n style: 'percent'\r\n },\r\n {\r\n name: 'Denial reason: Cash',\r\n key: 'deni-reason-cash',\r\n prefix: 'perc_cash_',\r\n type: '%',\r\n typePosition: 'suffix',\r\n significantDigits: 1,\r\n style: 'percent'\r\n },\r\n {\r\n name: 'Denial reason: Collateral',\r\n key: 'deni-reason-col',\r\n prefix: 'perc_col_',\r\n type: '%',\r\n typePosition: 'suffix',\r\n significantDigits: 1,\r\n style: 'percent'\r\n },\r\n {\r\n name: 'Denial reason: Credit history',\r\n key: 'deni-reason-ch',\r\n prefix: 'perc_ch_',\r\n type: '%',\r\n typePosition: 'suffix',\r\n significantDigits: 1,\r\n style: 'percent'\r\n },\r\n {\r\n name: 'Denial reason: Debt-to-income ratio',\r\n key: 'deni-reason-dti',\r\n prefix: 'perc_dti_',\r\n type: '%',\r\n typePosition: 'suffix',\r\n significantDigits: 1,\r\n style: 'percent'\r\n }\r\n];\r\n\r\nconst loanCharacteristics = [\r\n {\r\n name: 'Overall',\r\n key: 'all',\r\n variables: [ 'all' ],\r\n altVariables: [ 'total' ],\r\n deniVariables: [ 'cash_all', 'col_all', 'ch_all', 'dti_all' ],\r\n legend: [ 'Overall' ],\r\n altLegend: [ 'Cash', 'Collateral', 'Credit history', 'Debt-to-income ratio' ]\r\n },\r\n {\r\n name: 'Applicant income',\r\n key: 'app-income',\r\n variables: [ 'app_lmi', 'app_mui' ],\r\n legend: [ 'Low- and moderate-income', 'Middle- and upper-income' ]\r\n },\r\n {\r\n name: 'Neighborhood income',\r\n key: 'neighborhood-income',\r\n variables: [ 'tract_lmi', 'tract_mui' ],\r\n legend: [ 'Low- and moderate-income', 'Middle- and upper-income' ]\r\n },\r\n {\r\n name: 'Gender',\r\n key: 'gender',\r\n variables: [ 'female', 'male' ],\r\n legend: [ 'Female', 'Male' ]\r\n },\r\n {\r\n name: 'Race/ethnicity',\r\n key: 'race-ethnicity',\r\n variables: [ 'asian', 'black', 'hisp', 'white' ],\r\n legend: [ 'Asian (non-Hispanic)', 'Black (non-Hispanic)', 'Hispanic', 'White (non-Hispanic)' ]\r\n },\r\n {\r\n name: 'Loan type',\r\n key: 'loan-type',\r\n variables: [ 'conventional', 'fha', 'vafsarhs' ],\r\n legend: [ 'Conventional', 'FHA', 'VA/FSA/RHS' ]\r\n }\r\n];\r\n\r\nconst legendColor = [\r\n { backgroundColor: '#0c65b7' },\r\n { backgroundColor: '#bde5fa' },\r\n { backgroundColor: '#055041' },\r\n { backgroundColor: '#f0c94b' },\r\n { backgroundColor: '#89c0ab' },\r\n { backgroundColor: '#ac9a78' },\r\n { backgroundColor: '#171351' },\r\n { backgroundColor: '#cd7535' }\r\n];\r\n\r\nconst measureCharacteristicLookup = [\r\n {\r\n measure: 'app-rate',\r\n characteristic: 'all'\r\n },\r\n {\r\n measure: 'originations',\r\n characteristic: 'all'\r\n },\r\n {\r\n measure: 'deni-reason-overall',\r\n characteristic: 'all'\r\n }\r\n];\r\n\r\nfunction Charts( props ) {\r\n\r\n const { regions, types, margin, disclaimer } = props;\r\n const measure = loanMeasures.filter( ( x ) => x.key === types[1].selection )[0];\r\n const prefix = measure.prefix;\r\n const characteristic = loanCharacteristics.filter( ( x ) => x.key === types[2].selection )[0];\r\n\r\n let variables = characteristic.variables.map( ( v ) => prefix + v );\r\n\r\n let variableSet = 'variables';\r\n\r\n if ( measureCharacteristicLookup.some( ( x ) => x.measure === measure.key && x.characteristic === characteristic.key ) ) {\r\n\r\n if ( measure.key === 'deni-reason-overall' ) {\r\n\r\n variables = characteristic.deniVariables.map( ( v ) => prefix + v );\r\n variableSet = 'deniVariables';\r\n\r\n }\r\n else {\r\n\r\n variables = characteristic.altVariables.map( ( v ) => prefix + v );\r\n variableSet = 'altVariables';\r\n\r\n }\r\n\r\n }\r\n\r\n const getLegend = () => {\r\n\r\n if ( measure.key === 'deni-reason-overall' ) {\r\n\r\n return characteristic.altLegend;\r\n\r\n }\r\n else {\r\n\r\n return characteristic.legend;\r\n\r\n }\r\n\r\n };\r\n\r\n const legend = getLegend();\r\n\r\n const dataVariables = [ 'loan_purpose', 'year',\r\n 'national_code', 'country',\r\n 'state_name', 'state_code',\r\n 'county_name', 'stcounty_fips',\r\n 'cbsa_title', 'metro_code',\r\n 'puma_name_tab', 'stpuma_fips_tab',\r\n ...variables ];\r\n\r\n const getData = () => {\r\n\r\n const d = props.data.map( ( data ) => {\r\n\r\n return data.map( ( d ) => {\r\n\r\n const keys = Object.keys( d )\r\n .filter( ( key ) => dataVariables.includes( key ) );\r\n\r\n // to handle rows of data where the desired variable is not available\r\n for ( let i = 0; i < variables.length - 1; i++ ) {\r\n\r\n if ( !keys.includes( variables[i] ) ) {\r\n\r\n keys.push( variables[i] );\r\n\r\n }\r\n\r\n }\r\n\r\n return keys.reduce( ( obj, key ) => {\r\n\r\n const val = d[key];\r\n\r\n obj[key] = val === undefined ? null : val;\r\n\r\n return obj;\r\n\r\n }, {} );\r\n\r\n } );\r\n\r\n\r\n } );\r\n\r\n const values = loanCharacteristics\r\n .filter( ( x ) => x.key === types[2]['selection'] )[0][variableSet].map( ( x, i ) => {\r\n\r\n return {\r\n id: x,\r\n color: legendColor[i].backgroundColor,\r\n values: d.map( ( dataset ) => {\r\n\r\n return dataset.map( ( xx ) => {\r\n\r\n return { year: xx['year'], value: xx[prefix + x] };\r\n\r\n } );\r\n\r\n } )\r\n };\r\n\r\n } );\r\n\r\n return values;\r\n\r\n };\r\n\r\n /* States and refs */\r\n const [ chartData ] = useState( getData() );\r\n const [ tooltipData, setTooltipData ] = useState( chartData );\r\n const [ yDomain, setYDomain ] = useState( [] );\r\n const [ lineThicknessValue ] = useState( 5 );\r\n\r\n const pngExportRef = useRef();\r\n const svgRef = useRef();\r\n const tooltipRef = useRef();\r\n\r\n useEffect( () => {\r\n\r\n setYDomain( getYDomain( chartData ) );\r\n\r\n }, [ chartData ] );\r\n\r\n /* Defines scaling */\r\n const makeXScale = ( width ) => {\r\n\r\n return (\r\n scaleTime()\r\n .domain( extent( chartData[0].values[0], function ( d ) {\r\n\r\n return getDate( d.year );\r\n\r\n } ) )\r\n .range( [ 0, width ] )\r\n );\r\n\r\n };\r\n\r\n const makeYScale = ( height ) => {\r\n\r\n return (\r\n scaleLinear()\r\n .domain( [ yDomain.minValue, yDomain.maxValue ] )\r\n .range( [ height, 0 ] )\r\n .nice()\r\n );\r\n\r\n };\r\n\r\n\r\n const getYDomain = ( selectedDataset ) => {\r\n\r\n const yDomain = {\r\n minValue: 0,\r\n maxValue: Number.MIN_VALUE\r\n };\r\n\r\n selectedDataset.forEach( ( dataset ) => {\r\n\r\n dataset.values.forEach( ( data ) => {\r\n\r\n data.forEach( ( v ) => {\r\n\r\n if ( v.value === null ) return;\r\n yDomain.minValue = parseFloat( v.value ) <= parseFloat( yDomain.minValue ) ? v.value : yDomain.minValue;\r\n yDomain.maxValue = parseFloat( v.value ) >= parseFloat( yDomain.maxValue ) ? v.value : yDomain.maxValue;\r\n\r\n } );\r\n\r\n } );\r\n\r\n } );\r\n\r\n return yDomain;\r\n\r\n };\r\n\r\n // Operation that scales x values of the data\r\n const calculatedWidth = props.data.length === 2 && props.width > 768 ? props.width / 2 : props.width;\r\n const calculatedMobileWidth = props.data.length === 2 && props.width < 768 ? props.width : props.width / 2;\r\n const x = makeXScale( calculatedWidth - margin.left - margin.right );\r\n const y = makeYScale( props.height - margin.top - margin.bottom );\r\n\r\n const renderTooltip = () => {\r\n\r\n // One line case\r\n if ( tooltipData.length === 1 ) {\r\n\r\n return (\r\n
\r\n

{ tooltipData[0].year }

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{ `${ legend[0] }` } { tooltipData[0].values[0].value !== null ? new Intl.NumberFormat( 'en-US',\r\n {\r\n style: measure.style, currency: 'USD',\r\n maximumFractionDigits: measure.key === 'mla' || measure.key === 'loan-volume' || measure.key === 'originations' ? 0 : measure.significantDigits,\r\n minimumFractionDigits: measure.key === 'mla' || measure.key === 'loan-volume' || measure.key === 'originations' ? 0 : measure.significantDigits\r\n } ).format( tooltipData[0].values[0].value ) : 'N/A' }
\r\n
\r\n );\r\n\r\n }\r\n else {\r\n\r\n const multLineTooltip = tooltipData.map( ( line, i ) => {\r\n\r\n return (\r\n \r\n \r\n { `${ legend[i] }` } \r\n { line.values[0].value !== null ? new Intl.NumberFormat( 'en-US',\r\n {\r\n style: measure.style, currency: 'USD',\r\n maximumFractionDigits: measure.key === 'mla' || measure.key === 'loan-volume' || measure.key === 'originations' ? 0 : measure.significantDigits,\r\n minimumFractionDigits: measure.key === 'mla' || measure.key === 'loan-volume' || measure.key === 'originations' ? 0 : measure.significantDigits\r\n } ).format( line.values[0].value ) : 'N/A' }\r\n \r\n );\r\n\r\n } );\r\n\r\n return (\r\n
\r\n

{ tooltipData[0].year }

\r\n \r\n \r\n { multLineTooltip }\r\n \r\n
\r\n
\r\n );\r\n\r\n }\r\n\r\n };\r\n\r\n const legendFontSize = props.width < 768 ? 10 : 14;\r\n const legendBoxWidth = props.width < 768 ? 10 : 15;\r\n const legendBoxHeight = props.width < 768 ? 10 : 15;\r\n const posX = props.width < 768 ? 18 : 23;\r\n const spaceBetweenBoxAndText = posX - legendBoxWidth;\r\n const posY = props.width < 768 ? 9 : 13;\r\n const borderOffset = props.width < 768 ? -10 : -15;\r\n const borderHeight = props.width < 768 ? 30 : 45;\r\n const renderLegendLabels = ( legendItemWidths ) => {\r\n\r\n return legendItemWidths.map( ( item, i, allWidths ) => {\r\n\r\n const legendItemWidth = i !== 0 ? allWidths.slice( 0, i ).reduce( ( acc, currentValue ) => acc + currentValue.width, 0 ) : 0;\r\n const translate = `translate(${ i === 0 ? 0 : legendItemWidth },0)`;\r\n\r\n return (\r\n \r\n \r\n \r\n { item.text }\r\n \r\n \r\n );\r\n\r\n } );\r\n\r\n\r\n };\r\n\r\n const renderLegend = ( yMultiplier ) => {\r\n\r\n const posXOffset = legend.length === 1 ? 0 : posX;\r\n const legendItemWidths = legend\r\n .map( ( item ) => {\r\n\r\n return { text: item, width: getTextWidth( item, legendFontSize, 'Graphik-Regular' ) + legendBoxWidth + spaceBetweenBoxAndText + posXOffset };\r\n\r\n } );\r\n const totalLegendWidth = legendItemWidths.reduce( ( acc, currentValue ) => acc + currentValue.width, 0 );\r\n\r\n // Displays the legend box]\r\n const calculatedFullLegendWidth = totalLegendWidth - posXOffset + ( legendBoxWidth * 2 );\r\n\r\n return (\r\n // add legendBoxWidth to account for gap between legend border and legend color when translate x = 0\r\n \r\n \r\n {\r\n renderLegendLabels( legendItemWidths )\r\n }\r\n\r\n \r\n\r\n );\r\n\r\n };\r\n\r\n const columnOffset = props.width > 768 ? 200 : 150;\r\n const rectBorderWidth = props.width > 768 ? 390 : 300;\r\n const rectBorderHeight = props.width > 768 ? 70 : 65;\r\n const renderRaceEthnicityLegend = ( yMultiplier ) => {\r\n\r\n const translateLookup = [ 0, 0, 30, 30 ];\r\n\r\n\r\n return (\r\n \r\n \r\n {\r\n legend.map( ( item, i ) => {\r\n\r\n return (\r\n \r\n \r\n { item }\r\n \r\n );\r\n\r\n } )\r\n }\r\n \r\n );\r\n\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n\r\n \r\n\r\n { props.data.length === 2 &&\r\n \r\n\r\n \r\n\r\n {\r\n props.width < 768 ? : null\r\n }\r\n\r\n\r\n \r\n\r\n \r\n\r\n\r\n \r\n }\r\n {\r\n chartData.length === 4 ? renderRaceEthnicityLegend( 1 ) : renderLegend( 1 )\r\n }\r\n {\r\n props.data.length === 2 && props.width < 768 ? ( chartData.length === 4 ? renderRaceEthnicityLegend( 2 ) : renderLegend( 2 ) ) : null\r\n }\r\n\r\n \r\n\r\n
\r\n {\r\n types[1].selection === 'app-rate' ?\r\n

{ disclaimer.arnotes }

\r\n :\r\n

{ disclaimer.notes }

\r\n }\r\n

{ disclaimer.sources }

\r\n
\r\n\r\n
\r\n\r\n {\r\n renderTooltip()\r\n }\r\n \r\n );\r\n\r\n}\r\n\r\nexport default Charts;\r\n\r\nCharts.propTypes = {\r\n data: array.isRequired,\r\n saveButton: instanceOf( HTMLElement ),\r\n margin: exact( { top: number, right: number, bottom: number, left: number } ),\r\n height: number.isRequired,\r\n width: number.isRequired,\r\n disclaimer: object.isRequired,\r\n pageWrapper: object.isRequired,\r\n componentWrapper: object.isRequired,\r\n startDate: number,\r\n endDate: number,\r\n types: array,\r\n regions: array,\r\n pngExportTriggerRef: object\r\n};","/* checks the incoming data to see if there is more than one region.\r\n if yes, it returns the data combined into one array */\r\nconst dataCheck = ( data, areas, selections ) => {\r\n\r\n if ( data.length === 2 ) {\r\n\r\n // const rows = data[0].concat( data[1] );\r\n const rows = [ ...data[0], ...data[1] ];\r\n\r\n return filterData( rows, areas, selections );\r\n\r\n }\r\n else {\r\n\r\n return filterData( data[0], areas, selections );\r\n\r\n }\r\n\r\n};\r\n\r\n/* checks if there are two regions.\r\n if yes, it returns the array of column headers\r\n the data was filtered by in the filter data function.\r\n if no, it returns the the last object of the array\r\n from being sorted by length in the objectToCSV function\r\n to make sure all headers are accounted for\r\n in case there is missing data in an given row\r\n*/\r\n\r\nconst getHeaders = ( data, filters ) => {\r\n\r\n if ( data.length > 12 ) {\r\n\r\n return filters;\r\n\r\n }\r\n else {\r\n\r\n return Object.keys( data[11] );\r\n\r\n }\r\n\r\n};\r\n\r\n/* gets the region headers for filtering and cvs creation */\r\nconst getRegions = ( areas ) => {\r\n\r\n let regions = [];\r\n\r\n if ( areas.length === 2 && areas[0].region !== areas[1].region ) {\r\n\r\n let region1 = [];\r\n\r\n let region2 = [];\r\n\r\n switch ( areas[0].region ) {\r\n\r\n case 'state':\r\n region1 = [ 'state_code', 'state_name' ];\r\n break;\r\n case 'county':\r\n region1 = [ 'stcounty_fips', 'county_name' ];\r\n break;\r\n case 'msa':\r\n region1 = [ 'metro_code', 'cbsa_title' ];\r\n break;\r\n case 'puma':\r\n region1 = [ 'stpuma_fips_tab', 'puma_name_tab' ];\r\n break;\r\n\r\n }\r\n\r\n switch ( areas[1].region ) {\r\n\r\n case 'state':\r\n region2 = [ 'state_code', 'state_name' ];\r\n break;\r\n case 'county':\r\n region2 = [ 'stcounty_fips', 'county_name' ];\r\n break;\r\n case 'msa':\r\n region2 = [ 'metro_code', 'cbsa_title' ];\r\n break;\r\n case 'puma':\r\n region2 = [ 'stpuma_fips_tab', 'puma_name_tab' ];\r\n break;\r\n\r\n }\r\n\r\n regions = [ ...region1, ...region2 ];\r\n\r\n }\r\n else {\r\n\r\n switch ( areas[0].region ) {\r\n\r\n case 'state':\r\n regions = [ 'state_code', 'state_name' ];\r\n break;\r\n case 'county':\r\n regions = [ 'stcounty_fips', 'county_name' ];\r\n break;\r\n case 'msa':\r\n regions = [ 'metro_code', 'cbsa_title' ];\r\n break;\r\n case 'puma':\r\n regions = [ 'stpuma_fips_tab', 'puma_name_tab' ];\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n return regions;\r\n\r\n};\r\n\r\n/* gets the type prefix and suffix by combining the measure with the characteristic */\r\nconst getTypes = ( selections ) => {\r\n\r\n let measure = '';\r\n\r\n let characteristics = [];\r\n\r\n // measure\r\n switch ( selections[1].selection ) {\r\n\r\n case 'app-rate':\r\n measure = 'ar_';\r\n break;\r\n case 'originations':\r\n measure = 'orig_';\r\n break;\r\n case 'deni-rate':\r\n measure = 'dr_';\r\n break;\r\n case 'loan-volume':\r\n measure = 'lv_';\r\n break;\r\n case 'mla':\r\n measure = 'mla_';\r\n break;\r\n case 'deni-reason-overall':\r\n measure = 'perc_';\r\n break;\r\n case 'deni-reason-cash':\r\n measure = 'perc_cash_';\r\n break;\r\n case 'deni-reason-col':\r\n measure = 'perc_col_';\r\n break;\r\n case 'deni-reason-ch':\r\n measure = 'perc_ch_';\r\n break;\r\n case 'deni-reason-dti':\r\n measure = 'perc_dti_';\r\n break;\r\n\r\n }\r\n\r\n // characteristics\r\n switch ( selections[2].selection ) {\r\n\r\n case 'all':\r\n characteristics = [ 'all', 'total', 'cash_all', 'col_all', 'ch_all', 'dti_all', 'cash_total', 'col_total', 'ch_total', 'dti_total' ];\r\n break;\r\n case 'app-income':\r\n characteristics = [ 'app_lmi', 'app_mui' ];\r\n break;\r\n case 'neighborhood-income':\r\n characteristics = [ 'tract_lmi', 'tract_mui' ];\r\n break;\r\n case 'gender':\r\n characteristics = [ 'female', 'male', 'nonbinaryna' ];\r\n break;\r\n case 'race-ethnicity':\r\n characteristics = [ 'black', 'asian', 'hisp', 'white', 'other', 'unknown' ];\r\n break;\r\n case 'loan-type':\r\n characteristics = [ 'fha', 'conventional', 'vafsarhs' ];\r\n break;\r\n\r\n }\r\n\r\n const types = characteristics.map( ( char ) => measure + char );\r\n\r\n return types;\r\n\r\n};\r\n\r\n/* filters the data added to the cvs based on the selected types */\r\nconst filterData = ( data, areas, selections ) => {\r\n\r\n const standardFilters = [ 'loan_purpose', 'year' ];\r\n const regions = getRegions( areas );\r\n const types = getTypes( selections );\r\n const filters = standardFilters.concat( regions ).concat( types );\r\n\r\n const filteredData = [];\r\n\r\n for ( const record of data ) {\r\n\r\n const filteredHeadings = [];\r\n\r\n // checks for each filter in the created array of filters match in the selected record\r\n for ( const filter of filters ) {\r\n\r\n const filteredKey = Object.keys( record )\r\n .filter( ( key ) => key.includes ( filter ) );\r\n\r\n if ( filteredKey.length !== 0 ) {\r\n\r\n filteredHeadings.push( filteredKey );\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n const filteredRecord = filteredHeadings.reduce( ( obj, key ) => {\r\n\r\n return Object.assign( obj, {\r\n [key]: record[key]\r\n } );\r\n\r\n }, {} );\r\n\r\n filteredData.push( filteredRecord );\r\n\r\n }\r\n\r\n return objectToCsv( filteredData, selections, filters );\r\n\r\n};\r\n\r\nconst objectToCsv = ( data, selections, filters ) => {\r\n\r\n // Sorting the data by key length for cases where multiple years of data may be missing\r\n const sortedData = data.sort( ( a, b ) => {\r\n\r\n return Object.keys( a ).length - Object.keys( b ).length;\r\n\r\n } );\r\n\r\n const csvRows = [];\r\n\r\n /* Get headers as every csv data format\r\n has header (head means column name)\r\n so objects key is nothing but column name\r\n for csv data using Object.key() function.\r\n We fetch key of object as column name for\r\n csv */\r\n const headers = getHeaders( sortedData, filters );\r\n\r\n /* Using push() method we push fetched\r\n data into csvRows[] array */\r\n csvRows.push( headers.join( ',' ) );\r\n\r\n // Loop to get value of each objects key\r\n for ( const row of data ) {\r\n\r\n const values = headers.map( ( header ) => {\r\n\r\n const val = row[header];\r\n\r\n // replaces undefined/missing values with a blank to match the original data\r\n if ( val === undefined ) {\r\n\r\n return ``;\r\n\r\n }\r\n else {\r\n\r\n return `\"${ val }\"`;\r\n\r\n }\r\n\r\n\r\n } );\r\n\r\n // To add, sepearater between each value\r\n csvRows.push( values.join( ',' ) );\r\n\r\n }\r\n\r\n // changing all headers with particular prefixes to preferred prefixes for readability\r\n const denialReasons = [ 'deni-reason-overall', 'deni-reason-cash', 'deni-reason-col', 'deni-reason-ch', 'deni-reason-dti' ];\r\n\r\n if ( denialReasons.includes( selections[1].selection ) ) {\r\n\r\n csvRows[0] = csvRows[0].split( 'perc_' ).join( 'dreas_' );\r\n\r\n }\r\n\r\n if ( selections[1].selection === 'deni-rate' ) {\r\n\r\n csvRows[0] = csvRows[0].split( 'dr_' ).join( 'drate_' );\r\n\r\n }\r\n\r\n /* To add new line for each objects values\r\n and this return statement array csvRows\r\n to this function.*/\r\n return csvRows.join( '\\n' );\r\n\r\n};\r\n\r\nconst downloadData = ( records, areas, selections, filename ) => {\r\n\r\n console.log('records', records);\r\n\r\n const csv = dataCheck( records, areas, selections );\r\n\r\n // define the file type to text/csv\r\n const csvFile = new Blob( [ csv ], { type: 'text/csv' } );\r\n const downloadLink = document.createElement( 'a' );\r\n\r\n\r\n downloadLink.download = filename;\r\n downloadLink.href = window.URL.createObjectURL( csvFile );\r\n downloadLink.style.display = 'none';\r\n\r\n document.body.appendChild( downloadLink );\r\n downloadLink.click();\r\n\r\n};\r\n\r\nexport default downloadData;","import React, { useEffect, useRef, useState } from 'react';\r\nimport { object } from 'prop-types';\r\nimport Regions from './regions';\r\nimport Types from './types';\r\nimport Charts from './charts';\r\nimport downloadData from './data-download';\r\nimport exportElementAsImage from '../../../utils/exportElementAsImage';\r\nimport { timeFormat } from 'd3';\r\n\r\nconst getPropertyInfo = ( region, value ) => {\r\n\r\n let property;\r\n\r\n let code;\r\n\r\n let prefix = region;\r\n\r\n switch ( region ) {\r\n\r\n case 'state':\r\n code = value.toString().padStart( 2, '0' );\r\n property = 'state_code';\r\n break;\r\n case 'county':\r\n code = value.toString().padStart( 5, '0' );\r\n property = 'stcounty_fips';\r\n break;\r\n case 'msa':\r\n prefix = 'metro';\r\n code = value.toString();\r\n property = 'metro_code';\r\n break;\r\n case 'puma':\r\n code = value.toString().padStart( 7, '0' );\r\n property = 'stpuma_fips_tab';\r\n break;\r\n default:\r\n code = '';\r\n property = '';\r\n break;\r\n\r\n }\r\n\r\n return { prefix: prefix, code: code, property: property };\r\n\r\n};\r\n\r\nfunction debounce( fn, ms ) {\r\n\r\n let timer;\r\n\r\n return ( _ ) => {\r\n\r\n clearTimeout( timer );\r\n timer = setTimeout( ( _ ) => {\r\n\r\n timer = null;\r\n // eslint-disable-next-line babel/no-invalid-this\r\n fn.apply( this, arguments );\r\n\r\n }, ms );\r\n\r\n };\r\n\r\n}\r\nconst Form = ( { pageWrapper, componentWrapper, attributes } ) => {\r\n\r\n const { data, dataFilesPath, disclaimer, overlay } = attributes;\r\n const [ regions, setRegions ] = useState( [] );\r\n const [ showTypes, setShowTypes ] = useState( false );\r\n const [ types, setTypes ] = useState( [] );\r\n const [ clearTypes, setClearTypes ] = useState( false );\r\n const [ chartData, setChartData ] = useState( [] );\r\n\r\n const fetchedData = useRef( [] );\r\n\r\n const [ showChart, setShowChart ] = useState( false );\r\n\r\n const hmeChartWrapperRef = useRef();\r\n const pngExportTriggerRef = useRef();\r\n\r\n const offsetPadding = 20; // subtract 20 padding for right and left each\r\n const [ width, setWidth ] = useState( componentWrapper.offsetWidth - ( 2 * offsetPadding ) - 2 );\r\n\r\n useEffect( () => {\r\n\r\n if ( regions.length > 0 ) {\r\n\r\n setShowTypes( true );\r\n\r\n fetchedData.current = [];\r\n\r\n regions.forEach( ( selection ) => {\r\n\r\n const key = getPropertyInfo( selection.region, selection.value );\r\n\r\n if ( !fetchedData.current.some( ( x ) => x[key.property] === key.code ) ) {\r\n\r\n let folderPrefix = '';\r\n\r\n if ( key.prefix === 'county' ) {\r\n\r\n const numCode = parseInt( key.code );\r\n\r\n if ( numCode <= 21013 ) {\r\n\r\n folderPrefix = '01/';\r\n\r\n }\r\n else if ( numCode <= 38019 ) {\r\n\r\n folderPrefix = '02/';\r\n\r\n }\r\n else if ( numCode <= 47143 ) {\r\n\r\n folderPrefix = '03/';\r\n\r\n }\r\n else {\r\n\r\n folderPrefix = '04/';\r\n\r\n }\r\n\r\n }\r\n fetch( `${ dataFilesPath }${ key.prefix }/${ folderPrefix }${ key.prefix }_${ key.code }.json` )\r\n .then( ( result ) => result.json() )\r\n .then( ( d ) => fetchedData.current = [ ...fetchedData.current, ...d ] );\r\n\r\n }\r\n\r\n } );\r\n\r\n }\r\n else {\r\n\r\n setShowTypes( false );\r\n setTypes( [] );\r\n\r\n }\r\n setShowChart( false );\r\n\r\n }, [ regions ] );\r\n\r\n useEffect( () => {\r\n\r\n setShowChart( false );\r\n\r\n if ( types[0] !== undefined && types[1] !== undefined && types[2] !== undefined ) {\r\n\r\n setClearTypes( true );\r\n\r\n }\r\n else {\r\n\r\n setClearTypes( false );\r\n\r\n }\r\n\r\n\r\n }, [ types ] );\r\n\r\n useEffect( () => {\r\n\r\n const debouncedHandleResize = debounce( function handleResize() {\r\n\r\n const currWidth = componentWrapper.offsetWidth;\r\n\r\n if ( width === currWidth ) return;\r\n\r\n setWidth( componentWrapper.offsetWidth - ( 2 * offsetPadding ) - 2 );\r\n\r\n }, 25 );\r\n\r\n window.addEventListener( 'resize', debouncedHandleResize );\r\n\r\n return ( _ ) => {\r\n\r\n window.removeEventListener( 'resize', debouncedHandleResize );\r\n\r\n };\r\n\r\n }, [] );\r\n\r\n const submitForm = () => {\r\n\r\n if ( clearTypes ) {\r\n\r\n setShowChart( true );\r\n\r\n createChart();\r\n\r\n }\r\n\r\n };\r\n\r\n const createChart = () => {\r\n\r\n const purposeData = fetchedData.current.filter( ( x ) => x['loan_purpose'] === types[0].selection );\r\n\r\n const cd = [];\r\n\r\n regions.forEach( ( selection ) => {\r\n\r\n const key = selection.label === 'United States' ? { property: 'national_code', code: '1', prefix: 'nation' }\r\n : getPropertyInfo( selection.region, selection.value );\r\n\r\n const tmp = purposeData.filter( ( x ) => Number( x[key.property] ) === Number( key.code ) );\r\n\r\n cd.push( tmp.sort( ( a, b ) => ( a['year'] < b['year'] ? -1 : 1 ) ) );\r\n\r\n } );\r\n\r\n setChartData( cd );\r\n\r\n\r\n };\r\n\r\n const saveToPNG = () => {\r\n\r\n const formatTime = timeFormat( '%b-%d-%Y' );\r\n const title = `Home-Mortage-Explorer-${ formatTime( new Date ) }`;\r\n\r\n exportElementAsImage( hmeChartWrapperRef.current, pngExportTriggerRef.current, title );\r\n\r\n };\r\n\r\n const downloadDataClick = () => {\r\n\r\n downloadData( chartData, regions, types, 'home-mortgage-explorer-dataset.csv' );\r\n\r\n };\r\n\r\n return (\r\n
\r\n

Explore home mortgage data for a single region, or compare two regions.

\r\n \r\n \r\n\r\n {\r\n showChart &&\r\n
\r\n

Select another combination to generate a new chart.

\r\n
\r\n }\r\n\r\n {\r\n showTypes &&\r\n
\r\n \r\n
\r\n }\r\n\r\n {\r\n showChart ?\r\n <>\r\n
\r\n\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n :\r\n null\r\n }\r\n\r\n
\r\n );\r\n\r\n};\r\n\r\nexport default Form;\r\n\r\n\r\nForm.propTypes = {\r\n pageWrapper: object.isRequired,\r\n componentWrapper: object.isRequired,\r\n attributes: object.isRequired\r\n};","import './css/index.css';\r\nimport React from 'react';\r\nimport { render } from 'react-dom';\r\nimport Form from './form';\r\n\r\nexport default class {\r\n\r\n static name = 'Form';\r\n\r\n constructor( config ) {\r\n\r\n Object.assign( this, config );\r\n\r\n this.pageWrapper = document.querySelector( '.page' );\r\n\r\n }\r\n\r\n ready() {\r\n\r\n render(\r\n , this.element\r\n );\r\n\r\n }\r\n\r\n}"],"sourceRoot":""}