datly 0.0.1 ā 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/datly.cjs +1 -0
- package/dist/datly.mjs +1 -0
- package/dist/datly.umd.js +1 -1
- package/dist/datly.umd.js.map +1 -0
- package/package.json +24 -11
- package/src/core/dataLoader.js +407 -0
- package/src/core/utils.js +306 -0
- package/src/core/validator.js +205 -0
- package/src/dataviz/index.js +1566 -0
- package/src/descriptive/centralTendency.js +208 -0
- package/src/descriptive/dispersion.js +273 -0
- package/src/descriptive/position.js +268 -0
- package/src/descriptive/shape.js +336 -0
- package/src/index.js +480 -0
- package/src/inferential/confidenceIntervals.js +561 -0
- package/src/inferential/hypothesisTesting.js +527 -0
- package/src/inferential/normalityTests.js +587 -0
- package/src/insights/autoAnalyser.js +685 -0
- package/src/insights/interpreter.js +543 -0
- package/src/insights/patternDetector.js +897 -0
- package/src/insights/reportGenerator.js +1072 -0
- package/src/ml/ClassificationMetrics.js +336 -0
- package/src/ml/DecisionTree.js +412 -0
- package/src/ml/KNearestNeighbors.js +317 -0
- package/src/ml/LinearRegression.js +179 -0
- package/src/ml/LogisticRegression.js +396 -0
- package/src/ml/MachineLearning.js +490 -0
- package/src/ml/NaiveBayes.js +296 -0
- package/src/ml/RandomForest.js +323 -0
- package/src/ml/SupportVectorMachine.js +299 -0
- package/src/ml/baseModel.js +106 -0
- package/src/multivariate/correlation.js +653 -0
- package/src/multivariate/regression.js +660 -0
package/dist/datly.umd.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t||self).Datly=n()}(this,function(){function t(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,r=Array(n);e<n;e++)r[e]=t[e];return r}function n(n,e){var r="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(r)return(r=r.call(n)).next.bind(r);if(Array.isArray(n)||(r=function(n,e){if(n){if("string"==typeof n)return t(n,e);var r={}.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(n,e):void 0}}(n))||e&&n&&"number"==typeof n.length){r&&(n=r);var i=0;return function(){return i>=n.length?{done:!0}:{done:!1,value:n[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function e(){return e=Object.assign?Object.assign.bind():function(t){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},e.apply(null,arguments)}function r(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,i(t,n)}function i(t,n){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,n){return t.__proto__=n,t},i(t,n)}var a=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.loadCSV=function(t,n){void 0===n&&(n={});var r=e({},{delimiter:",",header:!0,skipEmptyLines:!0,encoding:"utf8"},n);try{if("undefined"!=typeof window&&window.fs){var i=window.fs.readFileSync?window.fs.readFileSync(t,{encoding:r.encoding}):window.fs.readFile(t,{encoding:r.encoding});return this.parseCSV(i,r)}throw new Error("File system not available")}catch(t){throw new Error("Failed to load CSV: "+t.message)}},n.loadJSON=function(t,n){void 0===n&&(n={});var r=e({},{validateTypes:!0,autoInferHeaders:!0},n);try{var i;if("string"==typeof t)if(t.endsWith(".json")&&"undefined"!=typeof window&&window.fs){var a=window.fs.readFileSync?window.fs.readFileSync(t,{encoding:"utf8"}):window.fs.readFile(t,{encoding:"utf8"});i=JSON.parse(a)}else i=JSON.parse(t);else{if("object"!=typeof t)throw new Error("Invalid JSON input: must be string, file path, or object");i=t}return this.parseJSON(i,r)}catch(t){throw new Error("Failed to load JSON: "+t.message)}},n.parseJSON=function(t,n){if(!t)throw new Error("JSON data is empty or null");if(Array.isArray(t))return this.parseJSONArray(t,n);if(t.headers&&t.data)return this.parseStructuredJSON(t,n);if("object"==typeof t)return this.parseJSONObject(t,n);throw new Error("Unsupported JSON format")},n.parseJSONArray=function(t,n){var e=this;if(0===t.length)throw new Error("JSON array is empty");var r,i=t[0];if("object"!=typeof i||null===i)throw new Error("JSON array must contain objects");if(n.autoInferHeaders){var a=new Set;t.forEach(function(t){"object"==typeof t&&null!==t&&Object.keys(t).forEach(function(t){return a.add(t)})}),r=Array.from(a)}else r=Object.keys(i);var o=t.map(function(t,i){if("object"!=typeof t||null===t)return console.warn("Row "+i+" is not an object, skipping"),null;var a={};return r.forEach(function(r){var i=t[r];n.validateTypes&&(i=e.inferType(i)),a[r]=i}),a}).filter(function(t){return null!==t});return{headers:r,data:o,length:o.length,columns:r.length,source:"json_array"}},n.parseStructuredJSON=function(t,n){var e=this,r=t.headers,i=t.data;if(!Array.isArray(r))throw new Error("Headers must be an array");if(!Array.isArray(i))throw new Error("Data must be an array");if(0===r.length)throw new Error("Headers array is empty");var a=i.map(function(t,i){if(Array.isArray(t)){var a={};return r.forEach(function(r,i){var o=i<t.length?t[i]:null;n.validateTypes&&(o=e.inferType(o)),a[r]=o}),a}if("object"==typeof t&&null!==t){var o={};return r.forEach(function(r){var i=t[r];n.validateTypes&&(i=e.inferType(i)),o[r]=i}),o}return console.warn("Row "+i+" has invalid format, skipping"),null}).filter(function(t){return null!==t});return{headers:r,data:a,length:a.length,columns:r.length,source:"structured_json"}},n.parseJSONObject=function(t,n){var e=this,r=Object.entries(t);if(0===r.length)throw new Error("JSON object is empty");var i=r.map(function(t){var r=t[1];return{key:t[0],value:n.validateTypes?e.inferType(r):r}});return{headers:["key","value"],data:i,length:i.length,columns:2,source:"json_object"}},n.parseCSV=function(t,n){var e=this,r=t.split("\n").filter(function(t){return!n.skipEmptyLines||""!==t.trim()});if(0===r.length)throw new Error("CSV file is empty");for(var i=n.header?r[0].split(n.delimiter).map(function(t){return t.trim().replace(/['"]/g,"")}):Array.from({length:r[0].split(n.delimiter).length},function(t,n){return"col_"+n}),a=[],o=function(){var t=r[u].split(n.delimiter);if(t.length===i.length){var o={};i.forEach(function(n,r){var i=t[r].trim().replace(/['"]/g,"");o[n]=e.inferType(i)}),a.push(o)}},u=n.header?1:0;u<r.length;u++)o();return{headers:i,data:a,length:a.length,columns:i.length}},n.inferType=function(t){return""===t||"null"===t||"NULL"===t||"NaN"===t?null:"true"===t||"TRUE"===t||"false"!==t&&"FALSE"!==t&&(/^-?\d+$/.test(t)?parseInt(t,10):/^-?\d*\.\d+$/.test(t)?parseFloat(t):t)},n.cleanData=function(t){var n=e({},t,{data:t.data.filter(function(t){return Object.values(t).some(function(t){return null!=t})})});return n.length=n.data.length,n},n.getDataInfo=function(t){var n={rows:t.length,columns:t.columns,headers:t.headers,types:{},nullCounts:{},uniqueCounts:{}};return t.headers.forEach(function(e){var r=t.data.map(function(t){return t[e]}),i=r.filter(function(t){return null!=t}),a=[].concat(new Set(i.map(function(t){return typeof t})));n.types[e]=1===a.length?a[0]:"mixed",n.nullCounts[e]=r.length-i.length,n.uniqueCounts[e]=new Set(i).size}),n},n.getColumn=function(t,n){if(!t.headers.includes(n))throw new Error("Column '"+n+"' not found");return t.data.map(function(t){return t[n]}).filter(function(t){return null!=t&&!isNaN(t)})},n.getColumns=function(t,n){var e=this,r={};return n.forEach(function(n){r[n]=e.getColumn(t,n)}),r},n.filterRows=function(t,n){return e({},t,{data:t.data.filter(n),length:t.data.filter(n).length})},n.sortBy=function(t,n,r){void 0===r&&(r="asc");var i=[].concat(t.data).sort(function(t,e){var i=t[n],a=e[n];return null==i?1:null==a?-1:"string"==typeof i&&"string"==typeof a?"asc"===r?i.localeCompare(a):a.localeCompare(i):"asc"===r?i-a:a-i});return e({},t,{data:i})},t}(),o=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.validateData=function(t){var n=[],e=[];return t&&"object"==typeof t?(t.data&&Array.isArray(t.data)||n.push("Dataset must contain a data array"),t.headers&&Array.isArray(t.headers)||n.push("Dataset must contain a headers array"),t.data&&0===t.data.length&&e.push("Dataset is empty"),t.data&&t.headers&&(new Set(t.headers).size!==t.headers.length&&n.push("Duplicate column headers found"),t.data.forEach(function(n,r){var i=Object.keys(n),a=t.headers.filter(function(t){return!i.includes(t)}),o=i.filter(function(n){return!t.headers.includes(n)});a.length>0&&e.push("Row "+r+": Missing columns: "+a.join(", ")),o.length>0&&e.push("Row "+r+": Extra columns: "+o.join(", "))})),{valid:0===n.length,errors:n,warnings:e}):(n.push("Dataset must be an object"),{valid:!1,errors:n,warnings:e})},n.validateNumericColumn=function(t){if(!Array.isArray(t))throw new Error("Column must be an array");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("Column contains no valid numeric values");return{valid:!0,validCount:n.length,invalidCount:t.length-n.length,cleanData:n}},n.validateSampleSize=function(t,n){if(void 0===n&&(n=2),!Array.isArray(t))throw new Error("Sample must be an array");if(t.length<n)throw new Error("Sample size ("+t.length+") must be at least "+n);return!0},n.validateConfidenceLevel=function(t){if("number"!=typeof t||t<=0||t>=1)throw new Error("Confidence level must be a number between 0 and 1");return!0},n.validateCorrelationInputs=function(t,n){if(this.validateNumericColumn(t),this.validateNumericColumn(n),t.length!==n.length)throw new Error("Columns must have the same length");if(t.length<3)throw new Error("Need at least 3 paired observations for correlation");return!0},n.validateRegressionInputs=function(t,n){if(this.validateNumericColumn(t),this.validateNumericColumn(n),t.length!==n.length)throw new Error("X and Y arrays must have the same length");if(t.length<3)throw new Error("Need at least 3 data points for regression");if(0===this.calculateVariance(t))throw new Error("X values must have non-zero variance");return!0},n.calculateVariance=function(t){var n=t.reduce(function(t,n){return t+n},0)/t.length;return t.reduce(function(t,e){return t+Math.pow(e-n,2)},0)/(t.length-1)},n.validateGroupsForANOVA=function(t){var n=this;if(!Array.isArray(t)||t.length<2)throw new Error("ANOVA requires at least 2 groups");return t.forEach(function(t,e){if(!Array.isArray(t))throw new Error("Group "+e+" must be an array");n.validateSampleSize(t,2),n.validateNumericColumn(t)}),!0},n.validateContingencyTable=function(t,n){if(!Array.isArray(t)||!Array.isArray(n))throw new Error("Both columns must be arrays");if(t.length!==n.length)throw new Error("Columns must have the same length");if(t.length<5)throw new Error("Need at least 5 observations for chi-square test");return!0},n.isInteger=function(t){return"number"==typeof t&&Number.isInteger(t)},n.isPositive=function(t){return"number"==typeof t&&t>0},n.isInRange=function(t,n,e){return"number"==typeof t&&t>=n&&t<=e},n.hasMinimumObservations=function(t,n){return Array.isArray(t)&&t.length>=n},n.checkForConstantValues=function(t){return 1===new Set(t).size},n.validateHypothesisTestInputs=function(t,n,e){if(this.validateSampleSize(t,2),("two-sample"===e||"paired"===e)&&(this.validateSampleSize(n,2),"paired"===e&&t.length!==n.length))throw new Error("Paired samples must have the same length");return this.validateNumericColumn(t),n&&this.validateNumericColumn(n),!0},t}(),u=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.detectOutliers=function(t,n){void 0===n&&(n="iqr");var e=[].concat(t).sort(function(t,n){return t-n}),r=[],i=[];switch(n){case"iqr":var a=this.quantile(e,.25),o=this.quantile(e,.75),u=o-a,s=a-1.5*u,c=o+1.5*u;t.forEach(function(t,n){(t<s||t>c)&&(r.push(t),i.push(n))});break;case"zscore":var l=this.mean(t),f=this.standardDeviation(t);t.forEach(function(t,n){Math.abs((t-l)/f)>3&&(r.push(t),i.push(n))});break;case"modified_zscore":var h=this.median(t),d=t.map(function(t){return Math.abs(t-h)}),p=this.median(d);t.forEach(function(t,n){Math.abs(.6745*(t-h)/p)>3.5&&(r.push(t),i.push(n))});break;default:throw new Error("Unknown outlier detection method: "+n)}return{outliers:r,indices:i,count:r.length,percentage:r.length/t.length*100}},n.frequencyTable=function(t){var n={},e=t.length;t.forEach(function(t){var e=null==t?"null":String(t);n[e]=(n[e]||0)+1});var r=Object.entries(n).map(function(t){var n=t[0],r=t[1];return{value:"null"===n?null:n,frequency:r,relativeFrequency:r/e,percentage:r/e*100}});return r.sort(function(t,n){return n.frequency-t.frequency})},n.groupBy=function(t,n,e){var r=this,i={};t.data.forEach(function(t){var e=t[n];i[e]||(i[e]=[]),i[e].push(t)});var a={};return Object.entries(i).forEach(function(t){var n=t[0],i=t[1];a[n]={count:i.length,data:i},e&&"object"==typeof e&&Object.entries(e).forEach(function(t){var e=t[0],o=t[1],u=i.map(function(t){return t[e]}).filter(function(t){return"number"==typeof t&&!isNaN(t)});u.length>0&&(a[n][o+"_"+e]=r.applyAggregation(u,o))})}),a},n.applyAggregation=function(t,n){switch(n){case"mean":return this.mean(t);case"median":return this.median(t);case"sum":return t.reduce(function(t,n){return t+n},0);case"min":return Math.min.apply(Math,t);case"max":return Math.max.apply(Math,t);case"std":return this.standardDeviation(t);case"var":return this.variance(t);case"count":return t.length;default:throw new Error("Unknown aggregation function: "+n)}},n.sample=function(t,n,r){if(void 0===r&&(r="random"),n>=t.length)return e({},t);var i;switch(r){case"random":i=this.randomSample(t.length,n).map(function(n){return t.data[n]});break;case"systematic":var a=Math.floor(t.length/n);i=[];for(var o=0;o<n;o++)i.push(t.data[o*a]);break;case"first":i=t.data.slice(0,n);break;case"last":i=t.data.slice(-n);break;default:throw new Error("Unknown sampling method: "+r)}return e({},t,{data:i,length:i.length})},n.randomSample=function(t,n){for(var e=Array.from({length:t},function(t,n){return n}),r=[],i=0;i<n;i++){var a=Math.floor(Math.random()*e.length);r.push(e.splice(a,1)[0])}return r},n.bootstrap=function(t,n,e){void 0===e&&(e=1e3);for(var r=[],i=0;i<e;i++){for(var a=[],o=0;o<t.length;o++){var u=Math.floor(Math.random()*t.length);a.push(t[u])}var s=this.applyStatistic(a,n);r.push(s)}return{bootstrapStats:r.sort(function(t,n){return t-n}),mean:this.mean(r),standardError:this.standardDeviation(r),confidenceInterval:{lower:this.quantile(r,.025),upper:this.quantile(r,.975)}}},n.applyStatistic=function(t,n){switch(n){case"mean":return this.mean(t);case"median":return this.median(t);case"std":return this.standardDeviation(t);case"var":return this.variance(t);default:if("function"==typeof n)return n(t);throw new Error("Unknown statistic: "+n)}},n.contingencyTable=function(t,n){var e=[].concat(new Set(t)),r=[].concat(new Set(n)),i={},a={row:{},col:{},grand:0};e.forEach(function(t){i[t]={},a.row[t]=0}),r.forEach(function(t){a.col[t]=0});for(var o=0;o<t.length;o++){var u=t[o],s=n[o];i[u][s]||(i[u][s]=0),i[u][s]++,a.row[u]++,a.col[s]++,a.grand++}return e.forEach(function(t){r.forEach(function(n){i[t][n]||(i[t][n]=0)})}),{table:i,totals:a,rows:e,columns:r}},n.mean=function(t){return t.reduce(function(t,n){return t+n},0)/t.length},n.median=function(t){var n=[].concat(t).sort(function(t,n){return t-n}),e=Math.floor(n.length/2);return n.length%2==0?(n[e-1]+n[e])/2:n[e]},n.quantile=function(t,n){var e=[].concat(t).sort(function(t,n){return t-n}),r=(e.length-1)*n,i=Math.floor(r),a=Math.ceil(r),o=r%1;return i===a?e[i]:e[i]*(1-o)+e[a]*o},n.standardDeviation=function(t){return Math.sqrt(this.variance(t))},n.variance=function(t){var n=this.mean(t);return t.reduce(function(t,e){return t+Math.pow(e-n,2)},0)/(t.length-1)},n.round=function(t,n){return void 0===n&&(n=4),Math.round(t*Math.pow(10,n))/Math.pow(10,n)},n.formatNumber=function(t,n){return void 0===n&&(n=4),"number"!=typeof t?t:this.round(t,n)},t}(),s=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.mean=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");return n.reduce(function(t,n){return t+n},0)/n.length},n.median=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");var e=n.sort(function(t,n){return t-n}),r=Math.floor(e.length/2);return e.length%2==0?(e[r-1]+e[r])/2:e[r]},n.mode=function(t){var n=this;if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e={},r=0;t.forEach(function(t){var n=null==t?"null":String(t);e[n]=(e[n]||0)+1,r=Math.max(r,e[n])});var i=Object.entries(e).filter(function(t){return t[1]===r}).map(function(t){var e=t[0];return"null"===e?null:n.parseValue(e)});return{values:i,frequency:r,isMultimodal:i.length>1,isUniform:1===r&&Object.keys(e).length===t.length}},n.parseValue=function(t){return/^-?\d+$/.test(t)?parseInt(t,10):/^-?\d*\.\d+$/.test(t)?parseFloat(t):"true"===t||"false"!==t&&t},n.geometricMean=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)&&t>0});if(0===n.length)throw new Error("Geometric mean requires positive numeric values");var e=n.reduce(function(t,n){return t+Math.log(n)},0);return Math.exp(e/n.length)},n.harmonicMean=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)&&t>0});if(0===n.length)throw new Error("Harmonic mean requires positive numeric values");var e=n.reduce(function(t,n){return t+1/n},0);return n.length/e},n.trimmedMean=function(t,n){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");if("number"!=typeof n||n<0||n>=50)throw new Error("Percentage must be between 0 and 50");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");var r=e.sort(function(t,n){return t-n}),i=Math.floor(n/100*r.length),a=r.slice(i,r.length-i);if(0===a.length)throw new Error("Too much trimming - no values remain");return a.reduce(function(t,n){return t+n},0)/a.length},n.quadraticMean=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");var e=n.reduce(function(t,n){return t+n*n},0);return Math.sqrt(e/n.length)},n.weightedMean=function(t,n){if(!Array.isArray(t)||!Array.isArray(n))throw new Error("Values and weights must be arrays");if(t.length!==n.length)throw new Error("Values and weights must have the same length");if(0===t.length)throw new Error("Arrays must not be empty");for(var e=[],r=0;r<t.length;r++)"number"==typeof t[r]&&"number"==typeof n[r]&&!isNaN(t[r])&&!isNaN(n[r])&&isFinite(t[r])&&isFinite(n[r])&&n[r]>=0&&e.push({value:t[r],weight:n[r]});if(0===e.length)throw new Error("No valid value-weight pairs found");var i=e.reduce(function(t,n){return t+n.weight},0);if(0===i)throw new Error("Total weight cannot be zero");var a=e.reduce(function(t,n){return t+n.value*n.weight},0);return a/i},n.midrange=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");return(Math.min.apply(Math,n)+Math.max.apply(Math,n))/2},t}(),c=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.variance=function(t,n){if(void 0===n&&(n=!0),!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");if(n&&e.length<2)throw new Error("Sample variance requires at least 2 values");var r=e.reduce(function(t,n){return t+n},0)/e.length,i=e.reduce(function(t,n){return t+Math.pow(n-r,2)},0);return i/(n?e.length-1:e.length)},n.standardDeviation=function(t,n){return void 0===n&&(n=!0),Math.sqrt(this.variance(t,n))},n.range=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");var e=Math.min.apply(Math,n),r=Math.max.apply(Math,n);return{range:r-e,min:e,max:r}},n.interquartileRange=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");var e=n.sort(function(t,n){return t-n}),r=this.quantile(e,.25),i=this.quantile(e,.75);return{iqr:i-r,q1:r,q3:i}},n.quantile=function(t,n){var e=(t.length-1)*n,r=Math.floor(e),i=Math.ceil(e),a=e%1;return r===i?t[r]:t[r]*(1-a)+t[i]*a},n.coefficientOfVariation=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");var e=n.reduce(function(t,n){return t+n},0)/n.length;if(0===e)throw new Error("Cannot calculate coefficient of variation when mean is zero");var r=this.standardDeviation(t);return{cv:r/Math.abs(e),cvPercent:r/Math.abs(e)*100}},n.meanAbsoluteDeviation=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");var e=n.reduce(function(t,n){return t+n},0)/n.length,r=n.reduce(function(t,n){return t+Math.abs(n-e)},0);return{mad:r/n.length,mean:e}},n.medianAbsoluteDeviation=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");var e=n.sort(function(t,n){return t-n}),r=this.quantile(e,.5),i=n.map(function(t){return Math.abs(t-r)}).sort(function(t,n){return t-n});return{mad:this.quantile(i,.5),median:r}},n.standardError=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");return this.standardDeviation(t)/Math.sqrt(n.length)},n.quartileCoefficient=function(t){var n=this.interquartileRange(t),e=n.q1,r=n.q3;if(e+r===0)throw new Error("Cannot calculate quartile coefficient when Q1 + Q3 = 0");return(r-e)/(r+e)},n.percentileRange=function(t,n,e){if(n>=e)throw new Error("Lower percentile must be less than upper percentile");if(n<0||e>100)throw new Error("Percentiles must be between 0 and 100");var r=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===r.length)throw new Error("No valid numeric values found");var i=r.sort(function(t,n){return t-n}),a=this.quantile(i,n/100),o=this.quantile(i,e/100);return{range:o-a,lowerValue:a,upperValue:o,lowerPercentile:n,upperPercentile:e}},n.giniCoefficient=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)&&t>=0});if(0===n.length)throw new Error("Gini coefficient requires non-negative numeric values");var e=n.sort(function(t,n){return t-n}),r=e.length,i=e.reduce(function(t,n){return t+n},0)/r;if(0===i)return 0;for(var a=0,o=0;o<r;o++)for(var u=0;u<r;u++)a+=Math.abs(e[o]-e[u]);return a/(2*r*r*i)},n.robustScale=function(t){var n=this.interquartileRange(t),e=this.quantile(t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}).sort(function(t,n){return t-n}),.5);return{scaledValues:t.map(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)?0!==n.iqr?(t-e)/n.iqr:0:null}),median:e,iqr:n.iqr}},t}(),l=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.quantile=function(t,n){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");if("number"!=typeof n||n<0||n>1)throw new Error("Quantile must be between 0 and 1");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");var r=e.sort(function(t,n){return t-n}),i=(r.length-1)*n,a=Math.floor(i),o=Math.ceil(i),u=i%1;return a===o?r[a]:r[a]*(1-u)+r[o]*u},n.percentile=function(t,n){if("number"!=typeof n||n<0||n>100)throw new Error("Percentile must be between 0 and 100");return this.quantile(t,n/100)},n.quartiles=function(t){return{q1:this.quantile(t,.25),q2:this.quantile(t,.5),q3:this.quantile(t,.75),iqr:this.quantile(t,.75)-this.quantile(t,.25)}},n.quintiles=function(t){return{q1:this.quantile(t,.2),q2:this.quantile(t,.4),q3:this.quantile(t,.6),q4:this.quantile(t,.8)}},n.deciles=function(t){for(var n={},e=1;e<=9;e++)n["d"+e]=this.quantile(t,e/10);return n},n.percentileRank=function(t,n){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");if("number"!=typeof n||!isFinite(n))throw new Error("Value must be a finite number");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");return(e.filter(function(t){return t<n}).length+.5*e.filter(function(t){return t===n}).length)/e.length*100},n.zScore=function(t,n){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");if("number"!=typeof n||!isFinite(n))throw new Error("Value must be a finite number");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");var r=e.reduce(function(t,n){return t+n},0)/e.length,i=e.reduce(function(t,n){return t+Math.pow(n-r,2)},0)/(e.length-1),a=Math.sqrt(i);if(0===a)throw new Error("Cannot calculate z-score when standard deviation is zero");return(n-r)/a},n.boxplotStats=function(t){var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");var e=n.sort(function(t,n){return t-n}),r=this.quantile(e,.25),i=this.quantile(e,.5),a=this.quantile(e,.75),o=a-r,u=r-1.5*o,s=a+1.5*o,c=e.filter(function(t){return t<u||t>s}),l=e.filter(function(t){return t>=u&&t<=s});return{min:Math.min.apply(Math,l),q1:r,median:i,q3:a,max:Math.max.apply(Math,l),iqr:o,lowerFence:u,upperFence:s,outliers:c,outlierCount:c.length}},n.fiveNumberSummary=function(t){var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");return{minimum:Math.min.apply(Math,n),q1:this.quantile(n,.25),median:this.quantile(n,.5),q3:this.quantile(n,.75),maximum:Math.max.apply(Math,n)}},n.rank=function(t,n){if(void 0===n&&(n="average"),!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e=[];if(t.forEach(function(t,n){"number"==typeof t&&!isNaN(t)&&isFinite(t)&&e.push({value:t,originalIndex:n})}),0===e.length)throw new Error("No valid numeric values found");e.sort(function(t,n){return t.value-n.value});for(var r=new Array(t.length).fill(null),i=1,a=function(t){for(var a,u=e[t].value,s=[t];t+1<e.length&&e[t+1].value===u;)t++,s.push(t);switch(n){case"average":a=(i+i+s.length-1)/2;break;case"min":a=i;break;case"max":a=i+s.length-1;break;case"first":return s.forEach(function(t,n){r[e[t].originalIndex]=i+n}),i+=s.length,o=t,1;default:throw new Error("Unknown ranking method. Use: average, min, max, or first")}s.forEach(function(t){r[e[t].originalIndex]=a}),i+=s.length,o=t},o=0;o<e.length;o++)a(o);return r},n.normalizedRank=function(t){var n=this.rank(t),e=n.filter(function(t){return null!==t}),r=Math.max.apply(Math,e);return n.map(function(t){return null!==t?(t-1)/(r-1):null})},n.standardizedValues=function(t){var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");var e=n.reduce(function(t,n){return t+n},0)/n.length,r=n.reduce(function(t,n){return t+Math.pow(n-e,2)},0)/(n.length-1),i=Math.sqrt(r);return t.map(0===i?function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)?0:null}:function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)?(t-e)/i:null})},t}(),f=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.skewness=function(t,n){if(void 0===n&&(n=!0),!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(e.length<3)throw new Error("Skewness calculation requires at least 3 values");var r=e.length,i=e.reduce(function(t,n){return t+n},0)/r,a=e.reduce(function(t,n){return t+Math.pow(n-i,2)},0)/(r-1),o=Math.sqrt(a);if(0===o)return 0;var u=e.reduce(function(t,n){return t+Math.pow((n-i)/o,3)},0);return n?u/r:r/((r-1)*(r-2))*u},n.kurtosis=function(t,n,e){if(void 0===n&&(n=!0),void 0===e&&(e=!0),!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var r=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(r.length<4)throw new Error("Kurtosis calculation requires at least 4 values");var i=r.length,a=r.reduce(function(t,n){return t+n},0)/i,o=r.reduce(function(t,n){return t+Math.pow(n-a,2)},0)/(i-1),u=Math.sqrt(o);if(0===u)return e?-3:0;var s,c=r.reduce(function(t,n){return t+Math.pow((n-a)/u,4)},0);return s=n?c/i:i*(i+1)/((i-1)*(i-2)*(i-3))*c-3*Math.pow(i-1,2)/((i-2)*(i-3)),e?s-3:s},n.isNormalDistribution=function(t,n){void 0===n&&(n=.05);var e=this.shapiroWilkTest(t),r=this.jarqueBeraTest(t);return{shapiroWilk:{statistic:e.statistic,pValue:e.pValue,isNormal:e.pValue>n},jarqueBera:{statistic:r.statistic,pValue:r.pValue,isNormal:r.pValue>n},skewness:this.skewness(t,!1),kurtosis:this.kurtosis(t,!1,!0),isNormalByTests:e.pValue>n&&r.pValue>n}},n.shapiroWilkTest=function(t){var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(n.length<3||n.length>5e3)throw new Error("Shapiro-Wilk test requires between 3 and 5000 observations");for(var e=n.length,r=[].concat(n).sort(function(t,n){return t-n}),i=r.reduce(function(t,n){return t+n},0)/e,a=r.reduce(function(t,n){return t+Math.pow(n-i,2)},0),o=0,u=0;u<Math.floor(e/2);u++)o+=this.shapiroWilkCoefficient(u+1,e)*(r[e-1-u]-r[u]);var s=o*o/a,c=this.shapiroWilkPValue(s,e);return{statistic:s,pValue:c,isNormal:c>.05}},n.shapiroWilkCoefficient=function(t,n){return n<=10&&t<=n?[0,.7071,.7071,.6872,.6646,.6431,.6233,.6052,.5888,.5739,.5601][t]||.5:.5+1*this.normalInverse((t-.375)/(n+.25))},n.normalInverse=function(t){if(t<=0||t>=1)throw new Error("p must be between 0 and 1");if(t>.5)return-this.normalInverse(1-t);var n=Math.sqrt(-2*Math.log(t));return(((((2.506628277459239*n-30.66479806614716)*n+138.357751867269)*n-275.9285104469687)*n+220.9460984245205)*n-39.69683028665376)/((((-13.28068155288572*n+66.80131188771972)*n-155.6989798598866)*n+161.5858368580409)*n-54.47609879822406)*n+1},n.shapiroWilkPValue=function(t,n){if(n<3)return 1;if(t>=1)return 1;if(t<=0)return 0;var e,r=Math.log(t);return e=n<=11?-(.459*n-2.273)*r:(r-(-1.5861-.31082*Math.log(n)-.083751*Math.pow(Math.log(n),2)+.0038915*Math.pow(Math.log(n),3)))/Math.exp(-.4803-.082676*Math.log(n)+.0030302*Math.pow(Math.log(n),2)),1-this.standardNormalCDF(e)},n.jarqueBeraTest=function(t){var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(n.length<4)throw new Error("Jarque-Bera test requires at least 4 observations");var e=n.length,r=this.skewness(t,!1),i=this.kurtosis(t,!1,!0),a=e/6*(Math.pow(r,2)+Math.pow(i,2)/4),o=1-this.chiSquareCDF(a,2);return{statistic:a,pValue:o,skewness:r,kurtosis:i,isNormal:o>.05}},n.standardNormalCDF=function(t){return.5*(1+this.erf(t/Math.sqrt(2)))},n.erf=function(t){var n=t<0?-1:1,e=1/(1+.3275911*(t=Math.abs(t)));return n*(1-((((1.061405429*e-1.453152027)*e+1.421413741)*e-.284496736)*e+.254829592)*e*Math.exp(-t*t))},n.chiSquareCDF=function(t,n){return t<=0?0:this.incompleteGamma(n/2,t/2)/this.gamma(n/2)},n.incompleteGamma=function(t,n){if(n<=0)return 0;if(t<=0)return 1;for(var e=1,r=1,i=1;i<100&&(e+=r*=n/(t+i-1),!(Math.abs(r)<1e-12));i++);return Math.pow(n,t)*Math.exp(-n)*e},n.gamma=function(t){if(t<.5)return Math.PI/(Math.sin(Math.PI*t)*this.gamma(1-t));t-=1;var n=1,e=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7];n=e[0];for(var r=1;r<e.length;r++)n+=e[r]/(t+r);var i=t+e.length-1.5;return Math.sqrt(2*Math.PI)*Math.pow(i,t+.5)*Math.exp(-i)*n},n.momentCoefficient=function(t,n){if("number"!=typeof n||n<1)throw new Error("Moment must be a positive integer");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");var r=e.reduce(function(t,n){return t+n},0)/e.length,i=e.reduce(function(t,e){return t+Math.pow(e-r,n)},0);return i/e.length},n.pearsonSkewness=function(t,n){void 0===n&&(n=1);var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");var r=e.reduce(function(t,n){return t+n},0)/e.length,i=e.reduce(function(t,n){return t+Math.pow(n-r,2)},0)/(e.length-1),a=Math.sqrt(i);if(0===a)return 0;if(1===n){var o=[].concat(e).sort(function(t,n){return t-n}),u=o.length%2==0?(o[o.length/2-1]+o[o.length/2])/2:o[Math.floor(o.length/2)];return(r-u)/a}if(2===n)return 3*(r-this.median(e))/a;throw new Error("Mode must be 1 or 2")},n.median=function(t){var n=[].concat(t).sort(function(t,n){return t-n}),e=Math.floor(n.length/2);return n.length%2==0?(n[e-1]+n[e])/2:n[e]},t}(),h=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.tTest=function(t,n,e,r){void 0===e&&(e="two-sample"),void 0===r&&(r=.05);var i=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(i.length<2)throw new Error("Sample 1 must have at least 2 valid values");switch(e){case"one-sample":return this.oneSampleTTest(i,n,r);case"two-sample":var a=n.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(a.length<2)throw new Error("Sample 2 must have at least 2 valid values");return this.twoSampleTTest(i,a,r);case"paired":if(t.length!==n.length)throw new Error("Paired samples must have the same length");return this.pairedTTest(i,n,r);default:throw new Error("Unknown t-test type. Use: one-sample, two-sample, or paired")}},n.oneSampleTTest=function(t,n,e){void 0===e&&(e=.05);var r=t.length,i=t.reduce(function(t,n){return t+n},0)/r,a=t.reduce(function(t,n){return t+Math.pow(n-i,2)},0)/(r-1),o=Math.sqrt(a/r);if(0===o)throw new Error("Cannot perform t-test when standard error is zero");var u=(i-n)/o,s=r-1,c=2*(1-this.tCDF(Math.abs(u),s));return{type:"one-sample",statistic:u,pValue:c,degreesOfFreedom:s,sampleMean:i,hypothesizedMean:n,standardError:o,criticalValue:this.tInverse(1-e/2,s),significant:c<e,alpha:e}},n.twoSampleTTest=function(t,n,e,r){void 0===e&&(e=.05),void 0===r&&(r=!1);var i,a,o,u=t.length,s=n.length,c=t.reduce(function(t,n){return t+n},0)/u,l=n.reduce(function(t,n){return t+n},0)/s,f=t.reduce(function(t,n){return t+Math.pow(n-c,2)},0)/(u-1),h=n.reduce(function(t,n){return t+Math.pow(n-l,2)},0)/(s-1);if(r?(o=Math.sqrt(((u-1)*f+(s-1)*h)/(u+s-2)*(1/u+1/s)),a=u+s-2):(o=Math.sqrt(f/u+h/s),a=Math.pow(f/u+h/s,2)/(Math.pow(f/u,2)/(u-1)+Math.pow(h/s,2)/(s-1))),0===o)throw new Error("Cannot perform t-test when standard error is zero");i=(c-l)/o;var d=2*(1-this.tCDF(Math.abs(i),a));return{type:"two-sample",statistic:i,pValue:d,degreesOfFreedom:a,sample1Mean:c,sample2Mean:l,meanDifference:c-l,standardError:o,equalVariances:r,criticalValue:this.tInverse(1-e/2,a),significant:d<e,alpha:e}},n.pairedTTest=function(t,n,e){if(void 0===e&&(e=.05),t.length!==n.length)throw new Error("Paired samples must have equal length");for(var r=[],i=0;i<t.length;i++)"number"==typeof t[i]&&"number"==typeof n[i]&&!isNaN(t[i])&&!isNaN(n[i])&&isFinite(t[i])&&isFinite(n[i])&&r.push(t[i]-n[i]);if(r.length<2)throw new Error("Need at least 2 valid paired observations");return this.oneSampleTTest(r,0,e)},n.zTest=function(t,n,e,r){void 0===r&&(r=.05);var i=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===i.length)throw new Error("No valid numeric values found");if(e<=0)throw new Error("Population standard deviation must be positive");var a=i.length,o=i.reduce(function(t,n){return t+n},0)/a,u=e/Math.sqrt(a),s=(o-n)/u,c=2*(1-this.normalCDF(Math.abs(s)));return{type:"z-test",statistic:s,pValue:c,sampleMean:o,populationMean:n,populationStd:e,sampleSize:a,standardError:u,criticalValue:this.normalInverse(1-r/2),significant:c<r,alpha:r}},n.anovaTest=function(t,n){if(void 0===n&&(n=.05),!Array.isArray(t)||t.length<2)throw new Error("ANOVA requires at least 2 groups");var e=t.map(function(t){return t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)})});e.forEach(function(t,n){if(t.length<2)throw new Error("Group "+(n+1)+" must have at least 2 valid values")});var r=e.length,i=e.map(function(t){return t.reduce(function(t,n){return t+n},0)/t.length}),a=e.map(function(t){return t.length}),o=a.reduce(function(t,n){return t+n},0),u=e.flat().reduce(function(t,n){return t+n},0)/o,s=e.reduce(function(t,n,e){return t+a[e]*Math.pow(i[e]-u,2)},0),c=e.reduce(function(t,n,e){var r=i[e];return t+n.reduce(function(t,n){return t+Math.pow(n-r,2)},0)},0),l=r-1,f=o-r,h=s/l,d=c/f;if(0===d)throw new Error("Cannot perform ANOVA when within-group variance is zero");var p=h/d,m=1-this.fCDF(p,l,f);return{type:"one-way-anova",statistic:p,pValue:m,dfBetween:l,dfWithin:f,sumOfSquaresBetween:s,sumOfSquaresWithin:c,meanSquareBetween:h,meanSquareWithin:d,groupMeans:i,grandMean:u,significant:m<n,alpha:n}},n.chiSquareTest=function(t,n,e){if(void 0===e&&(e=.05),t.length!==n.length)throw new Error("Columns must have the same length");var r=this.createContingencyTable(t,n),i=r.table,a=r.totals,o=r.rows,u=r.columns,s=0,c={};o.forEach(function(t){c[t]={},u.forEach(function(n){var e=a.row[t]*a.col[n]/a.grand;c[t][n]=e,e<5&&console.warn("Warning: Expected frequency ("+e.toFixed(2)+") is less than 5"),s+=Math.pow(i[t][n]-e,2)/e})});var l=(o.length-1)*(u.length-1),f=1-this.chiSquareCDF(s,l);return{type:"chi-square-independence",statistic:s,pValue:f,degreesOfFreedom:l,observed:i,expected:c,significant:f<e,alpha:e,cramersV:this.cramersV(s,a.grand,Math.min(o.length,u.length))}},n.createContingencyTable=function(t,n){var e=[].concat(new Set(t)),r=[].concat(new Set(n)),i={},a={row:{},col:{},grand:0};e.forEach(function(t){i[t]={},a.row[t]=0}),r.forEach(function(t){a.col[t]=0});for(var o=0;o<t.length;o++){var u=t[o],s=n[o];i[u][s]||(i[u][s]=0),i[u][s]++,a.row[u]++,a.col[s]++,a.grand++}return e.forEach(function(t){r.forEach(function(n){i[t][n]||(i[t][n]=0)})}),{table:i,totals:a,rows:e,columns:r}},n.cramersV=function(t,n,e){return Math.sqrt(t/(n*(e-1)))},n.mannWhitneyTest=function(t,n,e){void 0===e&&(e=.05);var r=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}),i=n.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===r.length||0===i.length)throw new Error("Both samples must contain valid numeric values");var a=r.length,o=i.length,u=[].concat(r.map(function(t){return{value:t,group:1}}),i.map(function(t){return{value:t,group:2}}));u.sort(function(t,n){return t.value-n.value});for(var s=1,c=function(t){for(var n=[u[t]];t+1<u.length&&u[t+1].value===u[t].value;)t++,n.push(u[t]);var e=(s+s+n.length-1)/2;n.forEach(function(t){return t.rank=e}),s+=n.length,l=t},l=0;l<u.length;l++)c(l);var f=u.filter(function(t){return 1===t.group}).reduce(function(t,n){return t+n.rank},0),h=f-a*(a+1)/2,d=a*o-h,p=Math.min(h,d),m=(p-a*o/2)/Math.sqrt(a*o*(a+o+1)/12),g=2*(1-this.normalCDF(Math.abs(m)));return{type:"mann-whitney-u",statistic:p,u1:h,u2:d,zStatistic:m,pValue:g,sample1Size:a,sample2Size:o,significant:g<e,alpha:e}},n.tCDF=function(t,n){return 1-.5*this.incompleteBeta(n/2,.5,n/(t*t+n))},n.tInverse=function(t,n){if(t<=0||t>=1)return NaN;var e=this.normalInverse(t);return e+e/4/n+(5*e*e*e+16*e)/96/(n*n)+(3*e*e*e*e*e+19*e*e*e+17*e)/384/(n*n*n)},n.normalCDF=function(t){return.5*(1+this.erf(t/Math.sqrt(2)))},n.normalInverse=function(t){if(t<=0||t>=1)throw new Error("p must be between 0 and 1");var n=[-39.69683028665376,220.9460984245205,-275.9285104469687,138.357751867269,-30.66479806614716,2.506628277459239],e=[-54.47609879822406,161.5858368580409,-155.6989798598866,66.80131188771972,-13.28068155288572,1];if(t>.5)return-this.normalInverse(1-t);for(var r=Math.sqrt(-2*Math.log(t)),i=n[5],a=e[5],o=4;o>=0;o--)i=i*r+n[o],a=a*r+e[o];return i/a},n.fCDF=function(t,n,e){return 1-this.incompleteBeta(e/2,n/2,e/(e+n*t))},n.chiSquareCDF=function(t,n){return t<=0?0:this.incompleteGamma(n/2,t/2)/this.gamma(n/2)},n.erf=function(t){var n=t<0?-1:1,e=1/(1+.3275911*(t=Math.abs(t)));return n*(1-((((1.061405429*e-1.453152027)*e+1.421413741)*e-.284496736)*e+.254829592)*e*Math.exp(-t*t))},n.incompleteBeta=function(t,n,e){if(e<=0)return 0;if(e>=1)return 1;var r=Math.exp(this.logGamma(t+n)-this.logGamma(t)-this.logGamma(n)+t*Math.log(e)+n*Math.log(1-e));return e<(t+1)/(t+n+2)?r*this.continuedFractionBeta(t,n,e)/t:1-r*this.continuedFractionBeta(n,t,1-e)/n},n.continuedFractionBeta=function(t,n,e){var r=t+n,i=t+1,a=t-1,o=1,u=1-r*e/i;Math.abs(u)<1e-30&&(u=1e-30);for(var s=u=1/u,c=1;c<=100;c++){var l=2*c,f=c*(n-c)*e/((a+l)*(t+l));u=1+f*u,Math.abs(u)<1e-30&&(u=1e-30),o=1+f/o,Math.abs(o)<1e-30&&(o=1e-30),s*=(u=1/u)*o,u=1+(f=-(t+c)*(r+c)*e/((t+l)*(i+l)))*u,Math.abs(u)<1e-30&&(u=1e-30),o=1+f/o,Math.abs(o)<1e-30&&(o=1e-30);var h=(u=1/u)*o;if(s*=h,Math.abs(h-1)<1e-12)break}return s},n.logGamma=function(t){var n=[76.18009172947146,-86.50532032941678,24.01409824083091,-1.231739572450155,.001208650973866179,-5395239384953e-18],e=1.000000000190015,r=t,i=t,a=t+5.5;a-=(t+.5)*Math.log(a);for(var o=0;o<6;o++)e+=n[o]/++i;return-a+Math.log(2.5066282746310007*e/r)},n.incompleteGamma=function(t,n){if(n<=0)return 0;for(var e=1,r=1,i=1;i<100&&(e+=r*=n/(t+i-1),!(Math.abs(r)<1e-12));i++);return Math.pow(n,t)*Math.exp(-n)*e},n.gamma=function(t){return Math.exp(this.logGamma(t))},t}(),d=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.mean=function(t,n){if(void 0===n&&(n=.95),n<=0||n>=1)throw new Error("Confidence level must be between 0 and 1");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(e.length<2)throw new Error("Need at least 2 valid observations");var r=e.length,i=e.reduce(function(t,n){return t+n},0)/r,a=e.reduce(function(t,n){return t+Math.pow(n-i,2)},0)/(r-1),o=Math.sqrt(a/r),u=this.tInverse(1-(1-n)/2,r-1)*o;return{mean:i,standardError:o,marginOfError:u,lowerBound:i-u,upperBound:i+u,confidence:n,degreesOfFreedom:r-1,sampleSize:r}},n.meanKnownVariance=function(t,n,e){if(void 0===e&&(e=.95),e<=0||e>=1)throw new Error("Confidence level must be between 0 and 1");if(n<=0)throw new Error("Population standard deviation must be positive");var r=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===r.length)throw new Error("No valid numeric values found");var i=r.length,a=r.reduce(function(t,n){return t+n},0)/i,o=n/Math.sqrt(i),u=this.normalInverse(1-(1-e)/2)*o;return{mean:a,standardError:o,marginOfError:u,lowerBound:a-u,upperBound:a+u,confidence:e,sampleSize:i,populationStd:n}},n.proportion=function(t,n,e){if(void 0===e&&(e=.95),!Number.isInteger(t)||!Number.isInteger(n))throw new Error("Successes and total must be integers");if(t<0||n<=0||t>n)throw new Error("Invalid values: 0 ⤠successes ⤠total, total > 0");if(e<=0||e>=1)throw new Error("Confidence level must be between 0 and 1");var r=t/n,i=this.normalInverse(1-(1-e)/2);(n*r<5||n*(1-r)<5)&&console.warn("Warning: Normal approximation may not be accurate. Consider using Wilson score interval.");var a=Math.sqrt(r*(1-r)/n),o=i*a,u={proportion:r,standardError:a,marginOfError:o,lowerBound:Math.max(0,r-o),upperBound:Math.min(1,r+o),confidence:e,sampleSize:n,successes:t},s=this.wilsonScoreInterval(t,n,e);return{normal:u,wilson:s,recommended:n*r>=5&&n*(1-r)>=5?u:s}},n.wilsonScoreInterval=function(t,n,e){void 0===e&&(e=.95);var r=t/n,i=this.normalInverse(1-(1-e)/2),a=i*i,o=1+a/n,u=(r+a/(2*n))/o,s=i*Math.sqrt(r*(1-r)/n+a/(4*n*n))/o;return{proportion:r,center:u,halfWidth:s,lowerBound:u-s,upperBound:u+s,confidence:e,sampleSize:n,successes:t}},n.variance=function(t,n){if(void 0===n&&(n=.95),n<=0||n>=1)throw new Error("Confidence level must be between 0 and 1");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(e.length<2)throw new Error("Need at least 2 valid observations");var r=e.length,i=e.reduce(function(t,n){return t+n},0)/r,a=e.reduce(function(t,n){return t+Math.pow(n-i,2)},0)/(r-1),o=1-n,u=r-1,s=this.chiSquareInverse(o/2,u);return{sampleVariance:a,lowerBound:u*a/this.chiSquareInverse(1-o/2,u),upperBound:u*a/s,confidence:n,degreesOfFreedom:u,sampleSize:r}},n.standardDeviation=function(t,n){void 0===n&&(n=.95);var e=this.variance(t,n);return{sampleStandardDeviation:Math.sqrt(e.sampleVariance),lowerBound:Math.sqrt(e.lowerBound),upperBound:Math.sqrt(e.upperBound),confidence:n,degreesOfFreedom:e.degreesOfFreedom,sampleSize:e.sampleSize}},n.meanDifference=function(t,n,e,r){if(void 0===e&&(e=.95),void 0===r&&(r=!1),e<=0||e>=1)throw new Error("Confidence level must be between 0 and 1");var i=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}),a=n.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(i.length<2||a.length<2)throw new Error("Both samples must have at least 2 valid observations");var o,u,s=i.length,c=a.length,l=i.reduce(function(t,n){return t+n},0)/s,f=a.reduce(function(t,n){return t+n},0)/c,h=l-f,d=i.reduce(function(t,n){return t+Math.pow(n-l,2)},0)/(s-1),p=a.reduce(function(t,n){return t+Math.pow(n-f,2)},0)/(c-1);r?(o=Math.sqrt(((s-1)*d+(c-1)*p)/(s+c-2)*(1/s+1/c)),u=s+c-2):(o=Math.sqrt(d/s+p/c),u=Math.pow(d/s+p/c,2)/(Math.pow(d/s,2)/(s-1)+Math.pow(p/c,2)/(c-1)));var m=this.tInverse(1-(1-e)/2,u)*o;return{meanDifference:h,sample1Mean:l,sample2Mean:f,standardError:o,marginOfError:m,lowerBound:h-m,upperBound:h+m,confidence:e,degreesOfFreedom:u,equalVariances:r}},n.pairedMeanDifference=function(t,n,e){if(void 0===e&&(e=.95),t.length!==n.length)throw new Error("Paired samples must have equal length");for(var r=[],i=0;i<t.length;i++)"number"==typeof t[i]&&"number"==typeof n[i]&&!isNaN(t[i])&&!isNaN(n[i])&&isFinite(t[i])&&isFinite(n[i])&&r.push(t[i]-n[i]);if(r.length<2)throw new Error("Need at least 2 valid paired observations");return this.mean(r,e)},n.correlation=function(t,n,e,r){if(void 0===e&&(e=.95),void 0===r&&(r="pearson"),e<=0||e>=1)throw new Error("Confidence level must be between 0 and 1");if(t.length!==n.length)throw new Error("x and y must have the same length");for(var i=[],a=0;a<t.length;a++)"number"==typeof t[a]&&"number"==typeof n[a]&&!isNaN(t[a])&&!isNaN(n[a])&&isFinite(t[a])&&isFinite(n[a])&&i.push({x:t[a],y:n[a]});if(i.length<3)throw new Error("Need at least 3 valid paired observations");var o,u=i.length;if("pearson"!==r)throw new Error("Only Pearson correlation is supported for confidence intervals");var s=i.map(function(t){return t.x}),c=i.map(function(t){return t.y});if(o=this.pearsonCorrelation(s,c),Math.abs(o)>=1)throw new Error("Cannot calculate confidence interval for perfect correlation");var l=.5*Math.log((1+o)/(1-o)),f=1/Math.sqrt(u-3),h=this.normalInverse(1-(1-e)/2)*f,d=l-h,p=l+h;return{correlation:o,fisherZ:l,standardError:f,lowerBound:(Math.exp(2*d)-1)/(Math.exp(2*d)+1),upperBound:(Math.exp(2*p)-1)/(Math.exp(2*p)+1),confidence:e,sampleSize:u}},n.pearsonCorrelation=function(t,n){for(var e=t.length,r=t.reduce(function(t,n){return t+n},0)/e,i=n.reduce(function(t,n){return t+n},0)/e,a=0,o=0,u=0,s=0;s<e;s++){var c=t[s]-r,l=n[s]-i;a+=c*l,o+=c*c,u+=l*l}var f=Math.sqrt(o*u);return 0===f?0:a/f},n.median=function(t,n){if(void 0===n&&(n=.95),n<=0||n>=1)throw new Error("Confidence level must be between 0 and 1");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(e.length<3)throw new Error("Need at least 3 valid observations for median CI");var r=[].concat(e).sort(function(t,n){return t-n}),i=r.length,a=this.normalInverse(1-(1-n)/2),o=Math.floor(i/2-a*Math.sqrt(i)/2),u=Math.ceil(i/2+a*Math.sqrt(i)/2),s=Math.max(0,o-1),c=Math.min(i-1,u-1);return{median:i%2==0?(r[i/2-1]+r[i/2])/2:r[Math.floor(i/2)],lowerBound:r[s],upperBound:r[c],confidence:n,sampleSize:i,lowerIndex:s+1,upperIndex:c+1}},n.bootstrapCI=function(t,n,e,r){if(void 0===e&&(e=.95),void 0===r&&(r=1e3),e<=0||e>=1)throw new Error("Confidence level must be between 0 and 1");var i=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===i.length)throw new Error("No valid numeric values found");for(var a=[],o=0;o<r;o++){for(var u=[],s=0;s<i.length;s++){var c=Math.floor(Math.random()*i.length);u.push(i[c])}var l=this.calculateStatistic(u,n);a.push(l)}a.sort(function(t,n){return t-n});var f=1-e,h=Math.floor(f/2*r),d=Math.floor((1-f/2)*r)-1,p=this.calculateStatistic(i,n),m=a.reduce(function(t,n){return t+n},0)/a.length;return{originalStatistic:p,bootstrapMean:m,bias:m-p,standardError:this.calculateStandardDeviation(a),lowerBound:a[h],upperBound:a[d],confidence:e,iterations:r}},n.calculateStatistic=function(t,n){switch(n){case"mean":return t.reduce(function(t,n){return t+n},0)/t.length;case"median":var e=[].concat(t).sort(function(t,n){return t-n}),r=Math.floor(e.length/2);return e.length%2==0?(e[r-1]+e[r])/2:e[r];case"std":return this.calculateStandardDeviation(t);case"var":return this.calculateVariance(t);default:if("function"==typeof n)return n(t);throw new Error("Unknown statistic: "+n)}},n.calculateStandardDeviation=function(t){var n=t.reduce(function(t,n){return t+n},0)/t.length,e=t.reduce(function(t,e){return t+Math.pow(e-n,2)},0)/(t.length-1);return Math.sqrt(e)},n.calculateVariance=function(t){var n=t.reduce(function(t,n){return t+n},0)/t.length;return t.reduce(function(t,e){return t+Math.pow(e-n,2)},0)/(t.length-1)},n.normalInverse=function(t){if(t<=0||t>=1)throw new Error("p must be between 0 and 1");var n=[-39.69683028665376,220.9460984245205,-275.9285104469687,138.357751867269,-30.66479806614716,2.506628277459239],e=[-54.47609879822406,161.5858368580409,-155.6989798598866,66.80131188771972,-13.28068155288572,1];if(t>.5)return-this.normalInverse(1-t);for(var r=Math.sqrt(-2*Math.log(t)),i=n[5],a=e[5],o=4;o>=0;o--)i=i*r+n[o],a=a*r+e[o];return i/a},n.tInverse=function(t,n){if(t<=0||t>=1)return NaN;var e=this.normalInverse(t);return e+e/4/n+(5*e*e*e+16*e)/96/(n*n)+(3*e*e*e*e*e+19*e*e*e+17*e)/384/(n*n*n)},n.chiSquareInverse=function(t,n){if(t<=0||t>=1)throw new Error("p must be between 0 and 1");if(n<=0)throw new Error("Degrees of freedom must be positive");for(var e=n,r=0;r<100;r++){var i=this.chiSquareCDF(e,n)-t,a=this.chiSquarePDF(e,n);if(Math.abs(i)<1e-12)break;if(0===a)break;(e-=i/a)<=0&&(e=n/2)}return Math.max(0,e)},n.chiSquareCDF=function(t,n){return t<=0?0:this.incompleteGamma(n/2,t/2)/this.gamma(n/2)},n.chiSquarePDF=function(t,n){return t<=0?0:Math.pow(t,n/2-1)*Math.exp(-t/2)/(Math.pow(2,n/2)*this.gamma(n/2))},n.incompleteGamma=function(t,n){if(n<=0)return 0;for(var e=1,r=1,i=1;i<100&&(e+=r*=n/(t+i-1),!(Math.abs(r)<1e-12));i++);return Math.pow(n,t)*Math.exp(-n)*e},n.gamma=function(t){var n=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7];if(t<.5)return Math.PI/(Math.sin(Math.PI*t)*this.gamma(1-t));t-=1;for(var e=n[0],r=1;r<n.length;r++)e+=n[r]/(t+r);var i=t+n.length-1.5;return Math.sqrt(2*Math.PI)*Math.pow(i,t+.5)*Math.exp(-i)*e},t}(),p=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.shapiroWilk=function(t,n){void 0===n&&(n=.05);var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(e.length<3||e.length>5e3)throw new Error("Shapiro-Wilk test requires between 3 and 5000 observations");var r=e.length,i=[].concat(e).sort(function(t,n){return t-n}),a=i.reduce(function(t,n){return t+n},0)/r,o=i.reduce(function(t,n){return t+Math.pow(n-a,2)},0);if(0===o)return{statistic:NaN,pValue:NaN,isNormal:!1,error:"All values are identical"};for(var u=0,s=0;s<Math.floor(r/2);s++)u+=this.shapiroWilkCoefficient(s+1,r)*(i[r-1-s]-i[s]);var c=u*u/o,l=this.shapiroWilkPValue(c,r);return{statistic:c,pValue:l,isNormal:l>n,alpha:n,sampleSize:r,interpretation:this.interpretNormalityResult(l,n,"Shapiro-Wilk")}},n.shapiroWilkCoefficient=function(t,n){return n<=10&&t<=n?[0,.7071,.7071,.6872,.6646,.6431,.6233,.6052,.5888,.5739,.5601][t]||.5:.5+1*this.normalInverse((t-.375)/(n+.25))},n.shapiroWilkPValue=function(t,n){if(n<3)return 1;if(t>=1)return 1;if(t<=0)return 0;var e,r=Math.log(t);return e=n<=11?-(.459*n-2.273)*r:(r-(-1.5861-.31082*Math.log(n)-.083751*Math.pow(Math.log(n),2)+.0038915*Math.pow(Math.log(n),3)))/Math.exp(-.4803-.082676*Math.log(n)+.0030302*Math.pow(Math.log(n),2)),1-this.standardNormalCDF(e)},n.kolmogorovSmirnov=function(t,n){void 0===n&&(n=.05);var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(e.length<5)throw new Error("Kolmogorov-Smirnov test requires at least 5 observations");var r=e.length,i=[].concat(e).sort(function(t,n){return t-n}),a=i.reduce(function(t,n){return t+n},0)/r,o=i.reduce(function(t,n){return t+Math.pow(n-a,2)},0)/(r-1),u=Math.sqrt(o);if(0===u)return{statistic:NaN,pValue:NaN,isNormal:!1,error:"All values are identical"};for(var s=0,c=0;c<r;c++){var l=(c+1)/r,f=this.standardNormalCDF((i[c]-a)/u),h=Math.abs(l-f),d=Math.abs(c/r-f);s=Math.max(s,h,d)}var p=s*Math.sqrt(r),m=this.kolmogorovSmirnovPValue(p);return{statistic:s,pValue:m,isNormal:m>n,alpha:n,sampleSize:r,lambda:p,interpretation:this.interpretNormalityResult(m,n,"Kolmogorov-Smirnov")}},n.kolmogorovSmirnovPValue=function(t){if(t<=0)return 1;if(t>7)return 0;for(var n=0,e=1;e<=100;e++){var r=2*Math.pow(-1,e-1)*Math.exp(-2*e*e*t*t);if(n+=r,Math.abs(r)<1e-12)break}return Math.min(1,Math.max(0,n))},n.andersonDarling=function(t,n){void 0===n&&(n=.05);var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(e.length<8)throw new Error("Anderson-Darling test requires at least 8 observations");var r=e.length,i=[].concat(e).sort(function(t,n){return t-n}),a=i.reduce(function(t,n){return t+n},0)/r,o=i.reduce(function(t,n){return t+Math.pow(n-a,2)},0)/(r-1),u=Math.sqrt(o);if(0===u)return{statistic:NaN,pValue:NaN,isNormal:!1,error:"All values are identical"};for(var s=0,c=0;c<r;c++){var l=(i[c]-a)/u,f=this.standardNormalCDF(l),h=this.standardNormalCDF(-l);f>0&&h>0&&(s+=(2*c+1)*(Math.log(f)+Math.log(h)))}var d=-r-1/r*s,p=d*(1+.75/r+2.25/(r*r)),m=this.andersonDarlingPValue(p);return{statistic:d,adjustedStatistic:p,pValue:m,isNormal:m>n,alpha:n,sampleSize:r,interpretation:this.interpretNormalityResult(m,n,"Anderson-Darling")}},n.andersonDarlingPValue=function(t){return t<=.2?1-Math.exp(-1.2337141/t)*(2.00012+(.247105-(.0649821-(.0347962-(.011672-.00168691*t)*t)*t)*t)*t):t<=.34?1-Math.exp(-.9177603-1.25156*t)*(1.38033+(.421981-.668119*t)*t):t<.6?Math.exp(.731-3.009*t+4.86*t*t):t<10?Math.exp(1.0776-(2.30695-(.43424-(.082433-(.008056-3146e-7*t)*t)*t)*t)*t):0},n.jarqueBera=function(t,n){void 0===n&&(n=.05);var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(e.length<4)throw new Error("Jarque-Bera test requires at least 4 observations");var r=e.length,i=this.calculateSkewness(e),a=this.calculateKurtosis(e,!0),o=r/6*(Math.pow(i,2)+Math.pow(a,2)/4),u=1-this.chiSquareCDF(o,2);return{statistic:o,pValue:u,isNormal:u>n,alpha:n,sampleSize:r,skewness:i,excessKurtosis:a,interpretation:this.interpretNormalityResult(u,n,"Jarque-Bera")}},n.dagoTest=function(t,n){void 0===n&&(n=.05);var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(e.length<20)throw new Error("D'Agostino test requires at least 20 observations");var r=e.length,i=this.calculateSkewness(e),a=this.calculateKurtosis(e,!0),o=this.skewnessZScore(i,r),u=this.kurtosisZScore(a,r),s=o*o+u*u,c=1-this.chiSquareCDF(s,2);return{statistic:s,pValue:c,isNormal:c>n,alpha:n,sampleSize:r,skewness:i,excessKurtosis:a,skewnessZ:o,kurtosisZ:u,interpretation:this.interpretNormalityResult(c,n,"D'Agostino K-squared")}},n.skewnessZScore=function(t,n){var e=t*Math.sqrt((n+1)*(n+3)/(6*(n-2))),r=-1+Math.sqrt(2*(3*(n*n+27*n-70)*(n+1)*(n+3)/((n-2)*(n+5)*(n+7)*(n+9))-1)),i=1/Math.sqrt(.5*Math.log(r)),a=Math.sqrt(2/(r-1));return i*Math.log(e/a+Math.sqrt(Math.pow(e/a,2)+1))},n.kurtosisZScore=function(t,n){var e=(t-3*(n-1)/(n+1))/Math.sqrt(24*n*(n-2)*(n-3)/((n+1)*(n+1)*(n+3)*(n+5))),r=6*(n*n-5*n+2)/((n+7)*(n+9))*Math.sqrt(6*(n+3)*(n+5)/(n*(n-2)*(n-3))),i=6+8/r*(2/r+Math.sqrt(1+4/Math.pow(r,2)));return Math.sqrt(9*i/2)*((1-2/i)/(1+e*Math.sqrt(2/(i-4)))-1)},n.lillieforsTest=function(t,n){void 0===n&&(n=.05);var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(e.length<4||e.length>1e3)throw new Error("Lilliefors test requires between 4 and 1000 observations");var r=e.length,i=[].concat(e).sort(function(t,n){return t-n}),a=i.reduce(function(t,n){return t+n},0)/r,o=i.reduce(function(t,n){return t+Math.pow(n-a,2)},0)/(r-1),u=Math.sqrt(o);if(0===u)return{statistic:NaN,pValue:NaN,isNormal:!1,error:"All values are identical"};for(var s=0,c=0;c<r;c++){var l=(c+1)/r,f=this.standardNormalCDF((i[c]-a)/u),h=Math.abs(l-f),d=Math.abs(c/r-f);s=Math.max(s,h,d)}var p=this.lillieforsPValue(s,r);return{statistic:s,pValue:p,isNormal:p>n,alpha:n,sampleSize:r,interpretation:this.interpretNormalityResult(p,n,"Lilliefors")}},n.lillieforsPValue=function(t,n){var e,r={4:.381,5:.337,6:.319,7:.3,8:.285,9:.271,10:.258,11:.249,12:.242,13:.234,14:.227,15:.22,16:.213,17:.206,18:.2,19:.195,20:.19,25:.173,30:.161,40:.144,50:.131,100:.096};if(r[n])e=r[n];else if(n>100)e=.886/Math.sqrt(n);else{var i=Object.keys(r).map(Number).sort(function(t,n){return t-n}),a=i.filter(function(t){return t<=n}).pop(),o=i.filter(function(t){return t>=n})[0];e=a===o?r[a]:r[a]+(n-a)/(o-a)*(r[o]-r[a])}return t>e?.01:t<.8*e?.2:.05},n.batchNormalityTest=function(t,n){void 0===n&&(n=.05);var e={};try{e.shapiroWilk=this.shapiroWilk(t,n)}catch(t){e.shapiroWilk={error:t.message}}try{e.jarqueBera=this.jarqueBera(t,n)}catch(t){e.jarqueBera={error:t.message}}try{e.andersonDarling=this.andersonDarling(t,n)}catch(t){e.andersonDarling={error:t.message}}try{e.kolmogorovSmirnov=this.kolmogorovSmirnov(t,n)}catch(t){e.kolmogorovSmirnov={error:t.message}}try{t.length>=20&&(e.dagostino=this.dagoTest(t,n))}catch(t){e.dagostino={error:t.message}}var r=Object.entries(e).filter(function(t){var n=t[1];return!n.error&&void 0!==n.pValue}),i=r.filter(function(t){return t[1].isNormal}).length,a=r.length;return{individualTests:e,summary:{testsRun:a,testsPassingNormality:i,consensusNormal:i>=Math.ceil(a/2),strongNormalEvidence:i===a,strongNonNormalEvidence:0===i},recommendation:this.getNormalityRecommendation(e,a,i)}},n.getNormalityRecommendation=function(t,n,e){if(0===n)return"Unable to assess normality - insufficient data or all tests failed";var r=e/n;return 1===r?"Strong evidence for normality - all tests indicate normal distribution":r>=.75?"Good evidence for normality - most tests indicate normal distribution":r>=.5?"Mixed evidence - consider visual inspection and domain knowledge":r>0?"Evidence against normality - most tests indicate non-normal distribution":"Strong evidence against normality - all tests indicate non-normal distribution"},n.calculateSkewness=function(t,n){void 0===n&&(n=!1);var e=t.length,r=t.reduce(function(t,n){return t+n},0)/e,i=t.reduce(function(t,n){return t+Math.pow(n-r,2)},0)/(e-1),a=Math.sqrt(i);if(0===a)return 0;var o=t.reduce(function(t,n){return t+Math.pow((n-r)/a,3)},0);return n?o/e:e/((e-1)*(e-2))*o},n.calculateKurtosis=function(t,n,e){void 0===n&&(n=!0),void 0===e&&(e=!1);var r=t.length,i=t.reduce(function(t,n){return t+n},0)/r,a=t.reduce(function(t,n){return t+Math.pow(n-i,2)},0)/(r-1),o=Math.sqrt(a);if(0===o)return n?-3:0;var u,s=t.reduce(function(t,n){return t+Math.pow((n-i)/o,4)},0);return u=e?s/r:r*(r+1)/((r-1)*(r-2)*(r-3))*s-3*Math.pow(r-1,2)/((r-2)*(r-3)),n?u-3:u},n.interpretNormalityResult=function(t,n,e){return t>n?e+" test: Fail to reject null hypothesis (p-value = "+t.toFixed(4)+" > α = "+n+"). Data appears to be normally distributed.":e+" test: Reject null hypothesis (p-value = "+t.toFixed(4)+" ⤠α = "+n+"). Data appears to be non-normally distributed."},n.standardNormalCDF=function(t){return.5*(1+this.erf(t/Math.sqrt(2)))},n.erf=function(t){var n=t<0?-1:1,e=1/(1+.3275911*(t=Math.abs(t)));return n*(1-((((1.061405429*e-1.453152027)*e+1.421413741)*e-.284496736)*e+.254829592)*e*Math.exp(-t*t))},n.normalInverse=function(t){if(t<=0||t>=1)throw new Error("p must be between 0 and 1");var n=[-39.69683028665376,220.9460984245205,-275.9285104469687,138.357751867269,-30.66479806614716,2.506628277459239],e=[-54.47609879822406,161.5858368580409,-155.6989798598866,66.80131188771972,-13.28068155288572,1];if(t>.5)return-this.normalInverse(1-t);for(var r=Math.sqrt(-2*Math.log(t)),i=n[5],a=e[5],o=4;o>=0;o--)i=i*r+n[o],a=a*r+e[o];return i/a},n.chiSquareCDF=function(t,n){return t<=0?0:this.incompleteGamma(n/2,t/2)/this.gamma(n/2)},n.incompleteGamma=function(t,n){if(n<=0)return 0;for(var e=1,r=1,i=1;i<100&&(e+=r*=n/(t+i-1),!(Math.abs(r)<1e-12));i++);return Math.pow(n,t)*Math.exp(-n)*e},n.gamma=function(t){var n=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7];if(t<.5)return Math.PI/(Math.sin(Math.PI*t)*this.gamma(1-t));t-=1;for(var e=n[0],r=1;r<n.length;r++)e+=n[r]/(t+r);var i=t+n.length-1.5;return Math.sqrt(2*Math.PI)*Math.pow(i,t+.5)*Math.exp(-i)*e},t}(),m=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.pearson=function(t,n){if(!Array.isArray(t)||!Array.isArray(n))throw new Error("Both inputs must be arrays");if(t.length!==n.length)throw new Error("Arrays must have the same length");for(var e=[],r=0;r<t.length;r++)"number"==typeof t[r]&&"number"==typeof n[r]&&!isNaN(t[r])&&!isNaN(n[r])&&isFinite(t[r])&&isFinite(n[r])&&e.push({x:t[r],y:n[r]});if(e.length<3)throw new Error("Need at least 3 valid paired observations");for(var i=e.length,a=e.map(function(t){return t.x}),o=e.map(function(t){return t.y}),u=a.reduce(function(t,n){return t+n},0)/i,s=o.reduce(function(t,n){return t+n},0)/i,c=0,l=0,f=0,h=0;h<i;h++){var d=a[h]-u,p=o[h]-s;c+=d*p,l+=d*d,f+=p*p}var m=Math.sqrt(l*f);if(0===m)return{correlation:0,pValue:1,tStatistic:0,degreesOfFreedom:i-2,significant:!1,confidenceInterval:{lower:0,upper:0},sampleSize:i};var g=c/m,v=g*Math.sqrt((i-2)/(1-g*g)),y=2*(1-this.tCDF(Math.abs(v),i-2));return{correlation:g,pValue:y,tStatistic:v,degreesOfFreedom:i-2,significant:y<.05,confidenceInterval:this.pearsonConfidenceInterval(g,i),sampleSize:i,interpretation:this.interpretCorrelation(g,y)}},n.spearman=function(t,n){if(!Array.isArray(t)||!Array.isArray(n))throw new Error("Both inputs must be arrays");if(t.length!==n.length)throw new Error("Arrays must have the same length");for(var e=[],r=0;r<t.length;r++)"number"==typeof t[r]&&"number"==typeof n[r]&&!isNaN(t[r])&&!isNaN(n[r])&&isFinite(t[r])&&isFinite(n[r])&&e.push({x:t[r],y:n[r],originalIndex:r});if(e.length<3)throw new Error("Need at least 3 valid paired observations");var i=e.length,a=this.calculateRanks(e.map(function(t){return t.x})),o=this.calculateRanks(e.map(function(t){return t.y})),u=this.pearsonFromArrays(a,o),s=u*Math.sqrt((i-2)/(1-u*u)),c=2*(1-this.tCDF(Math.abs(s),i-2));return{correlation:u,pValue:c,tStatistic:s,degreesOfFreedom:i-2,significant:c<.05,sampleSize:i,xRanks:a,yRanks:o,interpretation:this.interpretCorrelation(u,c,"Spearman")}},n.kendall=function(t,n){if(!Array.isArray(t)||!Array.isArray(n))throw new Error("Both inputs must be arrays");if(t.length!==n.length)throw new Error("Arrays must have the same length");for(var e=[],r=0;r<t.length;r++)"number"==typeof t[r]&&"number"==typeof n[r]&&!isNaN(t[r])&&!isNaN(n[r])&&isFinite(t[r])&&isFinite(n[r])&&e.push({x:t[r],y:n[r]});if(e.length<3)throw new Error("Need at least 3 valid paired observations");for(var i=e.length,a=0,o=0,u=0,s=0,c=0,l=0;l<i;l++)for(var f=l+1;f<i;f++){var h=e[l].x-e[f].x,d=e[l].y-e[f].y;0===h&&0===d?c++:0===h?u++:0===d?s++:h*d>0?a++:o++}var p=i*(i-1)/2,m=(a-o)/Math.sqrt((p-u)*(p-s)),g=m/Math.sqrt(2*(2*i+5)/(9*i*(i-1))),v=2*(1-this.normalCDF(Math.abs(g)));return{correlation:m,pValue:v,zStatistic:g,concordantPairs:a,discordantPairs:o,tiesX:u,tiesY:s,tiesXY:c,significant:v<.05,sampleSize:i,interpretation:this.interpretCorrelation(m,v,"Kendall")}},n.matrix=function(t,n){var e=this;if(void 0===n&&(n="pearson"),!t||!t.headers||!t.data)throw new Error("Invalid dataset format");var r=t.headers.filter(function(n){return t.data.map(function(t){return t[n]}).filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}).length>0});if(r.length<2)throw new Error("Need at least 2 numeric columns for correlation matrix");var i={},a={},o={};return r.forEach(function(u){i[u]={},a[u]={},o[u]={},r.forEach(function(r){if(u===r)i[u][r]=1,a[u][r]=0,o[u][r]=t.data.length;else{var s=t.data.map(function(t){return t[u]}),c=t.data.map(function(t){return t[r]});try{var l;switch(n){case"pearson":l=e.pearson(s,c);break;case"spearman":l=e.spearman(s,c);break;case"kendall":l=e.kendall(s,c);break;default:throw new Error("Unknown correlation method: "+n)}i[u][r]=l.correlation,a[u][r]=l.pValue,o[u][r]=l.sampleSize}catch(t){i[u][r]=NaN,a[u][r]=NaN,o[u][r]=0}}})}),{correlations:i,pValues:a,sampleSizes:o,columns:r,method:n,strongCorrelations:this.findStrongCorrelations(i,a),summary:this.summarizeCorrelationMatrix(i,a,r)}},n.covariance=function(t,n,e){if(void 0===e&&(e=!0),!Array.isArray(t)||!Array.isArray(n))throw new Error("Both inputs must be arrays");if(t.length!==n.length)throw new Error("Arrays must have the same length");for(var r=[],i=0;i<t.length;i++)"number"==typeof t[i]&&"number"==typeof n[i]&&!isNaN(t[i])&&!isNaN(n[i])&&isFinite(t[i])&&isFinite(n[i])&&r.push({x:t[i],y:n[i]});if(r.length<2)throw new Error("Need at least 2 valid paired observations");var a=r.length,o=r.map(function(t){return t.x}),u=r.map(function(t){return t.y}),s=o.reduce(function(t,n){return t+n},0)/a,c=u.reduce(function(t,n){return t+n},0)/a,l=o.reduce(function(t,n,e){return t+(n-s)*(u[e]-c)},0)/(e?a-1:a);return{covariance:l,meanX:s,meanY:c,sampleSize:a,sample:e}},n.covarianceMatrix=function(t,n){var e=this;if(void 0===n&&(n=!0),!t||!t.headers||!t.data)throw new Error("Invalid dataset format");var r=t.headers.filter(function(n){return t.data.map(function(t){return t[n]}).filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}).length>0});if(r.length<2)throw new Error("Need at least 2 numeric columns for covariance matrix");var i={};return r.forEach(function(a){i[a]={},r.forEach(function(r){var o=t.data.map(function(t){return t[a]}),u=t.data.map(function(t){return t[r]}),s=e.covariance(o,u,n);i[a][r]=s.covariance})}),{covariance:i,columns:r,sample:n}},n.partialCorrelation=function(t,n,e){var r=this.pearson(t,n),i=this.pearson(t,e),a=this.pearson(n,e),o=r.correlation-i.correlation*a.correlation,u=Math.sqrt((1-Math.pow(i.correlation,2))*(1-Math.pow(a.correlation,2)));if(0===u)return{correlation:0,pValue:1,significant:!1};var s=o/u,c=Math.min(r.sampleSize,i.sampleSize,a.sampleSize),l=c-3,f=s*Math.sqrt(l/(1-Math.pow(s,2))),h=2*(1-this.tCDF(Math.abs(f),l));return{correlation:s,pValue:h,tStatistic:f,degreesOfFreedom:l,significant:h<.05,sampleSize:c,controllingFor:"third variable"}},n.calculateRanks=function(t){var n=t.map(function(t,n){return{value:t,index:n}});n.sort(function(t,n){return t.value-n.value});for(var e=new Array(t.length),r=1,i=function(t){for(var i=[n[t]];t+1<n.length&&n[t+1].value===n[t].value;)t++,i.push(n[t]);var o=(r+r+i.length-1)/2;i.forEach(function(t){e[t.index]=o}),r+=i.length,a=t},a=0;a<n.length;a++)i(a);return e},n.pearsonFromArrays=function(t,n){for(var e=t.length,r=t.reduce(function(t,n){return t+n},0)/e,i=n.reduce(function(t,n){return t+n},0)/e,a=0,o=0,u=0,s=0;s<e;s++){var c=t[s]-r,l=n[s]-i;a+=c*l,o+=c*c,u+=l*l}var f=Math.sqrt(o*u);return 0===f?0:a/f},n.pearsonConfidenceInterval=function(t,n,e){if(void 0===e&&(e=.95),Math.abs(t)>=1)return{lower:t,upper:t};var r=.5*Math.log((1+t)/(1-t)),i=1/Math.sqrt(n-3),a=this.normalInverse(1-(1-e)/2)*i,o=r-a,u=r+a;return{lower:(Math.exp(2*o)-1)/(Math.exp(2*o)+1),upper:(Math.exp(2*u)-1)/(Math.exp(2*u)+1)}},n.findStrongCorrelations=function(t,n,e){void 0===e&&(e=.7);for(var r=[],i=Object.keys(t),a=0;a<i.length;a++)for(var o=a+1;o<i.length;o++){var u=i[a],s=i[o],c=t[u][s],l=n[u][s];Math.abs(c)>=e&&l<.05&&r.push({variable1:u,variable2:s,correlation:c,pValue:l,strength:this.getCorrelationStrength(Math.abs(c))})}return r.sort(function(t,n){return Math.abs(n.correlation)-Math.abs(t.correlation)})},n.summarizeCorrelationMatrix=function(t,n,e){for(var r=0,i=0,a=0,o=0,u=0,s=0,c=0;c<e.length;c++)for(var l=c+1;l<e.length;l++){var f=e[c],h=e[l],d=t[f][h],p=n[f][h];isNaN(d)||(r++,p<.05&&i++,d>.7&&a++,d<-.7&&o++,u=Math.max(u,d),s=Math.min(s,d))}return{totalPairs:r,significantPairs:i,strongPositiveCorrelations:a,strongNegativeCorrelations:o,maxCorrelation:u,minCorrelation:s,averageAbsoluteCorrelation:this.calculateAverageAbsoluteCorrelation(t,e)}},n.calculateAverageAbsoluteCorrelation=function(t,n){for(var e=0,r=0,i=0;i<n.length;i++)for(var a=i+1;a<n.length;a++){var o=t[n[i]][n[a]];isNaN(o)||(e+=Math.abs(o),r++)}return r>0?e/r:0},n.getCorrelationStrength=function(t){return t>=.9?"Very Strong":t>=.7?"Strong":t>=.5?"Moderate":t>=.3?"Weak":"Very Weak"},n.interpretCorrelation=function(t,n,e){void 0===e&&(e="Pearson");var r=n<.05?"significant":"not significant";return e+" correlation: "+this.getCorrelationStrength(Math.abs(t))+" "+(t>0?"positive":"negative")+" relationship (r = "+t.toFixed(4)+", p = "+n.toFixed(4)+", "+r+")"},n.tCDF=function(t,n){return 1-.5*this.incompleteBeta(n/2,.5,n/(t*t+n))},n.normalCDF=function(t){return.5*(1+this.erf(t/Math.sqrt(2)))},n.normalInverse=function(t){if(t<=0||t>=1)throw new Error("p must be between 0 and 1");var n=[-39.69683028665376,220.9460984245205,-275.9285104469687,138.357751867269,-30.66479806614716,2.506628277459239],e=[-54.47609879822406,161.5858368580409,-155.6989798598866,66.80131188771972,-13.28068155288572,1];if(t>.5)return-this.normalInverse(1-t);for(var r=Math.sqrt(-2*Math.log(t)),i=n[5],a=e[5],o=4;o>=0;o--)i=i*r+n[o],a=a*r+e[o];return i/a},n.erf=function(t){var n=t<0?-1:1,e=1/(1+.3275911*(t=Math.abs(t)));return n*(1-((((1.061405429*e-1.453152027)*e+1.421413741)*e-.284496736)*e+.254829592)*e*Math.exp(-t*t))},n.incompleteBeta=function(t,n,e){if(e<=0)return 0;if(e>=1)return 1;var r=Math.exp(this.logGamma(t+n)-this.logGamma(t)-this.logGamma(n)+t*Math.log(e)+n*Math.log(1-e));return e<(t+1)/(t+n+2)?r*this.continuedFractionBeta(t,n,e)/t:1-r*this.continuedFractionBeta(n,t,1-e)/n},n.continuedFractionBeta=function(t,n,e){var r=t+n,i=t+1,a=t-1,o=1,u=1-r*e/i;Math.abs(u)<1e-30&&(u=1e-30);for(var s=u=1/u,c=1;c<=100;c++){var l=2*c,f=c*(n-c)*e/((a+l)*(t+l));u=1+f*u,Math.abs(u)<1e-30&&(u=1e-30),o=1+f/o,Math.abs(o)<1e-30&&(o=1e-30),s*=(u=1/u)*o,u=1+(f=-(t+c)*(r+c)*e/((t+l)*(i+l)))*u,Math.abs(u)<1e-30&&(u=1e-30),o=1+f/o,Math.abs(o)<1e-30&&(o=1e-30);var h=(u=1/u)*o;if(s*=h,Math.abs(h-1)<1e-12)break}return s},n.logGamma=function(t){var n=[76.18009172947146,-86.50532032941678,24.01409824083091,-1.231739572450155,.001208650973866179,-5395239384953e-18],e=1.000000000190015,r=t,i=t,a=t+5.5;a-=(t+.5)*Math.log(a);for(var o=0;o<6;o++)e+=n[o]/++i;return-a+Math.log(2.5066282746310007*e/r)},t}(),g=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.linear=function(t,n){if(!Array.isArray(t)||!Array.isArray(n))throw new Error("Both inputs must be arrays");if(t.length!==n.length)throw new Error("Arrays must have the same length");for(var e=[],r=0;r<t.length;r++)"number"==typeof t[r]&&"number"==typeof n[r]&&!isNaN(t[r])&&!isNaN(n[r])&&isFinite(t[r])&&isFinite(n[r])&&e.push({x:t[r],y:n[r]});if(e.length<3)throw new Error("Need at least 3 valid paired observations");for(var i=e.length,a=e.map(function(t){return t.x}),o=e.map(function(t){return t.y}),u=a.reduce(function(t,n){return t+n},0)/i,s=o.reduce(function(t,n){return t+n},0)/i,c=0,l=0,f=0;f<i;f++){var h=a[f]-u;c+=h*(o[f]-s),l+=h*h}if(0===l)throw new Error("Cannot perform regression: X values have zero variance");var d=c/l,p=s-d*u,m=a.map(function(t){return p+d*t}),g=o.map(function(t,n){return t-m[n]}),v=g.reduce(function(t,n){return t+n*n},0),y=o.reduce(function(t,n){return t+Math.pow(n-s,2)},0),b=y-v,w=0===y?1:b/y,x=1-v/(i-2)/(y/(i-1)),_=v/(i-2),M=Math.sqrt(_),S=Math.sqrt(_/l),N=Math.sqrt(_*(1/i+u*u/l)),E=d/S,A=p/N,T=i-2,C=2*(1-this.tCDF(Math.abs(E),T)),k=2*(1-this.tCDF(Math.abs(A),T)),q=b/1/(v/T),F=1-this.fCDF(q,1,T);return{slope:d,intercept:p,rSquared:w,adjustedRSquared:x,correlation:Math.sqrt(w)*Math.sign(d),standardErrorSlope:S,standardErrorIntercept:N,tStatSlope:E,tStatIntercept:A,pValueSlope:C,pValueIntercept:k,fStatistic:q,pValueModel:F,degreesOfFreedom:T,mse:_,rmse:M,residuals:g,predicted:m,sampleSize:i,equation:"y = "+p.toFixed(4)+" + "+d.toFixed(4)+"x",residualAnalysis:this.analyzeResiduals(g,m)}},n.multiple=function(t,n,e){var r=this;if(!t||!t.data||!Array.isArray(t.data))throw new Error("Invalid dataset format");if(!t.headers.includes(n))throw new Error("Dependent variable '"+n+"' not found in dataset");var i=e.filter(function(n){return!t.headers.includes(n)});if(i.length>0)throw new Error("Independent variables not found: "+i.join(", "));var a=t.data.filter(function(t){return[n].concat(e).every(function(n){var e=t[n];return"number"==typeof e&&!isNaN(e)&&isFinite(e)})});if(a.length<e.length+2)throw new Error("Need at least "+(e.length+2)+" valid observations");var o=a.length,u=e.length,s=a.map(function(t){return t[n]}),c=a.map(function(t){return[1].concat(e.map(function(n){return t[n]}))}),l=this.transpose(c),f=this.matrixMultiply(l,c),h=this.matrixInverse(f),d=this.matrixVectorMultiply(l,s),p=this.matrixVectorMultiply(h,d),m=c.map(function(t){return p.reduce(function(n,e,r){return n+e*t[r]},0)}),g=s.map(function(t,n){return t-m[n]}),v=s.reduce(function(t,n){return t+n},0)/o,y=g.reduce(function(t,n){return t+n*n},0),b=s.reduce(function(t,n){return t+Math.pow(n-v,2)},0),w=b-y,x=0===b?1:w/b,_=1-y/(o-u-1)/(b/(o-1)),M=y/(o-u-1),S=Math.sqrt(M),N=p.map(function(t,n){return Math.sqrt(M*h[n][n])}),E=p.map(function(t,n){return t/N[n]}),A=E.map(function(t){return 2*(1-r.tCDF(Math.abs(t),o-u-1))}),T=w/u/(y/(o-u-1)),C=1-this.fCDF(T,u,o-u-1),k=p.map(function(t,n){return{variable:0===n?"Intercept":e[n-1],coefficient:t,standardError:N[n],tStatistic:E[n],pValue:A[n],significant:A[n]<.05}});return{coefficients:k,intercept:p[0],rSquared:x,adjustedRSquared:_,fStatistic:T,pValueModel:C,mse:M,rmse:S,residuals:g,predicted:m,sampleSize:o,degreesOfFreedom:o-u-1,dependentVariable:n,independentVariables:e,equation:this.buildEquation(k),residualAnalysis:this.analyzeResiduals(g,m)}},n.polynomial=function(t,n,e){var r=this;if(void 0===e&&(e=2),!Array.isArray(t)||!Array.isArray(n))throw new Error("Both inputs must be arrays");if(t.length!==n.length)throw new Error("Arrays must have the same length");if(e<1||e>10)throw new Error("Degree must be between 1 and 10");for(var i=[],a=0;a<t.length;a++)"number"==typeof t[a]&&"number"==typeof n[a]&&!isNaN(t[a])&&!isNaN(n[a])&&isFinite(t[a])&&isFinite(n[a])&&i.push({x:t[a],y:n[a]});var o=i.length;if(o<e+2)throw new Error("Need at least "+(e+2)+" valid observations for degree "+e+" polynomial");var u=i.map(function(t){return t.x}),s=i.map(function(t){return t.y}),c=u.map(function(t){for(var n=[1],r=1;r<=e;r++)n.push(Math.pow(t,r));return n}),l=this.transpose(c),f=this.matrixMultiply(l,c),h=this.matrixInverse(f),d=this.matrixVectorMultiply(l,s),p=this.matrixVectorMultiply(h,d),m=c.map(function(t){return p.reduce(function(n,e,r){return n+e*t[r]},0)}),g=s.map(function(t,n){return t-m[n]}),v=s.reduce(function(t,n){return t+n},0)/o,y=g.reduce(function(t,n){return t+n*n},0),b=s.reduce(function(t,n){return t+Math.pow(n-v,2)},0),w=0===b?1:(b-y)/b,x=1-y/(o-e-1)/(b/(o-1)),_=y/(o-e-1),M=Math.sqrt(_),S=p.map(function(t,n){return Math.sqrt(_*h[n][n])}),N=p.map(function(t,n){return t/S[n]}),E=N.map(function(t){return 2*(1-r.tCDF(Math.abs(t),o-e-1))});return{coefficients:p,degree:e,rSquared:w,adjustedRSquared:x,mse:_,rmse:M,residuals:g,predicted:m,sampleSize:o,equation:this.buildPolynomialEquation(p),residualAnalysis:this.analyzeResiduals(g,m),standardErrors:S,tStatistics:N,pValues:E}},n.logistic=function(t,n,e,r){var i=this;if(void 0===e&&(e=100),void 0===r&&(r=1e-6),!Array.isArray(t)||!Array.isArray(n))throw new Error("Both inputs must be arrays");for(var a=[],o=0;o<t.length;o++)"number"!=typeof t[o]||"number"!=typeof n[o]||isNaN(t[o])||isNaN(n[o])||!isFinite(t[o])||!isFinite(n[o])||0!==n[o]&&1!==n[o]||a.push({x:t[o],y:n[o]});if(a.length<10)throw new Error("Need at least 10 valid observations for logistic regression");for(var u=a.map(function(t){return t.x}),s=a.map(function(t){return t.y}),c=a.length,l=0,f=0,h=0;h<e;h++){for(var d=u.map(function(t){return i.sigmoid(l+f*t)}),p=d.map(function(t){return t*(1-t)}),m=0,g=0,v=0,y=0,b=0,w=0;w<c;w++){var x=s[w]-d[w];m+=x,g+=x*u[w],v+=p[w],y+=p[w]*u[w],b+=p[w]*u[w]*u[w]}var _=v*b-y*y;if(Math.abs(_)<1e-10)throw new Error("Information matrix is singular");var M=(b*m-y*g)/_,S=(v*g-y*m)/_;if(l+=M,f+=S,Math.abs(M)<r&&Math.abs(S)<r)break}var N=u.map(function(t){return i.sigmoid(l+f*t)}),E=N.map(function(t){return t>=.5?1:0}),A=s.reduce(function(t,n,e){var r=N[e];return t+n*Math.log(r+1e-15)+(1-n)*Math.log(1-r+1e-15)},0),T=1-A/this.calculateNullLogLikelihood(s),C=E.reduce(function(t,n,e){return t+(n===s[e]?1:0)},0)/c;return{intercept:l,slope:f,probabilities:N,predicted:E,logLikelihood:A,mcFaddenR2:T,accuracy:C,sampleSize:c,equation:"p = 1 / (1 + exp(-("+l.toFixed(4)+" + "+f.toFixed(4)+"x)))",confusionMatrix:this.calculateConfusionMatrix(s,E)}},n.predict=function(t,n){if(!t||"object"!=typeof t)throw new Error("Invalid model object");if(t.coefficients&&Array.isArray(t.coefficients)){if(Array.isArray(n[0]))return n.map(function(n){var e=[1].concat(n);return t.coefficients.reduce(function(t,n,r){return t+n.coefficient*e[r]},0)});var e=[1].concat(n);return t.coefficients.reduce(function(t,n,r){return t+n.coefficient*e[r]},0)}if(void 0!==t.slope&&void 0!==t.intercept)return Array.isArray(n)?n.map(function(n){return t.intercept+t.slope*n}):t.intercept+t.slope*n;if(t.coefficients&&void 0!==t.degree){if(Array.isArray(n))return n.map(function(n){for(var e=t.coefficients[0],r=1;r<=t.degree;r++)e+=t.coefficients[r]*Math.pow(n,r);return e});for(var r=t.coefficients[0],i=1;i<=t.degree;i++)r+=t.coefficients[i]*Math.pow(n,i);return r}throw new Error("Unknown model type")},n.analyzeResiduals=function(t,n){var e=t.length,r=t.reduce(function(t,n){return t+n},0)/e,i=Math.sqrt(t.reduce(function(t,n){return t+Math.pow(n-r,2)},0)/(e-1)),a=t.map(function(t){return t/i}),o=a.map(function(t,n){return{index:n,value:t}}).filter(function(t){return Math.abs(t.value)>2}),u=this.calculateDurbinWatson(t);return{mean:r,standardDeviation:i,standardizedResiduals:a,outliers:o,durbinWatson:u,normalityTest:this.testResidualNormality(t)}},n.calculateDurbinWatson=function(t){for(var n=0,e=0,r=1;r<t.length;r++)n+=Math.pow(t[r]-t[r-1],2);for(var i=0;i<t.length;i++)e+=Math.pow(t[i],2);return n/e},n.testResidualNormality=function(t){var n=t.length,e=t.reduce(function(t,n){return t+n},0)/n,r=t.reduce(function(t,n){return t+Math.pow(n-e,2)},0)/(n-1),i=Math.sqrt(r);if(0===i)return{isNormal:!0,pValue:1};var a=t.reduce(function(t,n){return t+Math.pow((n-e)/i,3)},0)/n,o=t.reduce(function(t,n){return t+Math.pow((n-e)/i,4)},0)/n-3,u=n/6*(Math.pow(a,2)+Math.pow(o,2)/4),s=1-this.chiSquareCDF(u,2);return{jarqueBeraStatistic:u,pValue:s,isNormal:s>.05,skewness:a,kurtosis:o}},n.buildEquation=function(t){return"y = "+t.map(function(t){return"Intercept"===t.variable?t.coefficient.toFixed(4):(t.coefficient>=0?"+":"")+t.coefficient.toFixed(4)+"*"+t.variable}).join(" ")},n.buildPolynomialEquation=function(t){return"y = "+t.map(function(t,n){return 0===n?t.toFixed(4):1===n?(t>=0?"+":"")+t.toFixed(4)+"*x":(t>=0?"+":"")+t.toFixed(4)+"*x^"+n}).join(" ")},n.sigmoid=function(t){return 1/(1+Math.exp(-Math.max(-500,Math.min(500,t))))},n.calculateNullLogLikelihood=function(t){var n=t.reduce(function(t,n){return t+n},0)/t.length;return t.reduce(function(t,e){return t+e*Math.log(n+1e-15)+(1-e)*Math.log(1-n+1e-15)},0)},n.calculateConfusionMatrix=function(t,n){for(var e=0,r=0,i=0,a=0,o=0;o<t.length;o++)1===t[o]&&1===n[o]?e++:0===t[o]&&1===n[o]?r++:0===t[o]&&0===n[o]?i++:1===t[o]&&0===n[o]&&a++;var u=e+r>0?e/(e+r):0,s=e+a>0?e/(e+a):0;return{truePositive:e,falsePositive:r,trueNegative:i,falseNegative:a,precision:u,recall:s,specificity:i+r>0?i/(i+r):0,f1Score:u+s>0?u*s*2/(u+s):0}},n.matrixMultiply=function(t,n){for(var e=t.length,r=t[0].length,i=n[0].length,a=Array(e).fill().map(function(){return Array(i).fill(0)}),o=0;o<e;o++)for(var u=0;u<i;u++)for(var s=0;s<r;s++)a[o][u]+=t[o][s]*n[s][u];return a},n.matrixVectorMultiply=function(t,n){return t.map(function(t){return t.reduce(function(t,e,r){return t+e*n[r]},0)})},n.transpose=function(t){return t[0].map(function(n,e){return t.map(function(t){return t[e]})})},n.matrixInverse=function(t){for(var n=t.length,e=Array(n).fill().map(function(t,e){return Array(n).fill().map(function(t,n){return e===n?1:0})}),r=t.map(function(t,n){return[].concat(t,e[n])}),i=0;i<n;i++){for(var a=i,o=i+1;o<n;o++)Math.abs(r[o][i])>Math.abs(r[a][i])&&(a=o);var u=[r[a],r[i]];r[i]=u[0],r[a]=u[1];var s=r[i][i];if(Math.abs(s)<1e-10)throw new Error("Matrix is singular and cannot be inverted");for(var c=0;c<2*n;c++)r[i][c]/=s;for(var l=0;l<n;l++)if(l!==i)for(var f=r[l][i],h=0;h<2*n;h++)r[l][h]-=f*r[i][h]}return r.map(function(t){return t.slice(n)})},n.tCDF=function(t,n){return n<=0?.5:1-.5*this.incompleteBeta(n/2,.5,n/(t*t+n))},n.fCDF=function(t,n,e){return t<=0?0:1-this.incompleteBeta(e/2,n/2,e/(e+n*t))},n.chiSquareCDF=function(t,n){return t<=0?0:this.incompleteGamma(n/2,t/2)/this.gamma(n/2)},n.incompleteBeta=function(t,n,e){if(e<=0)return 0;if(e>=1)return 1;for(var r=0,i=1,a=0;a<100&&(a>0&&(i*=e*(t+a-1)/a),r+=i/(t+a),!(Math.abs(i)<1e-10));a++);return r*Math.pow(e,t)*Math.pow(1-e,n)},n.incompleteGamma=function(t,n){if(n<=0)return 0;for(var e=1,r=1,i=1;i<100&&(e+=r*=n/(t+i-1),!(Math.abs(r)<1e-12));i++);return Math.pow(n,t)*Math.exp(-n)*e},n.gamma=function(t){if(t<.5)return Math.PI/(Math.sin(Math.PI*t)*this.gamma(1-t));t-=1;for(var n=.9999999999998099,e=[676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7],r=0;r<e.length;r++)n+=e[r]/(t+r+1);var i=t+e.length-.5;return Math.sqrt(2*Math.PI)*Math.pow(i,t+.5)*Math.exp(-i)*n},t}(),v=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.summary=function(t){if(!t||!t.data||!t.headers)throw new Error("Invalid dataset format");var n=this.getBasicInfo(t),e=this.analyzeColumns(t),r=this.assessDataQuality(t),i=this.analyzeDistributions(t),a=this.analyzeRelationships(t),o=this.generateKeyInsights(t,e,a);return{title:"Statistical Summary Report",generatedAt:(new Date).toISOString(),basicInfo:n,columnAnalysis:e,dataQuality:r,distributions:i,relationships:a,keyInsights:o,recommendations:this.generateRecommendations(r,e,a)}},n.getBasicInfo=function(t){return{totalRows:t.length,totalColumns:t.columns,headers:t.headers,memoryFootprint:this.estimateMemoryFootprint(t),dataTypes:this.getDataTypes(t)}},n.analyzeColumns=function(t){var n=this,r={};return t.headers.forEach(function(i){var a=t.data.map(function(t){return t[i]}),o=n.inferColumnType(a);r[i]=e({type:o,totalCount:a.length,validCount:n.getValidCount(a),nullCount:n.getNullCount(a),uniqueCount:n.getUniqueCount(a),nullPercentage:n.getNullPercentage(a)},n.getTypeSpecificAnalysis(a,o))}),r},n.getTypeSpecificAnalysis=function(t,n){var e=t.filter(function(t){return null!=t});if("numeric"===n){var r=e.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});return 0===r.length?{}:{min:Math.min.apply(Math,r),max:Math.max.apply(Math,r),mean:this.calculateMean(r),median:this.calculateMedian(r),standardDeviation:this.calculateStandardDeviation(r),variance:this.calculateVariance(r),skewness:this.calculateSkewness(r),kurtosis:this.calculateKurtosis(r),quartiles:this.calculateQuartiles(r),outliers:this.detectOutliers(r),distribution:this.classifyDistribution(r)}}if("categorical"===n){var i=this.calculateFrequencyTable(e);return{categories:i,mostFrequent:this.getMostFrequent(i),leastFrequent:this.getLeastFrequent(i),entropy:this.calculateEntropy(i),concentration:this.calculateConcentration(i)}}if("datetime"===n){var a=e.filter(function(t){return!isNaN(new Date(t).getTime())});if(0===a.length)return{};var o=a.map(function(t){return new Date(t).getTime()});return{earliest:new Date(Math.min.apply(Math,o)).toISOString(),latest:new Date(Math.max.apply(Math,o)).toISOString(),span:Math.max.apply(Math,o)-Math.min.apply(Math,o),frequency:this.analyzeDateFrequency(a)}}return{}},n.assessDataQuality=function(t){var n,e=[],r=this.assessCompleteness(t),i=this.assessConsistency(t),a=this.assessUniqueness(t),o=this.assessValidity(t);return n=(r+i+a+o)/4,r<80&&e.push({type:"completeness",severity:r<50?"high":"medium",description:(100-r).toFixed(1)+"% of data is missing"}),i<80&&e.push({type:"consistency",severity:i<50?"high":"medium",description:"Data consistency issues detected"}),{overallScore:n,completenessScore:r,consistencyScore:i,uniquenessScore:a,validityScore:o,issues:e,recommendation:this.getQualityRecommendation(n)}},n.analyzeDistributions=function(t){var n=this,e={};return t.headers.forEach(function(r){var i=t.data.map(function(t){return t[r]}).filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});i.length>5&&(e[r]={type:n.classifyDistribution(i),normalityTest:n.testNormality(i),histogram:n.createHistogram(i),descriptiveStats:n.getDescriptiveStats(i)})}),e},n.analyzeRelationships=function(t){var n=this,e=t.headers.filter(function(n){var e=t.data.map(function(t){return t[n]});return e.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}).length>.5*e.length});if(e.length<2)return{correlations:{},strongRelationships:[]};for(var r={},i=[],a=function(a){r[e[a]]={};for(var o=function(o){if(a===o)r[e[a]][e[o]]=1;else{var u=t.data.map(function(t){return t[e[a]]}),s=t.data.map(function(t){return t[e[o]]}),c=n.calculatePearsonCorrelation(u,s);r[e[a]][e[o]]=c,Math.abs(c)>.7&&a<o&&i.push({variable1:e[a],variable2:e[o],correlation:c,strength:n.getCorrelationStrength(Math.abs(c)),direction:c>0?"positive":"negative"})}},u=0;u<e.length;u++)o(u)},o=0;o<e.length;o++)a(o);return{correlations:r,strongRelationships:i,averageCorrelation:this.calculateAverageCorrelation(r,e)}},n.generateKeyInsights=function(t,n,e){var r=[];return r.push.apply(r,this.generateDataVolumeInsights(t)),r.push.apply(r,this.generateColumnInsights(n)),r.push.apply(r,this.generateRelationshipInsights(e)),r.push.apply(r,this.generateDistributionInsights(n)),r.push.apply(r,this.generateQualityInsights(t,n)),r.sort(function(t,n){return n.importance-t.importance}).slice(0,10)},n.generateDataVolumeInsights=function(t){var n=[];return t.length>1e4?n.push({type:"volume",title:"Large Dataset Detected",description:"Dataset contains "+t.length.toLocaleString()+" rows, which is suitable for robust statistical analysis.",importance:7,actionable:!1}):t.length<30&&n.push({type:"volume",title:"Small Sample Size Warning",description:"Dataset has only "+t.length+" rows. Statistical tests may lack power.",importance:8,actionable:!0,recommendation:"Consider collecting more data for reliable statistical inference."}),t.columns>50&&n.push({type:"dimensionality",title:"High-Dimensional Dataset",description:"Dataset has "+t.columns+" columns, which may benefit from dimensionality reduction.",importance:6,actionable:!0,recommendation:"Consider feature selection or PCA to reduce dimensionality."}),n},n.generateColumnInsights=function(t){var n=[],e=Object.keys(t),r=e.filter(function(n){return t[n].nullPercentage>25});r.length>0&&n.push({type:"data_quality",title:"High Missing Data Detected",description:"Columns "+r.join(", ")+" have >25% missing values.",importance:9,actionable:!0,recommendation:"Consider imputation strategies or removing these columns."});var i=e.filter(function(n){var e=t[n];return e.skewness&&Math.abs(e.skewness)>2});i.length>0&&n.push({type:"distribution",title:"Highly Skewed Variables Found",description:"Columns "+i.join(", ")+" show extreme skewness.",importance:7,actionable:!0,recommendation:"Consider log transformation or other normalization techniques."});var a=e.filter(function(n){return 1===t[n].uniqueCount});return a.length>0&&n.push({type:"data_quality",title:"Constant Variables Detected",description:"Columns "+a.join(", ")+" have no variation.",importance:8,actionable:!0,recommendation:"Remove these columns as they provide no information."}),n},n.generateRelationshipInsights=function(t){var n=[];if(t.strongRelationships.length>0){var e=t.strongRelationships[0];n.push({type:"correlation",title:"Strong Correlation Found",description:e.variable1+" and "+e.variable2+" have a "+e.strength.toLowerCase()+" "+e.direction+" correlation (r = "+e.correlation.toFixed(3)+").",importance:8,actionable:!0,recommendation:"Investigate this relationship further with regression analysis."})}return t.strongRelationships.filter(function(t){return Math.abs(t.correlation)>.9}).length>0&&n.push({type:"multicollinearity",title:"Potential Multicollinearity Detected",description:"Very high correlations found between some variables.",importance:7,actionable:!0,recommendation:"Consider removing redundant variables before modeling."}),t.averageCorrelation>.5&&n.push({type:"correlation",title:"Generally High Inter-Variable Correlations",description:"Average correlation is "+t.averageCorrelation.toFixed(3)+", indicating related variables.",importance:6,actionable:!1}),n},n.generateDistributionInsights=function(t){var n=[],e=Object.keys(t).filter(function(n){return"numeric"===t[n].type}),r=e.filter(function(n){var e=t[n];return"normal"===e.distribution||Math.abs(e.skewness||0)<.5&&Math.abs(e.kurtosis||0)<.5});r.length>.7*e.length&&n.push({type:"distribution",title:"Most Variables Normally Distributed",description:r.length+" out of "+e.length+" numeric variables appear normally distributed.",importance:6,actionable:!1});var i=e.filter(function(n){var e=t[n];return e.outliers&&e.outliers.count>0});if(i.length>0){var a=i.reduce(function(n,e){return n+t[e].outliers.count},0);n.push({type:"outliers",title:"Outliers Detected",description:"Found "+a+" outliers across "+i.length+" variables.",importance:7,actionable:!0,recommendation:"Investigate outliers to determine if they represent errors or genuine extreme values."})}return n},n.generateQualityInsights=function(t,n){var e=[],r=Object.keys(n),i=this.countDuplicateRows(t);i>0&&e.push({type:"data_quality",title:"Duplicate Rows Found",description:"Dataset contains "+i+" duplicate rows.",importance:8,actionable:!0,recommendation:"Remove duplicate rows to avoid bias in analysis."});var a=r.reduce(function(t,e){return t+n[e].nullCount},0),o=a/(t.length*t.columns)*100;return o>10&&e.push({type:"data_quality",title:"Significant Missing Data",description:o.toFixed(1)+"% of all data points are missing.",importance:9,actionable:!0,recommendation:"Develop a comprehensive missing data strategy."}),e},n.generateRecommendations=function(t,n,e){var r=[];return t.overallScore<70&&r.push({priority:"high",category:"data_cleaning",title:"Improve Data Quality",description:"Address missing values, outliers, and inconsistencies before analysis.",steps:["Handle missing values through imputation or removal","Investigate and address outliers","Standardize data formats and categories","Validate data integrity"]}),e.strongRelationships.length>0&&r.push({priority:"medium",category:"analysis",title:"Explore Strong Relationships",description:"Investigate detected correlations with deeper analysis.",steps:["Perform regression analysis on highly correlated variables","Create visualizations to understand relationships","Test for causality where appropriate"]}),Object.keys(n).filter(function(t){return"numeric"===n[t].type}).length>2&&r.push({priority:"low",category:"modeling",title:"Consider Advanced Analytics",description:"Dataset is suitable for machine learning approaches.",steps:["Perform feature selection","Try different modeling approaches","Validate models with cross-validation","Interpret model results"]}),r},n.inferColumnType=function(t){var n=t.filter(function(t){return null!=t});if(0===n.length)return"unknown";var e=n.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}).length,r=n.filter(function(t){if("string"==typeof t){var n=new Date(t);return!isNaN(n.getTime())}return!1}).length;return e/n.length>.8?"numeric":r/n.length>.8?"datetime":"categorical"},n.getValidCount=function(t){return t.filter(function(t){return null!=t}).length},n.getNullCount=function(t){return t.filter(function(t){return null==t}).length},n.getUniqueCount=function(t){var n=t.filter(function(t){return null!=t});return new Set(n).size},n.getNullPercentage=function(t){return this.getNullCount(t)/t.length*100},n.calculateMean=function(t){return t.reduce(function(t,n){return t+n},0)/t.length},n.calculateMedian=function(t){var n=[].concat(t).sort(function(t,n){return t-n}),e=Math.floor(n.length/2);return n.length%2==0?(n[e-1]+n[e])/2:n[e]},n.calculateStandardDeviation=function(t){var n=this.calculateMean(t),e=t.reduce(function(t,e){return t+Math.pow(e-n,2)},0)/(t.length-1);return Math.sqrt(e)},n.calculateVariance=function(t){var n=this.calculateMean(t);return t.reduce(function(t,e){return t+Math.pow(e-n,2)},0)/(t.length-1)},n.calculateSkewness=function(t){var n=t.length,e=this.calculateMean(t),r=this.calculateStandardDeviation(t);if(0===r)return 0;var i=t.reduce(function(t,n){return t+Math.pow((n-e)/r,3)},0);return n/((n-1)*(n-2))*i},n.calculateKurtosis=function(t){var n=t.length,e=this.calculateMean(t),r=this.calculateStandardDeviation(t);if(0===r)return-3;var i=t.reduce(function(t,n){return t+Math.pow((n-e)/r,4)},0);return n*(n+1)/((n-1)*(n-2)*(n-3))*i-3*Math.pow(n-1,2)/((n-2)*(n-3))},n.calculateQuartiles=function(t){var n=[].concat(t).sort(function(t,n){return t-n}),e=n.length,r=Math.floor(.25*e),i=Math.floor(.5*e),a=Math.floor(.75*e);return{q1:n[r],q2:n[i],q3:n[a],iqr:n[a]-n[r]}},n.detectOutliers=function(t){var n=this.calculateQuartiles(t),e=n.q1-1.5*n.iqr,r=n.q3+1.5*n.iqr,i=t.filter(function(t){return t<e||t>r});return{count:i.length,percentage:i.length/t.length*100,values:i,lowerBound:e,upperBound:r}},n.classifyDistribution=function(t){var n=this.calculateSkewness(t),e=this.calculateKurtosis(t);return Math.abs(n)<.5&&Math.abs(e)<.5?"normal":n>1?"right_skewed":n<-1?"left_skewed":e>1?"heavy_tailed":e<-1?"light_tailed":"unknown"},n.calculateFrequencyTable=function(t){var n={};t.forEach(function(t){var e=String(t);n[e]=(n[e]||0)+1});var e=t.length;return Object.entries(n).map(function(t){var n=t[1];return{value:t[0],count:n,percentage:n/e*100}}).sort(function(t,n){return n.count-t.count})},n.getMostFrequent=function(t){return t[0]||null},n.getLeastFrequent=function(t){return t[t.length-1]||null},n.calculateEntropy=function(t){var n=t.reduce(function(t,n){return t+n.count},0);return t.reduce(function(t,e){var r=e.count/n;return t-r*Math.log2(r)},0)},n.calculateConcentration=function(t){var n=t.reduce(function(t,n){return t+n.count},0),e=t[0];return e?e.count/n*100:0},n.analyzeDateFrequency=function(t){var n=t.map(function(t){return new Date(t).getTime()}),e=n.sort(function(t,n){return t-n});if(e.length<2)return"insufficient_data";for(var r=[],i=1;i<e.length;i++)r.push(e[i]-e[i-1]);var a=r.reduce(function(t,n){return t+n},0)/r.length;return a<864e5?"sub_daily":a<6048e5?"daily":a<2592e6?"weekly":a<31536e6?"monthly":"yearly"},n.assessCompleteness=function(t){var n=t.length*t.columns,e=0;return t.data.forEach(function(n){t.headers.forEach(function(t){null!=n[t]&&e++})}),e/n*100},n.assessConsistency=function(t){var n=100;return t.headers.forEach(function(e){var r=t.data.map(function(t){return t[e]});new Set(r.filter(function(t){return null!=t}).map(function(t){return typeof t})).size>1&&(n-=10)}),Math.max(0,n)},n.assessUniqueness=function(t){var n=this.countDuplicateRows(t);return Math.max(0,100-n/t.length*100)},n.assessValidity=function(t){var n=100,e=0,r=0;return t.data.forEach(function(n){t.headers.forEach(function(t){var i=n[t];null!=i&&(e++,"number"!=typeof i||isFinite(i)||r++)})}),e>0&&(n=Math.max(0,100-r/e*100)),n},n.getQualityRecommendation=function(t){return t>=90?"Excellent data quality - ready for analysis":t>=80?"Good data quality - minor cleaning recommended":t>=70?"Fair data quality - significant cleaning needed":t>=60?"Poor data quality - extensive preprocessing required":"Very poor data quality - major data work needed before analysis"},n.testNormality=function(t){if(t.length<8)return{test:"insufficient_data"};this.calculateMean(t),this.calculateStandardDeviation(t);var n=this.calculateSkewness(t),e=this.calculateKurtosis(t),r=t.length/6*(Math.pow(n,2)+Math.pow(e,2)/4),i=1-this.chiSquareCDF(r,2);return{test:"jarque_bera",statistic:r,pValue:i,isNormal:i>.05,skewness:n,kurtosis:e}},n.createHistogram=function(t,n){void 0===n&&(n=10);var e=Math.min.apply(Math,t),r=(Math.max.apply(Math,t)-e)/n,i=Array(n).fill(0);return t.forEach(function(t){var a=Math.floor((t-e)/r);a===n&&(a=n-1),i[a]++}),i.map(function(n,i){return{binStart:e+i*r,binEnd:e+(i+1)*r,count:n,percentage:n/t.length*100}})},n.getDescriptiveStats=function(t){return{count:t.length,mean:this.calculateMean(t),median:this.calculateMedian(t),min:Math.min.apply(Math,t),max:Math.max.apply(Math,t),std:this.calculateStandardDeviation(t),var:this.calculateVariance(t),skewness:this.calculateSkewness(t),kurtosis:this.calculateKurtosis(t)}},n.calculatePearsonCorrelation=function(t,n){for(var e=[],r=0;r<t.length;r++)"number"==typeof t[r]&&"number"==typeof n[r]&&!isNaN(t[r])&&!isNaN(n[r])&&isFinite(t[r])&&isFinite(n[r])&&e.push({x:t[r],y:n[r]});if(e.length<3)return 0;for(var i=e.length,a=e.map(function(t){return t.x}),o=e.map(function(t){return t.y}),u=a.reduce(function(t,n){return t+n},0)/i,s=o.reduce(function(t,n){return t+n},0)/i,c=0,l=0,f=0,h=0;h<i;h++){var d=a[h]-u,p=o[h]-s;c+=d*p,l+=d*d,f+=p*p}var m=Math.sqrt(l*f);return 0===m?0:c/m},n.getCorrelationStrength=function(t){return t>=.9?"Very Strong":t>=.7?"Strong":t>=.5?"Moderate":t>=.3?"Weak":"Very Weak"},n.calculateAverageCorrelation=function(t,n){for(var e=0,r=0,i=0;i<n.length;i++)for(var a=i+1;a<n.length;a++){var o=t[n[i]][n[a]];isNaN(o)||(e+=Math.abs(o),r++)}return r>0?e/r:0},n.countDuplicateRows=function(t){var n=new Set,e=0;return t.data.forEach(function(t){var r=JSON.stringify(t);n.has(r)?e++:n.add(r)}),e},n.getDataTypes=function(t){var n={};return t.headers.forEach(function(e){var r=t.data.map(function(t){return t[e]}).filter(function(t){return null!=t});if(0!==r.length){var i=new Set(r.map(function(t){return typeof t}));n[e]=1===i.size?Array.from(i)[0]:"mixed"}else n[e]="empty"}),n},n.estimateMemoryFootprint=function(t){var n=0;t.data.forEach(function(e){t.headers.forEach(function(t){var r=e[t];n+="string"==typeof r?2*r.length:"number"==typeof r?8:"boolean"==typeof r?1:8})});var e=n/1024,r=e/1024;return r>=1?r.toFixed(2)+" MB":e>=1?e.toFixed(2)+" KB":n+" bytes"},n.chiSquareCDF=function(t,n){return t<=0?0:this.incompleteGamma(n/2,t/2)/this.gamma(n/2)},n.incompleteGamma=function(t,n){if(n<=0)return 0;for(var e=1,r=1,i=1;i<100&&(e+=r*=n/(t+i-1),!(Math.abs(r)<1e-12));i++);return Math.pow(n,t)*Math.exp(-n)*e},n.gamma=function(t){var n=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7];if(t<.5)return Math.PI/(Math.sin(Math.PI*t)*this.gamma(1-t));t-=1;for(var e=n[0],r=1;r<n.length;r++)e+=n[r]/(t+r);var i=t+n.length-1.5;return Math.sqrt(2*Math.PI)*Math.pow(i,t+.5)*Math.exp(-i)*e},n.generateTextReport=function(t){var n="";return n+="STATISTICAL SUMMARY REPORT\n",n+="Generated: "+new Date(t.generatedAt).toLocaleString()+"\n",n+="=".repeat(50)+"\n\n",n+="BASIC INFORMATION\n",n+="-".repeat(20)+"\n",n+="Rows: "+t.basicInfo.totalRows.toLocaleString()+"\n",n+="Columns: "+t.basicInfo.totalColumns+"\n",n+="Memory: "+t.basicInfo.memoryFootprint+"\n\n",n+="DATA QUALITY\n",n+="-".repeat(20)+"\n",n+="Overall Score: "+t.dataQuality.overallScore.toFixed(1)+"/100\n",n+="Completeness: "+t.dataQuality.completenessScore.toFixed(1)+"%\n",n+="Consistency: "+t.dataQuality.consistencyScore.toFixed(1)+"%\n",n+=t.dataQuality.recommendation+"\n\n",t.keyInsights.length>0&&(n+="KEY INSIGHTS\n",n+="-".repeat(20)+"\n",t.keyInsights.slice(0,5).forEach(function(t,e){n+=e+1+". "+t.title+"\n",n+=" "+t.description+"\n",t.recommendation&&(n+=" ā "+t.recommendation+"\n"),n+="\n"})),t.relationships.strongRelationships.length>0&&(n+="STRONG RELATIONSHIPS\n",n+="-".repeat(20)+"\n",t.relationships.strongRelationships.slice(0,3).forEach(function(t){n+=t.variable1+" ā "+t.variable2+": "+t.correlation.toFixed(3)+" ("+t.strength+")\n"}),n+="\n"),t.recommendations.length>0&&(n+="RECOMMENDATIONS\n",n+="-".repeat(20)+"\n",t.recommendations.forEach(function(t,e){n+=e+1+". ["+t.priority.toUpperCase()+"] "+t.title+"\n",n+=" "+t.description+"\n",t.steps.forEach(function(t){n+=" ⢠"+t+"\n"}),n+="\n"})),n},n.exportSummary=function(t,n){switch(void 0===n&&(n="json"),n){case"json":return JSON.stringify(t,null,2);case"text":return this.generateTextReport(t);case"csv":return this.generateCSVReport(t);default:throw new Error("Unsupported export format: "+n)}},n.generateCSVReport=function(t){var n="Metric,Value\n";return n+="Total Rows,"+t.basicInfo.totalRows+"\n",n+="Total Columns,"+t.basicInfo.totalColumns+"\n",n+="Overall Quality Score,"+t.dataQuality.overallScore.toFixed(1)+"\n",n+="Completeness Score,"+t.dataQuality.completenessScore.toFixed(1)+"\n",n+="Consistency Score,"+t.dataQuality.consistencyScore.toFixed(1)+"\n",n+="Strong Relationships,"+t.relationships.strongRelationships.length+"\n",n+="Key Insights,"+t.keyInsights.length+"\n",t.relationships.strongRelationships.length>0&&(n+="\nVariable 1,Variable 2,Correlation,Strength\n",t.relationships.strongRelationships.forEach(function(t){n+=t.variable1+","+t.variable2+","+t.correlation.toFixed(4)+","+t.strength+"\n"})),n},t}(),y=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.analyze=function(t){if(!t||!t.data||!t.headers)throw new Error("Invalid dataset format");var n={trends:this.detectTrends(t),seasonality:this.detectSeasonality(t),outliers:this.detectOutliers(t),correlations:this.detectCorrelationPatterns(t),distributions:this.detectDistributionPatterns(t),clustering:this.detectSimpleClusters(t),temporal:this.detectTemporalPatterns(t)};return{timestamp:(new Date).toISOString(),datasetSize:t.length,patterns:n,summary:this.generateSummary(n),insights:this.generateInsights(n)}},n.detectTrends=function(t){var n=this,e=this.getNumericColumns(t),r=[];return e.forEach(function(e){var i=n.getColumnValues(t,e);if(!(i.length<5)){var a=i.map(function(t,n){return{x:n,y:t}}),o=n.calculateTrend(a);Math.abs(o.slope)>.01&&o.rSquared>.3&&r.push({column:e,direction:o.slope>0?"increasing":"decreasing",slope:o.slope,rSquared:o.rSquared,strength:n.classifyTrendStrength(o.rSquared),significance:o.pValue<.05})}}),r},n.detectSeasonality=function(t){var n=this,e=this.getDateColumns(t),r=this.getNumericColumns(t),i=[];return 0===e.length||e.forEach(function(e){r.forEach(function(r){var a=n.createTimeSeries(t,e,r);if(!(a.length<12)){var o=n.analyzeSeasonalPattern(a);o.strength>.3&&i.push({dateColumn:e,valueColumn:r,strength:o.strength,period:o.period,peaks:o.peaks,pattern:o.type})}})}),i},n.detectOutliers=function(t){var n=this,e=this.getNumericColumns(t),r=[];return e.forEach(function(e){var i=n.getColumnValues(t,e);if(!(i.length<10)){var a=n.findOutliers(i);a.count>0&&r.push({column:e,count:a.count,percentage:a.percentage,method:"IQR",outlierValues:a.values.slice(0,5),severity:n.classifyOutlierSeverity(a.percentage)})}}),r},n.detectCorrelationPatterns=function(t){var n=this.getNumericColumns(t);if(n.length<2)return{strongCorrelations:[],clusters:[]};var e=this.buildCorrelationMatrix(t,n);return{strongCorrelations:this.findStrongCorrelations(e),clusters:this.findCorrelationClusters(e),avgCorrelation:this.calculateAverageCorrelation(e)}},n.detectDistributionPatterns=function(t){var n=this,e=this.getNumericColumns(t),r=[];return e.forEach(function(e){var i=n.getColumnValues(t,e);if(!(i.length<20)){var a=n.analyzeDistribution(i);r.push({column:e,type:a.type,skewness:a.skewness,kurtosis:a.kurtosis,isNormal:Math.abs(a.skewness)<1&&Math.abs(a.kurtosis)<1,transformation:n.suggestTransformation(a)})}}),r},n.detectSimpleClusters=function(t){var n=this.getNumericColumns(t);if(n.length<2)return[];for(var e=[],r=0;r<n.length;r++)for(var i=r+1;i<n.length;i++){var a=n[r],o=n[i],u=this.getTwoColumnData(t,a,o);if(!(u.length<10)){var s=this.performSimpleKMeans(u,3);s.quality>.5&&e.push({variables:[a,o],clusters:s.centers,quality:s.quality,interpretation:this.interpretClusterQuality(s.quality)})}}return e},n.detectTemporalPatterns=function(t){var n=this,e=this.getDateColumns(t),r=[];return e.forEach(function(e){var i=n.getColumnValues(t,e).map(function(t){return new Date(t)}).filter(function(t){return!isNaN(t.getTime())}).sort(function(t,n){return t-n});if(!(i.length<5)){var a=n.calculateIntervals(i),o=n.determineFrequency(a),u=n.findGaps(i,o);r.push({column:e,frequency:o,totalSpan:i[i.length-1]-i[0],avgInterval:a.reduce(function(t,n){return t+n},0)/a.length,gaps:u.length,pattern:u.length>.1*i.length?"irregular":"regular"})}}),r},n.getNumericColumns=function(t){return t.headers.filter(function(n){var e=t.data.map(function(t){return t[n]});return e.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}).length>.7*e.length})},n.getDateColumns=function(t){return t.headers.filter(function(n){var e=t.data.map(function(t){return t[n]}),r=e.filter(function(t){if("string"==typeof t){var n=new Date(t);return!isNaN(n.getTime())}return!1}).length;return r>.7*e.length})},n.getColumnValues=function(t,n){return t.data.map(function(t){return t[n]}).filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)})},n.getTwoColumnData=function(t,n,e){return t.data.map(function(t){return{x:t[n],y:t[e]}}).filter(function(t){return"number"==typeof t.x&&!isNaN(t.x)&&isFinite(t.x)&&"number"==typeof t.y&&!isNaN(t.y)&&isFinite(t.y)})},n.createTimeSeries=function(t,n,e){return t.data.map(function(t){return{date:new Date(t[n]),value:t[e]}}).filter(function(t){return!isNaN(t.date.getTime())&&"number"==typeof t.value&&!isNaN(t.value)&&isFinite(t.value)}).sort(function(t,n){return t.date-n.date})},n.calculateTrend=function(t){var n=t.length,e=t.reduce(function(t,n){return t+n.x},0),r=t.reduce(function(t,n){return t+n.y},0),i=t.reduce(function(t,n){return t+n.x*n.y},0),a=t.reduce(function(t,n){return t+n.x*n.x},0),o=(n*i-e*r)/(n*a-e*e),u=(r-o*e)/n,s=t.map(function(t){return u+o*t.x}),c=t.reduce(function(t,n,e){return t+Math.pow(n.y-s[e],2)},0),l=t.reduce(function(t,e){return t+Math.pow(e.y-r/n,2)},0),f=1-c/l,h=Math.sqrt(c/(n-2)),d=2*(1-this.tCDF(Math.abs(o/h),n-2));return{slope:o,intercept:u,rSquared:f,pValue:d}},n.analyzeSeasonalPattern=function(t){var n=t.map(function(t){return t.value}),e=n.length;if(e<12)return{strength:0};for(var r=12,i=0,a=4;a<=Math.min(e/3,24);a++){var o=this.calculateAutoCorrelation(n,a);o>i&&(i=o,r=a)}var u=this.findPeaks(n),s=this.findValleys(n);return{strength:i,period:r,peaks:u.length,valleys:s.length,type:this.classifySeasonalType(i,u.length,s.length)}},n.findOutliers=function(t){var n=[].concat(t).sort(function(t,n){return t-n}),e=this.calculateQuantile(n,.25),r=this.calculateQuantile(n,.75),i=r-e,a=e-1.5*i,o=r+1.5*i,u=t.filter(function(t){return t<a||t>o});return{count:u.length,percentage:u.length/t.length*100,values:u,bounds:{lower:a,upper:o}}},n.buildCorrelationMatrix=function(t,n){var e=this,r={};return n.forEach(function(i){r[i]={},n.forEach(function(n){if(i===n)r[i][n]=1;else{var a=e.getColumnValues(t,i),o=e.getColumnValues(t,n);r[i][n]=e.calculateCorrelation(a,o)}})}),r},n.findStrongCorrelations=function(t){for(var n=[],e=Object.keys(t),r=0;r<e.length;r++)for(var i=r+1;i<e.length;i++){var a=e[r],o=e[i],u=t[a][o];Math.abs(u)>.7&&n.push({variable1:a,variable2:o,correlation:u,strength:this.getCorrelationStrength(Math.abs(u)),direction:u>0?"positive":"negative"})}return n.sort(function(t,n){return Math.abs(n.correlation)-Math.abs(t.correlation)})},n.findCorrelationClusters=function(t){var n=Object.keys(t),e=[],r=new Set;return n.forEach(function(i){if(!r.has(i)){var a=[i];r.add(i),n.forEach(function(n){!r.has(n)&&Math.abs(t[i][n])>.7&&(a.push(n),r.add(n))}),a.length>1&&e.push(a)}}),e},n.analyzeDistribution=function(t){var n=t.reduce(function(t,n){return t+n},0)/t.length,e=t.reduce(function(t,e){return t+Math.pow(e-n,2)},0)/(t.length-1),r=Math.sqrt(e),i=this.calculateSkewness(t,n,r),a=this.calculateKurtosis(t,n,r);return{mean:n,stdDev:r,skewness:i,kurtosis:a,type:this.classifyDistribution(i,a)}},n.performSimpleKMeans=function(t,n){for(var e=this.initializeCenters(t,n),r=new Array(t.length),i=!0,a=0;i&&a<50;){i=!1;for(var o=function(n){var a=e.map(function(e){return Math.sqrt(Math.pow(t[n].x-e.x,2)+Math.pow(t[n].y-e.y,2))}),o=a.indexOf(Math.min.apply(Math,a));r[n]!==o&&(i=!0,r[n]=o)},u=0;u<t.length;u++)o(u);for(var s=function(n){var i=t.filter(function(t,e){return r[e]===n});i.length>0&&(e[n]={x:i.reduce(function(t,n){return t+n.x},0)/i.length,y:i.reduce(function(t,n){return t+n.y},0)/i.length})},c=0;c<n;c++)s(c);a++}var l=this.calculateClusterQuality(t,r,e);return{centers:e,assignments:r,quality:l}},n.calculateIntervals=function(t){for(var n=[],e=1;e<t.length;e++)n.push(t[e]-t[e-1]);return n},n.determineFrequency=function(t){if(0===t.length)return"unknown";var n=t.reduce(function(t,n){return t+n},0)/t.length;return n<864e5?"sub_daily":n<1728e5?"daily":n<6912e5?"weekly":n<3024e6?"monthly":"yearly"},n.findGaps=function(t,n){for(var e=this.getExpectedInterval(n),r=[],i=1;i<t.length;i++){var a=t[i]-t[i-1];a>2*e&&r.push({start:t[i-1],end:t[i],duration:a})}return r},n.classifyTrendStrength=function(t){return t>.8?"very_strong":t>.6?"strong":t>.4?"moderate":t>.2?"weak":"very_weak"},n.classifyOutlierSeverity=function(t){return t>10?"severe":t>5?"moderate":t>1?"mild":"minimal"},n.classifySeasonalType=function(t,n,e){return t>.7?"strong_seasonal":t>.5?"moderate_seasonal":t>.3?"weak_seasonal":"no_seasonality"},n.classifyDistribution=function(t,n){return Math.abs(t)<.5&&Math.abs(n)<.5?"normal":t>1?"right_skewed":t<-1?"left_skewed":n>1?"heavy_tailed":"irregular"},n.suggestTransformation=function(t){return"normal"===t.type?"none":t.skewness>1?"log_transform":t.skewness<-1?"square_transform":"standardization"},n.getCorrelationStrength=function(t){return t>=.9?"very_strong":t>=.7?"strong":t>=.5?"moderate":t>=.3?"weak":"very_weak"},n.interpretClusterQuality=function(t){return t>.7?"excellent":t>.5?"good":t>.3?"fair":"poor"},n.generateSummary=function(t){var n={};return Object.keys(t).forEach(function(e){n[e]=Array.isArray(t[e])?t[e].length:"object"==typeof t[e]&&null!==t[e]?Object.keys(t[e]).length:0}),n.totalPatterns=Object.values(n).reduce(function(t,n){return t+n},0),n},n.generateInsights=function(t){var n=[];if(t.trends.length>0){var e=t.trends.filter(function(t){return"strong"===t.strength||"very_strong"===t.strength});e.length>0&&n.push({type:"trend",importance:"high",message:"Found "+e.length+" strong trend(s) in your data",details:e.map(function(t){return t.column+": "+t.direction+" trend"})})}if(t.correlations.strongCorrelations.length>0&&n.push({type:"correlation",importance:"medium",message:"Discovered "+t.correlations.strongCorrelations.length+" strong correlation(s)",details:t.correlations.strongCorrelations.slice(0,3).map(function(t){return t.variable1+" ā "+t.variable2+": "+t.strength+" "+t.direction})}),t.outliers.length>0){var r=t.outliers.filter(function(t){return"severe"===t.severity});r.length>0&&n.push({type:"outliers",importance:"high",message:"Detected severe outliers in "+r.length+" column(s)",details:r.map(function(t){return t.column+": "+t.count+" outliers ("+t.percentage.toFixed(1)+"%)"})})}if(t.seasonality.length>0&&n.push({type:"seasonality",importance:"medium",message:"Found seasonal patterns in "+t.seasonality.length+" time series",details:t.seasonality.map(function(t){return t.valueColumn+": "+t.pattern+" (period: "+t.period+")"})}),t.clustering.length>0){var i=t.clustering.filter(function(t){return t.quality>.5});i.length>0&&n.push({type:"clustering",importance:"medium",message:"Identified "+i.length+" natural cluster(s) in the data",details:i.map(function(t){return t.variables.join(" vs ")+": "+t.interpretation+" clusters"})})}return n.sort(function(t,n){var e={high:3,medium:2,low:1};return e[n.importance]-e[t.importance]})},n.calculateAutoCorrelation=function(t,n){if(n>=t.length)return 0;for(var e=t.length-n,r=t.slice(0,e).reduce(function(t,n){return t+n},0)/e,i=t.slice(n).reduce(function(t,n){return t+n},0)/e,a=0,o=0,u=0,s=0;s<e;s++){var c=t[s]-r,l=t[s+n]-i;a+=c*l,o+=c*c,u+=l*l}var f=Math.sqrt(o*u);return 0===f?0:a/f},n.findPeaks=function(t){for(var n=[],e=1;e<t.length-1;e++)t[e]>t[e-1]&&t[e]>t[e+1]&&n.push(e);return n},n.findValleys=function(t){for(var n=[],e=1;e<t.length-1;e++)t[e]<t[e-1]&&t[e]<t[e+1]&&n.push(e);return n},n.calculateQuantile=function(t,n){var e=(t.length-1)*n,r=Math.floor(e),i=Math.ceil(e),a=e%1;return r===i?t[r]:t[r]*(1-a)+t[i]*a},n.calculateCorrelation=function(t,n){if(t.length!==n.length||t.length<3)return 0;for(var e=t.length,r=t.reduce(function(t,n){return t+n},0)/e,i=n.reduce(function(t,n){return t+n},0)/e,a=0,o=0,u=0,s=0;s<e;s++){var c=t[s]-r,l=n[s]-i;a+=c*l,o+=c*c,u+=l*l}var f=Math.sqrt(o*u);return 0===f?0:a/f},n.calculateSkewness=function(t,n,e){if(0===e)return 0;var r=t.length,i=t.reduce(function(t,r){return t+Math.pow((r-n)/e,3)},0);return r/((r-1)*(r-2))*i},n.calculateKurtosis=function(t,n,e){if(0===e)return 0;var r=t.length,i=t.reduce(function(t,r){return t+Math.pow((r-n)/e,4)},0);return r*(r+1)/((r-1)*(r-2)*(r-3))*i-3*Math.pow(r-1,2)/((r-2)*(r-3))},n.initializeCenters=function(t,n){for(var e=[],r=Math.min.apply(Math,t.map(function(t){return t.x})),i=Math.max.apply(Math,t.map(function(t){return t.x})),a=Math.min.apply(Math,t.map(function(t){return t.y})),o=Math.max.apply(Math,t.map(function(t){return t.y})),u=0;u<n;u++)e.push({x:r+Math.random()*(i-r),y:a+Math.random()*(o-a)});return e},n.calculateClusterQuality=function(t,n,e){var r=0,i=0,a=t.reduce(function(t,n){return t+n.x},0)/t.length,o=t.reduce(function(t,n){return t+n.y},0)/t.length;e.forEach(function(e,u){var s=t.filter(function(t,e){return n[e]===u});s.forEach(function(t){r+=Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)}),i+=s.length*(Math.pow(e.x-a,2)+Math.pow(e.y-o,2))});var u=r+i;return u>0?i/u:0},n.calculateAverageCorrelation=function(t){},n.calculateAverageCorrelation=function(t){for(var n=Object.keys(t),e=0,r=0,i=0;i<n.length;i++)for(var a=i+1;a<n.length;a++)e+=Math.abs(t[n[i]][n[a]]),r++;return r>0?e/r:0},n.getExpectedInterval=function(t){switch(t){case"daily":default:return 864e5;case"weekly":return 6048e5;case"monthly":return 2592e6;case"yearly":return 31536e6}},n.tCDF=function(t,n){return n<=0?.5:1-.5*this.incompleteBeta(n/2,.5,n/(t*t+n))},n.incompleteBeta=function(t,n,e){if(e<=0)return 0;if(e>=1)return 1;for(var r=0,i=1,a=0;a<100&&(a>0&&(i*=e*(t+a-1)/a),r+=i/(t+a),!(Math.abs(i)<1e-10));a++);return r*Math.pow(e,t)*Math.pow(1-e,n)},t}(),b=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.interpret=function(t){if(!t||"object"!=typeof t)throw new Error("Invalid test result object");var n=this.identifyTestType(t);return{testType:n,summary:this.generateSummary(t,n),conclusion:this.generateConclusion(t,n),significance:this.interpretSignificance(t),effectSize:this.interpretEffectSize(t,n),confidence:this.assessConfidence(t),assumptions:this.checkAssumptions(n),recommendations:this.generateRecommendations(t,n),plainLanguage:this.generatePlainLanguageSummary(t,n)}},n.identifyTestType=function(t){return t.type?t.type:void 0!==t.correlation?"correlation":void 0!==t.rSquared?"regression":void 0!==t.fStatistic?"anova":void 0!==t.tStatistic||void 0!==t.statistic?void 0!==t.degreesOfFreedom?"t-test":"z-test":void 0!==t.isNormal?"normality-test":void 0!==t.clusters?"clustering":"general-test"},n.generateSummary=function(t,n){switch(n){case"correlation":return this.summarizeCorrelation(t);case"regression":return this.summarizeRegression(t);case"t-test":return this.summarizeTTest(t);case"z-test":return this.summarizeZTest(t);case"anova":return this.summarizeANOVA(t);case"normality-test":return this.summarizeNormalityTest(t);default:return this.summarizeGeneral(t)}},n.summarizeCorrelation=function(t){var n=t.correlation,e=this.getCorrelationStrength(Math.abs(n)),r=t.pValue<.05?"significant":"not significant";return e+" "+(n>0?"positive":"negative")+" correlation (r = "+n.toFixed(3)+") that is "+r},n.summarizeRegression=function(t){var n=t.rSquared,e=(100*n).toFixed(1);return(t.pValueModel<.05?"significant":"not significant")+" regression model explaining "+e+"% of variance (R² = "+n.toFixed(3)+")"},n.summarizeTTest=function(t){return(t.pValue<.05?"significant":"not significant")+" difference between groups (t = "+(t.statistic||t.tStatistic).toFixed(3)+", p = "+t.pValue.toFixed(4)+")"},n.summarizeZTest=function(t){return(t.pValue<.05?"significant":"not significant")+" result compared to population (z = "+(t.statistic||t.zStatistic).toFixed(3)+", p = "+t.pValue.toFixed(4)+")"},n.summarizeANOVA=function(t){return(t.pValueModel<.05?"significant":"not significant")+" differences between groups (F = "+t.fStatistic.toFixed(3)+", p = "+t.pValueModel.toFixed(4)+")"},n.summarizeNormalityTest=function(t){var n;return"Data appears "+(t.isNormal?"normally distributed":"not normally distributed")+" ("+(t.test||"normality test")+", p = "+((null==(n=t.pValue)?void 0:n.toFixed(4))||"N/A")+")"},n.summarizeGeneral=function(t){return void 0!==t.pValue?(t.pValue<.05?"significant":"not significant")+" statistical result (p = "+t.pValue.toFixed(4)+")":"Statistical analysis completed"},n.generateConclusion=function(t,n){var e=t.alpha||.05,r=t.pValue||t.pValueModel;if(void 0===r)return{decision:"inconclusive",statement:"Cannot determine statistical significance - p-value unavailable"};var i=r<e,a=(100*(1-e)).toFixed(0);return{decision:i?"reject_null":"fail_to_reject_null",statement:i?"At the "+a+"% confidence level, we reject the null hypothesis (p = "+r.toFixed(4)+" < "+e+").":"At the "+a+"% confidence level, we fail to reject the null hypothesis (p = "+r.toFixed(4)+" ā„ "+e+").",alpha:e,pValue:r,confidenceLevel:parseInt(a)}},n.interpretSignificance=function(t){var n,e,r=t.pValue||t.pValueModel;return void 0===r?{level:"unknown",interpretation:"P-value not available"}:(r<.001?(n="very_strong",e="Very strong evidence against null hypothesis"):r<.01?(n="strong",e="Strong evidence against null hypothesis"):r<.05?(n="moderate",e="Moderate evidence against null hypothesis"):r<.1?(n="weak",e="Weak evidence against null hypothesis"):(n="none",e="No evidence against null hypothesis"),{level:n,pValue:r,interpretation:e,isSignificant:r<.05})},n.interpretEffectSize=function(t,n){switch(n){case"correlation":return this.interpretCorrelationEffect(t);case"regression":return this.interpretRegressionEffect(t);case"t-test":return this.interpretTTestEffect(t);case"anova":return this.interpretANOVAEffect(t);default:return{interpretation:"Effect size not available for this test type"}}},n.interpretCorrelationEffect=function(t){var n=Math.abs(t.correlation),e=n*n;return{value:n,magnitude:this.getCorrelationStrength(n),varianceExplained:(100*e).toFixed(1)+"%",interpretation:this.getCorrelationStrength(n).toLowerCase()+" relationship",cohen:this.getCohenCorrelation(n)}},n.interpretRegressionEffect=function(t){var n=t.rSquared;return{value:n,magnitude:this.getRSquaredMagnitude(n),varianceExplained:(100*n).toFixed(1)+"%",interpretation:this.getRSquaredMagnitude(n).toLowerCase()+" explanatory power"}},n.interpretTTestEffect=function(t){if(void 0!==t.sample1Mean&&void 0!==t.sample2Mean){var n=Math.abs(t.sample1Mean-t.sample2Mean),e=n/(t.standardError*Math.sqrt(2));return{value:e,magnitude:this.getCohenD(e),interpretation:this.getCohenD(e).toLowerCase()+" effect size",meanDifference:n}}return{interpretation:"Effect size cannot be calculated - insufficient data"}},n.interpretANOVAEffect=function(t){if(t.sumOfSquaresBetween&&t.sumOfSquaresWithin){var n=t.sumOfSquaresBetween/(t.sumOfSquaresBetween+t.sumOfSquaresWithin);return{value:n,magnitude:this.getEtaSquared(n),varianceExplained:(100*n).toFixed(1)+"%",interpretation:this.getEtaSquared(n).toLowerCase()+" effect size"}}return{interpretation:"Effect size cannot be calculated - insufficient data"}},n.assessConfidence=function(t){var n=[],e="medium";t.sampleSize&&(t.sampleSize>100?(n.push("Large sample size increases reliability"),e="high"):t.sampleSize<30&&(n.push("Small sample size may limit reliability"),e="low"));var r=t.pValue||t.pValueModel;if(void 0!==r&&(r<.001?(n.push("Very low p-value strengthens confidence"),e="low"===e?"medium":"high"):r>.1&&(n.push("High p-value suggests weak evidence"),e="low")),t.confidenceInterval){var i=t.confidenceInterval,a=Math.abs(i.upper-i.lower),o=Math.abs((i.upper+i.lower)/2);o>0&&a/o<.2?n.push("Narrow confidence interval indicates precision"):(n.push("Wide confidence interval indicates uncertainty"),e="high"===e?"medium":"low")}return{level:e,factors:n,recommendation:this.getConfidenceRecommendation(e)}},n.checkAssumptions=function(t){var n=[];switch(t){case"t-test":n.push("Normality: Data should be approximately normally distributed","Independence: Observations should be independent","Equal variances: Groups should have similar variances (for independent samples)");break;case"anova":n.push("Normality: Residuals should be normally distributed","Homogeneity: Groups should have equal variances","Independence: Observations should be independent");break;case"correlation":n.push("Linearity: Relationship should be linear","Normality: Variables should be approximately normal","Homoscedasticity: Constant variance across range");break;case"regression":n.push("Linearity: Linear relationship between variables","Independence: Residuals should be independent","Homoscedasticity: Constant variance of residuals","Normality: Residuals should be normally distributed");break;default:n.push("Check test-specific assumptions in documentation")}return{testType:t,assumptions:n,importance:"Violating assumptions may invalidate results"}},n.generateRecommendations=function(t,n){var e=[],r=t.pValue||t.pValueModel;return void 0!==r&&(r<.001?e.push("Very strong result - investigate practical significance and effect size"):r>=.05&&r<.1?e.push("Marginally significant - consider collecting more data or using different approach"):r>=.1&&e.push("No significant effect found - examine data quality and consider alternative hypotheses")),"correlation"===n&&t.sampleSize&&t.sampleSize<30&&e.push("Small sample size - correlation may not be reliable"),"regression"===n&&t.rSquared<.3&&e.push("Low R² - consider additional predictors or different model"),t.assumptions&&t.assumptions.violated&&e.push("Assumptions may be violated - consider alternative tests or data transformations"),e.push("Replicate findings with independent data when possible"),e},n.generatePlainLanguageSummary=function(t,n){var e=t.pValue||t.pValueModel,r=e&&e<.05,i="";switch(i+=r?"ā SIGNIFICANT RESULT: ":"ā NOT SIGNIFICANT: ",n){case"correlation":var a=t.correlation,o=this.getCorrelationStrength(Math.abs(a));i+=r?"Found a "+o.toLowerCase()+" "+(a>0?"positive":"negative")+" relationship between the variables.":"No meaningful relationship found between the variables.";break;case"regression":var u=(100*t.rSquared).toFixed(0);i+=r?"The model successfully predicts the outcome, explaining "+u+"% of the variation.":"The model does not provide meaningful predictions.";break;case"t-test":i+=r?"Found a meaningful difference between the groups.":"No meaningful difference found between the groups.";break;case"anova":i+=r?"Found meaningful differences between at least some groups.":"No meaningful differences found between groups.";break;case"normality-test":i+=t.isNormal?"Data follows a normal distribution - suitable for standard statistical tests.":"Data does not follow a normal distribution - consider alternative tests.";break;default:i+=r?"The statistical test shows a significant result.":"The statistical test shows no significant result."}return void 0!==e&&(i+=" (p-value: "+e.toFixed(4)+")"),i},n.getCorrelationStrength=function(t){return t>=.9?"Very Strong":t>=.7?"Strong":t>=.5?"Moderate":t>=.3?"Weak":"Very Weak"},n.getCohenCorrelation=function(t){return t>=.5?"Large effect":t>=.3?"Medium effect":t>=.1?"Small effect":"Negligible effect"},n.getRSquaredMagnitude=function(t){return t>=.7?"Strong":t>=.5?"Moderate":t>=.3?"Weak":"Very Weak"},n.getCohenD=function(t){return t>=.8?"Large":t>=.5?"Medium":t>=.2?"Small":"Negligible"},n.getEtaSquared=function(t){return t>=.14?"Large":t>=.06?"Medium":t>=.01?"Small":"Negligible"},n.getConfidenceRecommendation=function(t){switch(t){case"high":return"Results appear robust and reliable";case"medium":return"Results are reasonably reliable but verify when possible";case"low":return"Interpret results with caution - consider additional validation";default:return"Assess result reliability based on context"}},n.formatForReport=function(t){return{title:t.testType.toUpperCase()+" Results",summary:t.summary,conclusion:t.conclusion.statement,significance:t.significance.interpretation,effect:t.effectSize.interpretation,confidence:t.confidence.level,recommendations:t.recommendations,plainLanguage:t.plainLanguage}},n.explainStatistic=function(t,n){return{correlation:"Correlation measures the linear relationship between two variables, ranging from -1 to +1.",regression:"R² shows how much variance in the outcome is explained by the predictors.","t-test":"T-test compares means between groups or against a known value.",anova:"ANOVA tests whether there are differences between multiple group means.","z-test":"Z-test compares a sample mean to a population mean when population variance is known.","normality-test":"Tests whether data follows a normal (bell-curve) distribution."}[n]||"Statistical test to evaluate hypotheses about data."},n.generateActionItems=function(t){var n=[],e=t.testType;return t.significance.isSignificant?(n.push("Examine practical significance of the finding"),n.push("Consider replicating with independent data"),"correlation"===e&&n.push("Explore potential causal relationships"),"regression"===e&&n.push("Validate model with new data")):(n.push("Review data collection methods"),n.push("Consider if sample size was adequate"),n.push("Explore alternative analytical approaches")),n.push("Document methodology and assumptions"),n},t}(),w=/*#__PURE__*/function(){function t(t){this.stats=t,this.insights=[],this.visualizations=[]}var n=t.prototype;return n.autoAnalyze=function(t,n){void 0===n&&(n={});var r=e({minCorrelationThreshold:.3,significanceLevel:.05,generateVisualizations:!0,includeAdvancedAnalysis:!0},n);console.log("š Iniciando anĆ”lise automĆ”tica...");var i=this.stats.validateData(t);if(!i.valid)throw new Error("Dados invĆ”lidos: "+i.errors.join(", "));var a=this.classifyVariables(t);console.log("š Identificadas "+a.quantitative.length+" variĆ”veis quantitativas e "+a.qualitative.length+" qualitativas");var o=this.performDescriptiveAnalysis(t,a),u=this.performCorrelationAnalysis(t,a.quantitative,r),s=this.performRegressionAnalysis(t,a.quantitative,u,r),c=this.performDistributionAnalysis(t,a),l=this.performOutlierAnalysis(t,a.quantitative),f=this.performTemporalAnalysis(t,a),h=this.generateAutoInsights(t,{variableTypes:a,descriptiveAnalysis:o,correlationAnalysis:u,regressionAnalysis:s,distributionAnalysis:c,outlierAnalysis:l,temporalAnalysis:f},r),d=this.suggestVisualizations(a,u,c);return console.log("ā
AnĆ”lise concluĆda!"),{metadata:{analysisDate:(new Date).toISOString(),datasetSize:t.length,columnsAnalyzed:t.headers.length,configuration:r},variableClassification:a,descriptiveStatistics:o,correlationAnalysis:u,regressionAnalysis:s,distributionAnalysis:c,outlierAnalysis:l,temporalAnalysis:f,insights:h,visualizationSuggestions:d,summary:this.generateExecutiveSummary(h)}},n.classifyVariables=function(t){var n=this,e=[],r=[],i=[],a=[],o=[];return t.headers.forEach(function(u){var s=t.data.map(function(t){return t[u]}).filter(function(t){return null!=t});if(0!==s.length){var c=n.classifyVariable(s,u);switch(c.type){case"quantitative":e.push(c);break;case"datetime":i.push(c);break;case"binary":a.push(c);break;case"ordinal":o.push(c);break;default:r.push(c)}}else r.push({name:u,type:"empty",description:"Coluna vazia"})}),{quantitative:e,qualitative:r,datetime:i,binary:a,ordinal:o}},n.classifyVariable=function(t,n){var e=[].concat(new Set(t)),r=t.filter(function(t){return"number"==typeof t&&!isNaN(t)}),i=r.length/t.length;if(this.isDateTimeColumn(t))return{name:n,type:"datetime",uniqueCount:e.length,description:"VariĆ”vel temporal"};if(i>.8){var a=this.determineQuantitativeSubtype(r);return{name:n,type:"quantitative",subtype:a,uniqueCount:e.length,description:"VariĆ”vel quantitativa "+a,range:{min:Math.min.apply(Math,r),max:Math.max.apply(Math,r)}}}return 2===e.length?{name:n,type:"binary",categories:e,description:"VariĆ”vel binĆ”ria/dicotĆ“mica"}:this.isOrdinalVariable(e)?{name:n,type:"ordinal",categories:e,uniqueCount:e.length,description:"VariĆ”vel ordinal"}:{name:n,type:"qualitative",subtype:e.length>10?"nominal_many":"nominal",categories:e.slice(0,20),uniqueCount:e.length,description:"VariĆ”vel qualitativa nominal ("+e.length+" categorias)"}},n.performDescriptiveAnalysis=function(t,n){var e=this,r={};return n.quantitative.forEach(function(n){var i=t.data.map(function(t){return t[n.name]}).filter(function(t){return"number"==typeof t&&!isNaN(t)});if(i.length>0){var a=i.length,o=a>=3,u=a>=4;r[n.name]={type:"quantitative",count:a,mean:e.stats.mean(i),median:e.stats.median(i),standardDeviation:e.stats.standardDeviation(i),min:Math.min.apply(Math,i),max:Math.max.apply(Math,i),quartiles:e.stats.quartiles(i),skewness:o?e.stats.skewness(i):null,kurtosis:u?e.stats.kurtosis(i):null}}}),[].concat(n.qualitative,n.binary).forEach(function(n){var i=t.data.map(function(t){return t[n.name]}).filter(function(t){return null!=t});if(i.length>0){var a=e.stats.frequencyTable(i);r[n.name]={type:"qualitative",count:i.length,uniqueValues:n.uniqueCount,frequencyTable:a.slice(0,10),mostFrequent:a[0],concentration:e.calculateConcentration(a)}}}),r},n.performCorrelationAnalysis=function(t,n,e){var r=this;if(n.length<2)return{message:"Insuficientes variĆ”veis quantitativas para anĆ”lise de correlação"};var i=this.stats.correlationMatrix(t),a=(i.strongCorrelations||[]).filter(function(t){return Math.abs(t.correlation)>=e.minCorrelationThreshold}),o=a.map(function(t){var n=r.getCorrelationStrength(Math.abs(t.correlation)),i=t.correlation>0?"positiva":"negativa";return{type:"correlation",priority:Math.abs(t.correlation)>.7?"high":"medium",title:"Correlação "+n+" entre "+t.variable1+" e "+t.variable2,description:"Correlação "+i+" de "+t.correlation.toFixed(3),variables:[t.variable1,t.variable2],correlation:t.correlation,significance:null!=t.pValue?t.pValue<e.significanceLevel:void 0}});return{matrix:i.correlations||i,strongCorrelations:a,insights:o,summary:"Encontradas "+a.length+" correlaƧƵes ā„ "+e.minCorrelationThreshold}},n.performRegressionAnalysis=function(t,n,e,r){var i=this,a=[];return e.strongCorrelations&&e.strongCorrelations.filter(function(t){return Math.abs(t.correlation)>.5}).slice(0,5).forEach(function(n){try{var e=t.data.map(function(t){return t[n.variable1]}).filter(function(t){return"number"==typeof t&&!isNaN(t)}),o=t.data.map(function(t){return t[n.variable2]}).filter(function(t){return"number"==typeof t&&!isNaN(t)});if(e.length===o.length&&e.length>10){var u=i.stats.linearRegression(e,o);a.push({independent:n.variable1,dependent:n.variable2,equation:u.equation,rSquared:u.rSquared,significant:u.pValueModel<r.significanceLevel,interpretation:i.interpretRegressionResult(u),details:u})}}catch(t){console.warn("Erro na regressĆ£o "+n.variable1+" -> "+n.variable2+":",t.message)}}),{models:a,summary:a.length+" modelos de regressĆ£o analisados"}},n.performDistributionAnalysis=function(t,n){var e=this,r={};return n.quantitative.forEach(function(n){var i=t.data.map(function(t){return t[n.name]}).filter(function(t){return"number"==typeof t&&!isNaN(t)});if(i.length>10)try{var a=e.stats.shapiroWilkTest(i),o=e.stats.skewness(i),u=e.stats.kurtosis(i);r[n.name]={isNormal:a.isNormal,normalityPValue:a.pValue,skewness:o,kurtosis:u,distributionType:e.classifyDistributionType(o,u,a.isNormal),recommendation:e.getDistributionRecommendation(o,u,a.isNormal)}}catch(t){r[n.name]={error:"NĆ£o foi possĆvel analisar a distribuição",reason:t.message}}}),r},n.performOutlierAnalysis=function(t,n){var e=this,r={};return n.forEach(function(n){var i=t.data.map(function(t){return t[n.name]}).filter(function(t){return"number"==typeof t&&!isNaN(t)});if(i.length>5){var a=e.stats.detectOutliers(i,"iqr");r[n.name]={count:a.count,percentage:a.percentage,severity:e.classifyOutlierSeverity(a.percentage),values:a.outliers.slice(0,10),recommendation:e.getOutlierRecommendation(a.percentage)}}}),r},n.performTemporalAnalysis=function(t,n){var e=this;if(0===n.datetime.length)return{message:"Nenhuma variĆ”vel temporal detectada"};var r={};return n.datetime.forEach(function(n){var i=t.data.map(function(t){return new Date(t[n.name])}).filter(function(t){return!isNaN(t.getTime())}).sort(function(t,n){return t-n});if(i.length>2){var a=i[i.length-1]-i[0],o=a/(i.length-1);r[n.name]={span:Math.floor(a/864e5)+" dias",frequency:e.determineFrequency(o),earliest:i[0].toISOString().split("T")[0],latest:i[i.length-1].toISOString().split("T")[0],dataPoints:i.length}}}),r},n.generateAutoInsights=function(t,n,e){var r,i=[],a=n.variableTypes;i.push({category:"overview",priority:"high",title:"Composição do Dataset",description:"Dataset com "+t.length+" registros, "+a.quantitative.length+" variĆ”veis numĆ©ricas e "+a.qualitative.length+" categóricas",icon:"š"}),n.correlationAnalysis.insights&&i.push.apply(i,n.correlationAnalysis.insights),Object.entries(n.distributionAnalysis).forEach(function(t){var n=t[0],e=t[1];e.distributionType&&"normal"!==e.distributionType&&i.push({category:"distribution",priority:"medium",title:"Distribuição nĆ£o-normal: "+n,description:e.recommendation,variable:n,icon:"š"})}),Object.entries(n.outlierAnalysis).forEach(function(t){var n=t[0],e=t[1];"high"===e.severity&&i.push({category:"quality",priority:"high",title:"Outliers significativos em "+n,description:e.count+" outliers ("+e.percentage.toFixed(1)+"%) detectados",recommendation:e.recommendation,variable:n,icon:"ā ļø"})}),null==(r=n.regressionAnalysis.models)||r.forEach(function(t){t.significant&&t.rSquared>.5&&i.push({category:"modeling",priority:"high",title:"Modelo preditivo viĆ”vel: "+t.dependent,description:t.independent+" explica "+(100*t.rSquared).toFixed(1)+"% da variação em "+t.dependent,variables:[t.independent,t.dependent],rSquared:t.rSquared,icon:"šÆ"})});var o={high:3,medium:2,low:1};return i.sort(function(t,n){return o[n.priority]-o[t.priority]})},n.suggestVisualizations=function(t,n,e){var r=[];t.quantitative.forEach(function(t){r.push({type:"histogram",variable:t.name,title:"Distribuição de "+t.name,description:"Histogram mostrando a distribuição dos valores",priority:"medium"})}),n.strongCorrelations&&n.strongCorrelations.filter(function(t){return Math.abs(t.correlation)>.5}).slice(0,3).forEach(function(t){r.push({type:"scatter",variables:[t.variable1,t.variable2],title:t.variable1+" vs "+t.variable2,description:"Scatter plot mostrando correlação "+(t.correlation>0?"positiva":"negativa"),priority:"high"})}),[].concat(t.qualitative,t.binary).forEach(function(t){t.uniqueCount<=20&&r.push({type:"bar",variable:t.name,title:"FrequĆŖncia de "+t.name,description:"GrĆ”fico de barras mostrando a distribuição das categorias",priority:"medium"})}),t.quantitative.forEach(function(t){r.push({type:"boxplot",variable:t.name,title:"Box Plot de "+t.name,description:"Box plot para identificar outliers e quartis",priority:"low"})});var i={high:3,medium:2,low:1};return r.sort(function(t,n){return i[n.priority]-i[t.priority]})},n.generateExecutiveSummary=function(t){var n=t.filter(function(t){return"high"===t.priority}),e=[].concat(new Set(t.map(function(t){return t.category})));return{totalInsights:t.length,highPriorityInsights:n.length,categoriesCovered:e,keyFindings:n.slice(0,3).map(function(t){return{title:t.title,description:t.description}}),recommendations:this.generateTopRecommendations(t)}},n.isDateTimeColumn=function(t){var n=Math.min(t.length,20),e=t.slice(0,n).filter(function(t){if("string"==typeof t){var n=new Date(t);return!isNaN(n.getTime())}return!1}).length;return e/n>.7},n.determineQuantitativeSubtype=function(t){return t.filter(function(t){return Number.isInteger(t)}).length/t.length>.9?"discrete":"continuous"},n.isOrdinalVariable=function(t){return[/^(baixo|mĆ©dio|alto)$/i,/^(pequeno|grande)$/i,/^(ruim|regular|bom|ótimo)$/i,/^[1-5]$/,/^(primeiro|segundo|terceiro)$/i].some(function(n){return t.every(function(t){return n.test(String(t))})})},n.calculateConcentration=function(t){return 0===t.length?0:t[0].percentage},n.getCorrelationStrength=function(t){return t>=.8?"muito forte":t>=.6?"forte":t>=.4?"moderada":t>=.2?"fraca":"muito fraca"},n.interpretRegressionResult=function(t){var n=(100*t.rSquared).toFixed(1);return{quality:t.rSquared>.7?"excelente":t.rSquared>.5?"boa":t.rSquared>.3?"moderada":"fraca",explanation:"O modelo explica "+n+"% da variação",isSignificant:t.pValueModel<.05}},n.classifyDistributionType=function(t,n,e){return e?"normal":Math.abs(t)>1?t>0?"assimĆ©trica_direita":"assimĆ©trica_esquerda":Math.abs(n)>1?n>0?"leptocĆŗrtica":"platicĆŗrtica":"aproximadamente_normal"},n.getDistributionRecommendation=function(t,n,e){return e?"Distribuição normal - ideal para testes paramĆ©tricos":Math.abs(t)>1?"Considere transformação logarĆtmica para normalizar":Math.abs(n)>1?"Distribuição com caudas atĆpicas - use testes robustos":"Distribuição aproximadamente normal"},n.classifyOutlierSeverity=function(t){return t>10?"high":t>5?"medium":"low"},n.getOutlierRecommendation=function(t){return t>10?"Investigar e possivelmente remover outliers":t>5?"Verificar se outliers sĆ£o valores legĆtimos":"Poucos outliers - monitorar"},n.determineFrequency=function(t){var n=864e5;return t<n?"diĆ”ria":t<7*n?"semanal":t<30*n?"mensal":"anual"},n.generateTopRecommendations=function(t){var n=[];return t.filter(function(t){return"correlation"===t.category}).length>0&&n.push("Explore as correlaƧƵes identificadas para possĆvel modelagem preditiva"),t.filter(function(t){return"quality"===t.category&&"high"===t.priority}).length>0&&n.push("Trate os outliers identificados antes de prosseguir com anĆ”lises"),t.filter(function(t){return"distribution"===t.category}).length>0&&n.push("Considere transformaƧƵes para normalizar distribuiƧƵes assimĆ©tricas"),n},t}(),x=/*#__PURE__*/function(){function t(){this.trained=!1,this.model=null,this.features=null,this.target=null,this.trainingMetrics={}}var n=t.prototype;return n.validateTrainingData=function(t,n){if(!Array.isArray(t)||0===t.length)throw new Error("X must be a non-empty array");if(!Array.isArray(n)||0===n.length)throw new Error("y must be a non-empty array");if(t.length!==n.length)throw new Error("X and y must have the same length")},n.validatePredictionData=function(t){if(!this.trained)throw new Error("Model must be trained before making predictions");if(!Array.isArray(t)||0===t.length)throw new Error("X must be a non-empty array")},n.normalizeFeatures=function(t){for(var n=t.length,e=t[0].length,r=[],i=[],a=[],o=function(e){var r=t.map(function(t){return t[e]}),o=r.reduce(function(t,n){return t+n},0)/n,u=r.reduce(function(t,n){return t+Math.pow(n-o,2)},0)/n,s=Math.sqrt(u);i.push(o),a.push(0===s?1:s)},u=0;u<e;u++)o(u);for(var s=0;s<n;s++){for(var c=[],l=0;l<e;l++)c.push((t[s][l]-i[l])/a[l]);r.push(c)}return{normalized:r,means:i,stds:a}},n.splitTrainTest=function(t,n,e,r){void 0===e&&(e=.2),void 0===r&&(r=!0);var i=t.length,a=Array.from({length:i},function(t,n){return n});if(r)for(var o=i-1;o>0;o--){var u=Math.floor(Math.random()*(o+1)),s=[a[u],a[o]];a[o]=s[0],a[u]=s[1]}var c=i-Math.floor(i*e),l=a.slice(0,c),f=a.slice(c);return{X_train:l.map(function(n){return t[n]}),X_test:f.map(function(n){return t[n]}),y_train:l.map(function(t){return n[t]}),y_test:f.map(function(t){return n[t]})}},n.save=function(){if(!this.trained)throw new Error("Cannot save untrained model");return{model:this.model,features:this.features,target:this.target,trainingMetrics:this.trainingMetrics,timestamp:(new Date).toISOString()}},n.load=function(t){this.model=t.model,this.features=t.features,this.target=t.target,this.trainingMetrics=t.trainingMetrics,this.trained=!0},t}(),_=/*#__PURE__*/function(t){function n(n,e,r,i){var a;return void 0===n&&(n=.01),void 0===e&&(e=1e3),void 0===r&&(r=null),void 0===i&&(i=.01),(a=t.call(this)||this).learningRate=n,a.iterations=e,a.regularization=r,a.lambda=i,a.weights=null,a.bias=null,a.normParams=null,a}r(n,t);var e=n.prototype;return e.fit=function(t,n,e){var r=this;void 0===e&&(e=!0),this.validateTrainingData(t,n);var i=t.map(function(t){return Array.isArray(t)?t:[t]});if(e){var a=this.normalizeFeatures(i);i=a.normalized,this.normParams={means:a.means,stds:a.stds}}var o=i.length,u=i[0].length;this.weights=Array(u).fill(0),this.bias=0;for(var s=[],c=0;c<this.iterations;c++){for(var l=i.map(function(t){return r.predictSingle(t)}),f=l.map(function(t,e){return t-n[e]}),h=Array(u).fill(0),d=0,p=0;p<o;p++){d+=f[p];for(var m=0;m<u;m++)h[m]+=f[p]*i[p][m]}for(var g=0;g<u;g++)"l2"===this.regularization?h[g]+=this.lambda*this.weights[g]:"l1"===this.regularization&&(h[g]+=this.lambda*Math.sign(this.weights[g])),this.weights[g]-=this.learningRate/o*h[g];this.bias-=this.learningRate/o*d;var v=this.calculateLoss(l,n);s.push(v)}return this.trained=!0,this.trainingMetrics={finalLoss:s[s.length-1],losses:s,weights:[].concat(this.weights),bias:this.bias},this},e.predictSingle=function(t){for(var n=this.bias,e=0;e<this.weights.length;e++)n+=this.weights[e]*t[e];return n},e.predict=function(t){var n=this;this.validatePredictionData(t);var e=t.map(function(t){return Array.isArray(t)?t:[t]});if(this.normParams){var r=this.normParams,i=r.means,a=r.stds;e=e.map(function(t){return t.map(function(t,n){return(t-i[n])/a[n]})})}return e.map(function(t){return n.predictSingle(t)})},e.calculateLoss=function(t,n){var e=t.reduce(function(t,e,r){return t+Math.pow(e-n[r],2)},0)/t.length;if("l2"===this.regularization){var r=this.weights.reduce(function(t,n){return t+n*n},0);return e+this.lambda*r}if("l1"===this.regularization){var i=this.weights.reduce(function(t,n){return t+Math.abs(n)},0);return e+this.lambda*i}return e},e.score=function(t,n){var e=this.predict(t),r=n.reduce(function(t,n){return t+n},0)/n.length,i=e.reduce(function(t,e,r){return t+Math.pow(n[r]-e,2)},0),a=n.reduce(function(t,n){return t+Math.pow(n-r,2)},0),o=1-i/a,u=i/n.length,s=Math.sqrt(u),c=e.reduce(function(t,e,r){return t+Math.abs(n[r]-e)},0)/n.length;return{r2Score:o,mse:u,rmse:s,mae:c,predictions:e,residuals:e.map(function(t,e){return n[e]-t})}},e.getCoefficients=function(){if(!this.trained)throw new Error("Model must be trained first");return{weights:[].concat(this.weights),bias:this.bias,equation:this.getEquation()}},e.getEquation=function(){var t="y = "+this.bias.toFixed(4);return this.weights.forEach(function(n,e){t+=" "+(n>=0?"+":"")+" "+n.toFixed(4)+"*x"+(e+1)}),t},e.summary=function(){if(!this.trained)throw new Error("Model must be trained first");return{modelType:"Linear Regression",coefficients:this.getCoefficients(),trainingMetrics:this.trainingMetrics,hyperparameters:{learningRate:this.learningRate,iterations:this.iterations,regularization:this.regularization,lambda:this.lambda}}},n}(x),M=/*#__PURE__*/function(t){function n(n,e,r,i){var a;return void 0===n&&(n=.01),void 0===e&&(e=1e3),void 0===r&&(r=null),void 0===i&&(i=.01),(a=t.call(this)||this).learningRate=n,a.iterations=e,a.regularization=r,a.lambda=i,a.weights=null,a.bias=null,a.normParams=null,a.classes=null,a.multiclass=!1,a}r(n,t);var e=n.prototype;return e.sigmoid=function(t){return 1/(1+Math.exp(-t))},e.softmax=function(t){var n=Math.max.apply(Math,t),e=t.map(function(t){return Math.exp(t-n)}),r=e.reduce(function(t,n){return t+n},0);return e.map(function(t){return t/r})},e.fit=function(t,n,e){void 0===e&&(e=!0),this.validateTrainingData(t,n),this.classes=[].concat(new Set(n)).sort(),this.multiclass=this.classes.length>2;var r=t.map(function(t){return Array.isArray(t)?t:[t]});if(e){var i=this.normalizeFeatures(r);r=i.normalized,this.normParams={means:i.means,stds:i.stds}}return this.multiclass?this.fitMulticlass(r,n):this.fitBinary(r,n),this.trained=!0,this},e.fitBinary=function(t,n){var e=this,r=t.length,i=t[0].length,a=n.map(function(t){return t===e.classes[1]?1:0});this.weights=Array(i).fill(0),this.bias=0;for(var o=[],u=0;u<this.iterations;u++){for(var s=t.map(function(t){var n=e.bias+t.reduce(function(t,n,r){return t+n*e.weights[r]},0);return e.sigmoid(n)}),c=Array(i).fill(0),l=0,f=0;f<r;f++){var h=s[f]-a[f];l+=h;for(var d=0;d<i;d++)c[d]+=h*t[f][d]}for(var p=0;p<i;p++)"l2"===this.regularization?c[p]+=this.lambda*this.weights[p]:"l1"===this.regularization&&(c[p]+=this.lambda*Math.sign(this.weights[p])),this.weights[p]-=this.learningRate/r*c[p];this.bias-=this.learningRate/r*l;var m=this.calculateBinaryLoss(s,a);o.push(m)}this.trainingMetrics={finalLoss:o[o.length-1],losses:o,weights:[].concat(this.weights),bias:this.bias}},e.fitMulticlass=function(t,n){var e=this,r=t.length,i=t[0].length,a=this.classes.length,o=n.map(function(t){var n=Array(a).fill(0);return n[e.classes.indexOf(t)]=1,n});this.weights=Array(a).fill(0).map(function(){return Array(i).fill(0)}),this.bias=Array(a).fill(0);for(var u=[],s=0;s<this.iterations;s++){for(var c=t.map(function(t){var n=e.bias.map(function(n,r){return n+t.reduce(function(t,n,i){return t+n*e.weights[r][i]},0)});return e.softmax(n)}),l=0;l<a;l++){for(var f=0,h=Array(i).fill(0),d=0;d<r;d++){var p=c[d][l]-o[d][l];f+=p;for(var m=0;m<i;m++)h[m]+=p*t[d][m]}for(var g=0;g<i;g++)"l2"===this.regularization&&(h[g]+=this.lambda*this.weights[l][g]),this.weights[l][g]-=this.learningRate/r*h[g];this.bias[l]-=this.learningRate/r*f}var v=this.calculateMulticlassLoss(c,o);u.push(v)}this.trainingMetrics={finalLoss:u[u.length-1],losses:u}},e.predict=function(t,n){var e=this;void 0===n&&(n=!1),this.validatePredictionData(t);var r=t.map(function(t){return Array.isArray(t)?t:[t]});if(this.normParams){var i=this.normParams,a=i.means,o=i.stds;r=r.map(function(t){return t.map(function(t,n){return(t-a[n])/o[n]})})}if(this.multiclass){var u=r.map(function(t){var n=e.bias.map(function(n,r){return n+t.reduce(function(t,n,i){return t+n*e.weights[r][i]},0)});return e.softmax(n)});return u.map(n?function(t){var n={};return e.classes.forEach(function(e,r){n[e]=t[r]}),n}:function(t){var n=t.indexOf(Math.max.apply(Math,t));return e.classes[n]})}var s=r.map(function(t){var n=e.bias+t.reduce(function(t,n,r){return t+n*e.weights[r]},0);return e.sigmoid(n)});return s.map(n?function(t){var n;return(n={})[e.classes[0]]=1-t,n[e.classes[1]]=t,n}:function(t){return t>=.5?e.classes[1]:e.classes[0]})},e.predictProba=function(t){return this.predict(t,!0)},e.calculateBinaryLoss=function(t,n){var e=t.reduce(function(t,e,r){var i=Math.max(1e-15,Math.min(1-1e-15,e));return t-(n[r]*Math.log(i)+(1-n[r])*Math.log(1-i))},0)/t.length;if("l2"===this.regularization){var r=this.weights.reduce(function(t,n){return t+n*n},0);return e+this.lambda*r/2}return e},e.calculateMulticlassLoss=function(t,n){for(var e=0,r=0;r<t.length;r++)for(var i=0;i<n[r].length;i++){var a=Math.max(1e-15,Math.min(1-1e-15,t[r][i]));e-=n[r][i]*Math.log(a)}return e/t.length},e.score=function(t,n){for(var e=this.predict(t),r=this.predictProba(t),i=0,a=0;a<n.length;a++)e[a]===n[a]&&i++;var o=i/n.length,u=this.confusionMatrix(n,e);return{accuracy:o,confusionMatrix:u,classMetrics:this.calculateClassMetrics(u),predictions:e,probabilities:r}},e.confusionMatrix=function(t,n){for(var e=this.classes.length,r=Array(e).fill(0).map(function(){return Array(e).fill(0)}),i=0;i<t.length;i++){var a=this.classes.indexOf(t[i]),o=this.classes.indexOf(n[i]);r[a][o]++}return{matrix:r,classes:this.classes,display:this.formatConfusionMatrix(r)}},e.formatConfusionMatrix=function(t){var n=Math.max.apply(Math,t.flat().map(function(t){return t.toString().length}).concat([8])),e=function(t){return t.toString().padStart(n)},r="\n"+" ".repeat(n+2)+"Predicted\n";r+=" ".repeat(n+2)+this.classes.map(function(t){return e(t)}).join(" ")+"\n";for(var i=0;i<t.length;i++)r+=0===i?"Actual ":" ",r+=e(this.classes[i])+" ",r+=t[i].map(function(t){return e(t)}).join(" ")+"\n";return r},e.calculateClassMetrics=function(t){var n=t.matrix,e={};return this.classes.forEach(function(t,r){var i=n[r][r],a=n[r].reduce(function(t,n){return t+n},0)-i,o=n.map(function(t){return t[r]}).reduce(function(t,n){return t+n},0)-i;n.reduce(function(t,n,e){return t+n.reduce(function(t,n,i){return t+(e!==r&&i!==r?n:0)},0)},0);var u=i+o>0?i/(i+o):0,s=i+a>0?i/(i+a):0;e[t]={precision:u,recall:s,f1Score:u+s>0?u*s*2/(u+s):0,support:i+a}}),e},e.summary=function(){if(!this.trained)throw new Error("Model must be trained first");return{modelType:"Logistic Regression",classes:this.classes,multiclass:this.multiclass,trainingMetrics:this.trainingMetrics,hyperparameters:{learningRate:this.learningRate,iterations:this.iterations,regularization:this.regularization,lambda:this.lambda}}},n}(x),S=/*#__PURE__*/function(t){function n(n,e,r){var i;return void 0===n&&(n=5),void 0===e&&(e="euclidean"),void 0===r&&(r="uniform"),(i=t.call(this)||this).k=n,i.metric=e,i.weights=r,i.X_train=null,i.y_train=null,i.normParams=null,i.taskType=null,i}r(n,t);var e=n.prototype;return e.euclideanDistance=function(t,n){return Math.sqrt(t.reduce(function(t,e,r){return t+Math.pow(e-n[r],2)},0))},e.manhattanDistance=function(t,n){return t.reduce(function(t,e,r){return t+Math.abs(e-n[r])},0)},e.minkowskiDistance=function(t,n,e){return void 0===e&&(e=3),Math.pow(t.reduce(function(t,r,i){return t+Math.pow(Math.abs(r-n[i]),e)},0),1/e)},e.calculateDistance=function(t,n){switch(this.metric){case"manhattan":return this.manhattanDistance(t,n);case"minkowski":return this.minkowskiDistance(t,n);default:return this.euclideanDistance(t,n)}},e.fit=function(t,n,e,r){void 0===e&&(e=!0),void 0===r&&(r="classification"),this.validateTrainingData(t,n),this.taskType=r;var i=t.map(function(t){return Array.isArray(t)?t:[t]});if(e){var a=this.normalizeFeatures(i),o=a.means,u=a.stds;this.X_train=a.normalized,this.normParams={means:o,stds:u}}else this.X_train=i;return this.y_train=[].concat(n),this.trained=!0,this.trainingMetrics={samples:this.X_train.length,features:this.X_train[0].length,taskType:this.taskType},this},e.findKNearest=function(t){var n=this,e=this.X_train.map(function(e,r){return{distance:n.calculateDistance(t,e),index:r,label:n.y_train[r]}});return e.sort(function(t,n){return t.distance-n.distance}),e.slice(0,this.k)},e.predictSingleClassification=function(t){var n=this.findKNearest(t);if("uniform"===this.weights){var e={};return n.forEach(function(t){e[t.label]=(e[t.label]||0)+1}),Object.keys(e).reduce(function(t,n){return e[t]>e[n]?t:n})}var r={};return n.forEach(function(t){r[t.label]=(r[t.label]||0)+(0===t.distance?1e10:1/t.distance)}),Object.keys(r).reduce(function(t,n){return r[t]>r[n]?t:n})},e.predictSingleRegression=function(t){var n=this.findKNearest(t);if("uniform"===this.weights)return n.reduce(function(t,n){return t+n.label},0)/n.length;var e=0,r=0;return n.forEach(function(t){var n=0===t.distance?1e10:1/t.distance;e+=t.label*n,r+=n}),e/r},e.predict=function(t){var n=this;this.validatePredictionData(t);var e=t.map(function(t){return Array.isArray(t)?t:[t]});if(this.normParams){var r=this.normParams,i=r.means,a=r.stds;e=e.map(function(t){return t.map(function(t,n){return(t-i[n])/a[n]})})}return e.map("classification"===this.taskType?function(t){return n.predictSingleClassification(t)}:function(t){return n.predictSingleRegression(t)})},e.predictProba=function(t){var n=this;if("classification"!==this.taskType)throw new Error("predictProba is only available for classification tasks");this.validatePredictionData(t);var e=t.map(function(t){return Array.isArray(t)?t:[t]});if(this.normParams){var r=this.normParams,i=r.means,a=r.stds;e=e.map(function(t){return t.map(function(t,n){return(t-i[n])/a[n]})})}var o=[].concat(new Set(this.y_train)).sort();return e.map(function(t){var e=n.findKNearest(t),r={};if(o.forEach(function(t){r[t]=0}),"uniform"===n.weights)e.forEach(function(t){r[t.label]+=1/n.k});else{var i=0,a={};e.forEach(function(t){var n=0===t.distance?1e10:1/t.distance;a[t.label]=(a[t.label]||0)+n,i+=n}),Object.keys(a).forEach(function(t){r[t]=a[t]/i})}return r})},e.score=function(t,n){var e=this.predict(t);if("classification"===this.taskType){for(var r=0,i=0;i<n.length;i++)e[i]===n[i]&&r++;var a=r/n.length,o=[].concat(new Set([].concat(n,e))).sort(),u=this.confusionMatrix(n,e,o);return{accuracy:a,confusionMatrix:u,classMetrics:this.calculateClassMetrics(u,o),predictions:e}}var s=n.reduce(function(t,n){return t+n},0)/n.length,c=e.reduce(function(t,e,r){return t+Math.pow(n[r]-e,2)},0),l=n.reduce(function(t,n){return t+Math.pow(n-s,2)},0),f=1-c/l,h=c/n.length,d=Math.sqrt(h),p=e.reduce(function(t,e,r){return t+Math.abs(n[r]-e)},0)/n.length;return{r2Score:f,mse:h,rmse:d,mae:p,predictions:e,residuals:e.map(function(t,e){return n[e]-t})}},e.confusionMatrix=function(t,n,e){for(var r=e.length,i=Array(r).fill(0).map(function(){return Array(r).fill(0)}),a=0;a<t.length;a++){var o=e.indexOf(t[a]),u=e.indexOf(n[a]);i[o][u]++}return{matrix:i,classes:e,display:this.formatConfusionMatrix(i,e)}},e.formatConfusionMatrix=function(t,n){var e=Math.max.apply(Math,t.flat().map(function(t){return t.toString().length}).concat([8])),r=function(t){return t.toString().padStart(e)},i="\n"+" ".repeat(e+2)+"Predicted\n";i+=" ".repeat(e+2)+n.map(function(t){return r(t)}).join(" ")+"\n";for(var a=0;a<t.length;a++)i+=0===a?"Actual ":" ",i+=r(n[a])+" ",i+=t[a].map(function(t){return r(t)}).join(" ")+"\n";return i},e.calculateClassMetrics=function(t,n){var e=t.matrix,r={};return n.forEach(function(t,n){var i=e[n][n],a=e[n].reduce(function(t,n){return t+n},0)-i,o=e.map(function(t){return t[n]}).reduce(function(t,n){return t+n},0)-i,u=i+o>0?i/(i+o):0,s=i+a>0?i/(i+a):0;r[t]={precision:u,recall:s,f1Score:u+s>0?u*s*2/(u+s):0,support:i+a}}),r},e.summary=function(){if(!this.trained)throw new Error("Model must be trained first");return{modelType:"K-Nearest Neighbors",taskType:this.taskType,trainingMetrics:this.trainingMetrics,hyperparameters:{k:this.k,metric:this.metric,weights:this.weights}}},n}(x),N=/*#__PURE__*/function(t){function e(n,e,r,i){var a;return void 0===n&&(n=10),void 0===e&&(e=2),void 0===r&&(r=1),void 0===i&&(i="gini"),(a=t.call(this)||this).maxDepth=n,a.minSamplesSplit=e,a.minSamplesLeaf=r,a.criterion=i,a.tree=null,a.taskType=null,a.classes=null,a}r(e,t);var i=e.prototype;return i.fit=function(t,n,e){void 0===e&&(e="classification"),this.validateTrainingData(t,n),this.taskType=e;var r=t.map(function(t){return Array.isArray(t)?t:[t]});return"classification"===e&&(this.classes=[].concat(new Set(n)).sort()),this.tree=this.buildTree(r,n,0),this.trained=!0,this.trainingMetrics={treeDepth:this.getTreeDepth(this.tree),leafCount:this.getLeafCount(this.tree),nodeCount:this.getNodeCount(this.tree),taskType:this.taskType},this},i.buildTree=function(t,e,r){var i=t[0].length;if(r>=this.maxDepth||t.length<this.minSamplesSplit||this.isPure(e))return this.createLeaf(e);for(var a=null,o=-Infinity,u=0;u<i;u++)for(var s,c=n(this.getThresholds(t,u));!(s=c()).done;){var l=s.value,f=this.splitData(t,e,u,l),h=f.left,d=f.right;if(!(h.y.length<this.minSamplesLeaf||d.y.length<this.minSamplesLeaf)){var p=this.calculateSplitScore(e,h.y,d.y);p>o&&(o=p,a={featureIdx:u,threshold:l,left:h,right:d})}}return a?{featureIdx:a.featureIdx,threshold:a.threshold,left:this.buildTree(a.left.X,a.left.y,r+1),right:this.buildTree(a.right.X,a.right.y,r+1),isLeaf:!1}:this.createLeaf(e)},i.getThresholds=function(t,n){for(var e=[].concat(new Set(t.map(function(t){return t[n]}))).sort(function(t,n){return t-n}),r=[],i=0;i<e.length-1;i++)r.push((e[i]+e[i+1])/2);return r},i.splitData=function(t,n,e,r){for(var i=[],a=[],o=[],u=[],s=0;s<t.length;s++)t[s][e]<=r?(i.push(t[s]),a.push(n[s])):(o.push(t[s]),u.push(n[s]));return{left:{X:i,y:a},right:{X:o,y:u}}},i.isPure=function(t){return 1===new Set(t).size},i.createLeaf=function(t){if("classification"===this.taskType){var n={};t.forEach(function(t){n[t]=(n[t]||0)+1});var e=Object.keys(n).reduce(function(t,e){return n[t]>n[e]?t:e});return{isLeaf:!0,prediction:e,samples:t.length,distribution:n}}var r=t.reduce(function(t,n){return t+n},0)/t.length;return{isLeaf:!0,prediction:r,samples:t.length}},i.calculateSplitScore=function(t,n,e){if("classification"===this.taskType){var r=this.calculateImpurity(t),i=t.length,a=e.length;return r-(n.length/i*this.calculateImpurity(n)+a/i*this.calculateImpurity(e))}var o=this.calculateVariance(t),u=t.length,s=e.length;return o-(n.length/u*this.calculateVariance(n)+s/u*this.calculateVariance(e))},i.calculateImpurity=function(t){var n={};t.forEach(function(t){n[t]=(n[t]||0)+1});var e=t.length,r=Object.values(n).map(function(t){return t/e});return"gini"===this.criterion?1-r.reduce(function(t,n){return t+n*n},0):"entropy"===this.criterion?-r.reduce(function(t,n){return t+n*Math.log2(n)},0):void 0},i.calculateVariance=function(t){if(0===t.length)return 0;var n=t.reduce(function(t,n){return t+n},0)/t.length;return t.reduce(function(t,e){return t+Math.pow(e-n,2)},0)/t.length},i.predictSingle=function(t,n){return void 0===n&&(n=this.tree),n.isLeaf?n.prediction:this.predictSingle(t,t[n.featureIdx]<=n.threshold?n.left:n.right)},i.predict=function(t){var n=this;return this.validatePredictionData(t),t.map(function(t){return Array.isArray(t)?t:[t]}).map(function(t){return n.predictSingle(t)})},i.predictProba=function(t){var n=this;if("classification"!==this.taskType)throw new Error("predictProba is only available for classification tasks");return this.validatePredictionData(t),t.map(function(t){return Array.isArray(t)?t:[t]}).map(function(t){var e=n.findLeaf(t),r=e.samples,i={};return n.classes.forEach(function(t){i[t]=(e.distribution[t]||0)/r}),i})},i.findLeaf=function(t,n){return void 0===n&&(n=this.tree),n.isLeaf?n:this.findLeaf(t,t[n.featureIdx]<=n.threshold?n.left:n.right)},i.score=function(t,n){var e=this.predict(t);if("classification"===this.taskType){for(var r=0,i=0;i<n.length;i++)e[i]===n[i]&&r++;var a=r/n.length,o=this.confusionMatrix(n,e);return{accuracy:a,confusionMatrix:o,classMetrics:this.calculateClassMetrics(o),predictions:e}}var u=n.reduce(function(t,n){return t+n},0)/n.length,s=e.reduce(function(t,e,r){return t+Math.pow(n[r]-e,2)},0),c=n.reduce(function(t,n){return t+Math.pow(n-u,2)},0),l=1-s/c,f=s/n.length,h=Math.sqrt(f),d=e.reduce(function(t,e,r){return t+Math.abs(n[r]-e)},0)/n.length;return{r2Score:l,mse:f,rmse:h,mae:d,predictions:e,residuals:e.map(function(t,e){return n[e]-t})}},i.confusionMatrix=function(t,n){for(var e=this.classes.length,r=Array(e).fill(0).map(function(){return Array(e).fill(0)}),i=0;i<t.length;i++){var a=this.classes.indexOf(t[i]),o=this.classes.indexOf(n[i]);r[a][o]++}return{matrix:r,classes:this.classes,display:this.formatConfusionMatrix(r)}},i.formatConfusionMatrix=function(t){var n=Math.max.apply(Math,t.flat().map(function(t){return t.toString().length}).concat([8])),e=function(t){return t.toString().padStart(n)},r="\n"+" ".repeat(n+2)+"Predicted\n";r+=" ".repeat(n+2)+this.classes.map(function(t){return e(t)}).join(" ")+"\n";for(var i=0;i<t.length;i++)r+=0===i?"Actual ":" ",r+=e(this.classes[i])+" ",r+=t[i].map(function(t){return e(t)}).join(" ")+"\n";return r},i.calculateClassMetrics=function(t){var n=t.matrix,e={};return this.classes.forEach(function(t,r){var i=n[r][r],a=n[r].reduce(function(t,n){return t+n},0)-i,o=n.map(function(t){return t[r]}).reduce(function(t,n){return t+n},0)-i,u=i+o>0?i/(i+o):0,s=i+a>0?i/(i+a):0;e[t]={precision:u,recall:s,f1Score:u+s>0?u*s*2/(u+s):0,support:i+a}}),e},i.getTreeDepth=function(t){return t.isLeaf?0:1+Math.max(this.getTreeDepth(t.left),this.getTreeDepth(t.right))},i.getLeafCount=function(t){return t.isLeaf?1:this.getLeafCount(t.left)+this.getLeafCount(t.right)},i.getNodeCount=function(t){return t.isLeaf?1:1+this.getNodeCount(t.left)+this.getNodeCount(t.right)},i.getFeatureImportance=function(){var t={};this.calculateImportance(this.tree,t);var n=Object.values(t).reduce(function(t,n){return t+n},0);return Object.keys(t).forEach(function(e){t[e]/=n}),t},i.calculateImportance=function(t,n){if(!t.isLeaf){var e="feature_"+t.featureIdx;n[e]=(n[e]||0)+1,this.calculateImportance(t.left,n),this.calculateImportance(t.right,n)}},i.summary=function(){if(!this.trained)throw new Error("Model must be trained first");return{modelType:"Decision Tree",taskType:this.taskType,trainingMetrics:this.trainingMetrics,featureImportance:this.getFeatureImportance(),hyperparameters:{maxDepth:this.maxDepth,minSamplesSplit:this.minSamplesSplit,minSamplesLeaf:this.minSamplesLeaf,criterion:this.criterion}}},e}(x),E=/*#__PURE__*/function(t){function n(n,e,r,i,a,o,u){var s;return void 0===n&&(n=100),void 0===e&&(e=10),void 0===r&&(r=2),void 0===i&&(i=1),void 0===a&&(a="sqrt"),void 0===o&&(o="gini"),void 0===u&&(u=!0),(s=t.call(this)||this).nEstimators=n,s.maxDepth=e,s.minSamplesSplit=r,s.minSamplesLeaf=i,s.maxFeatures=a,s.criterion=o,s.bootstrap=u,s.trees=[],s.taskType=null,s.classes=null,s.featureIndices=[],s}r(n,t);var e=n.prototype;return e.fit=function(t,n,e){var r=this;void 0===e&&(e="classification"),this.validateTrainingData(t,n),this.taskType=e;var i=t.map(function(t){return Array.isArray(t)?t:[t]}),a=i[0].length;"classification"===e&&(this.classes=[].concat(new Set(n)).sort());for(var o=this.getMaxFeaturesCount(a),u=function(){var t=r.bootstrap?r.bootstrapSample(i,n):{X_sample:i,y_sample:n},u=t.X_sample,s=t.y_sample,c=r.selectRandomFeatures(a,o);r.featureIndices.push(c);var l=u.map(function(t){return c.map(function(n){return t[n]})}),f=new N(r.maxDepth,r.minSamplesSplit,r.minSamplesLeaf,r.criterion);f.fit(l,s,e),r.trees.push(f)},s=0;s<this.nEstimators;s++)u();return this.trained=!0,this.trainingMetrics={nEstimators:this.nEstimators,avgTreeDepth:this.trees.reduce(function(t,n){return t+n.trainingMetrics.treeDepth},0)/this.nEstimators,avgLeafCount:this.trees.reduce(function(t,n){return t+n.trainingMetrics.leafCount},0)/this.nEstimators,taskType:this.taskType},this},e.getMaxFeaturesCount=function(t){return"number"==typeof this.maxFeatures?Math.min(this.maxFeatures,t):"sqrt"===this.maxFeatures?Math.floor(Math.sqrt(t)):"log2"===this.maxFeatures?Math.floor(Math.log2(t)):t},e.selectRandomFeatures=function(t,n){for(var e=Array.from({length:t},function(t,n){return n}),r=[],i=0;i<n;i++){var a=Math.floor(Math.random()*e.length);r.push(e[a]),e.splice(a,1)}return r.sort(function(t,n){return t-n})},e.bootstrapSample=function(t,n){for(var e=t.length,r=[],i=[],a=0;a<e;a++){var o=Math.floor(Math.random()*e);r.push(t[o]),i.push(n[o])}return{X_sample:r,y_sample:i}},e.predict=function(t){var n=this;return this.validatePredictionData(t),t.map(function(t){return Array.isArray(t)?t:[t]}).map("classification"===this.taskType?function(t){var e={};return n.trees.forEach(function(r,i){var a=n.featureIndices[i].map(function(n){return t[n]}),o=r.predict([a])[0];e[o]=(e[o]||0)+1}),Object.keys(e).reduce(function(t,n){return e[t]>e[n]?t:n})}:function(t){var e=n.trees.map(function(e,r){var i=n.featureIndices[r].map(function(n){return t[n]});return e.predict([i])[0]});return e.reduce(function(t,n){return t+n},0)/e.length})},e.predictProba=function(t){var n=this;if("classification"!==this.taskType)throw new Error("predictProba is only available for classification tasks");return this.validatePredictionData(t),t.map(function(t){return Array.isArray(t)?t:[t]}).map(function(t){var e={};n.classes.forEach(function(t){e[t]=0}),n.trees.forEach(function(r,i){var a=n.featureIndices[i].map(function(n){return t[n]}),o=r.predictProba([a])[0];Object.keys(o).forEach(function(t){e[t]+=o[t]})});var r={};return Object.keys(e).forEach(function(t){r[t]=e[t]/n.nEstimators}),r})},e.score=function(t,n){var e=this.predict(t);if("classification"===this.taskType){for(var r=0,i=0;i<n.length;i++)e[i]===n[i]&&r++;var a=r/n.length,o=this.confusionMatrix(n,e);return{accuracy:a,confusionMatrix:o,classMetrics:this.calculateClassMetrics(o),predictions:e}}var u=n.reduce(function(t,n){return t+n},0)/n.length,s=e.reduce(function(t,e,r){return t+Math.pow(n[r]-e,2)},0),c=n.reduce(function(t,n){return t+Math.pow(n-u,2)},0),l=1-s/c,f=s/n.length,h=Math.sqrt(f),d=e.reduce(function(t,e,r){return t+Math.abs(n[r]-e)},0)/n.length;return{r2Score:l,mse:f,rmse:h,mae:d,predictions:e,residuals:e.map(function(t,e){return n[e]-t})}},e.confusionMatrix=function(t,n){for(var e=this.classes.length,r=Array(e).fill(0).map(function(){return Array(e).fill(0)}),i=0;i<t.length;i++){var a=this.classes.indexOf(t[i]),o=this.classes.indexOf(n[i]);r[a][o]++}return{matrix:r,classes:this.classes,display:this.formatConfusionMatrix(r)}},e.formatConfusionMatrix=function(t){var n=Math.max.apply(Math,t.flat().map(function(t){return t.toString().length}).concat([8])),e=function(t){return t.toString().padStart(n)},r="\n"+" ".repeat(n+2)+"Predicted\n";r+=" ".repeat(n+2)+this.classes.map(function(t){return e(t)}).join(" ")+"\n";for(var i=0;i<t.length;i++)r+=0===i?"Actual ":" ",r+=e(this.classes[i])+" ",r+=t[i].map(function(t){return e(t)}).join(" ")+"\n";return r},e.calculateClassMetrics=function(t){var n=t.matrix,e={};return this.classes.forEach(function(t,r){var i=n[r][r],a=n[r].reduce(function(t,n){return t+n},0)-i,o=n.map(function(t){return t[r]}).reduce(function(t,n){return t+n},0)-i,u=i+o>0?i/(i+o):0,s=i+a>0?i/(i+a):0;e[t]={precision:u,recall:s,f1Score:u+s>0?u*s*2/(u+s):0,support:i+a}}),e},e.getFeatureImportance=function(){var t=this,n=Array(this.featureIndices[0].length).fill(0);this.trees.forEach(function(e,r){var i=e.getFeatureImportance(),a=t.featureIndices[r];Object.keys(i).forEach(function(t){var e=parseInt(t.split("_")[1]);n[a[e]]+=i[t]})});var e=n.reduce(function(t,n){return t+n},0);return n.map(function(t){return t/e})},e.summary=function(){if(!this.trained)throw new Error("Model must be trained first");return{modelType:"Random Forest",taskType:this.taskType,trainingMetrics:this.trainingMetrics,featureImportance:this.getFeatureImportance(),hyperparameters:{nEstimators:this.nEstimators,maxDepth:this.maxDepth,minSamplesSplit:this.minSamplesSplit,minSamplesLeaf:this.minSamplesLeaf,maxFeatures:this.maxFeatures,criterion:this.criterion,bootstrap:this.bootstrap}}},n}(x),A=/*#__PURE__*/function(t){function n(n){var e;return void 0===n&&(n="gaussian"),(e=t.call(this)||this).type=n,e.classes=null,e.classPriors={},e.parameters={},e}r(n,t);var e=n.prototype;return e.fit=function(t,n){var e=this;this.validateTrainingData(t,n);var r=t.map(function(t){return Array.isArray(t)?t:[t]});this.classes=[].concat(new Set(n)).sort();var i=r.length,a=r[0].length;return this.classes.forEach(function(t){var r=n.filter(function(n){return n===t}).length;e.classPriors[t]=r/i}),"gaussian"===this.type?this.fitGaussian(r,n,a):"multinomial"===this.type?this.fitMultinomial(r,n,a):"bernoulli"===this.type&&this.fitBernoulli(r,n,a),this.trained=!0,this.trainingMetrics={nClasses:this.classes.length,nFeatures:a,nSamples:i,type:this.type},this},e.fitGaussian=function(t,n,e){var r=this;this.classes.forEach(function(i){var a=t.filter(function(t,e){return n[e]===i});r.parameters[i]={means:[],variances:[]};for(var o=function(t){var n=a.map(function(n){return n[t]}),e=n.reduce(function(t,n){return t+n},0)/n.length,o=n.reduce(function(t,n){return t+Math.pow(n-e,2)},0)/n.length;r.parameters[i].means.push(e),r.parameters[i].variances.push(o+1e-9)},u=0;u<e;u++)o(u)})},e.fitMultinomial=function(t,n,e){var r=this;this.classes.forEach(function(i){var a=t.filter(function(t,e){return n[e]===i});r.parameters[i]={featureProbs:[]};for(var o=function(t){var n=a.reduce(function(n,e){return n+e[t]},0),o=a.reduce(function(t,n){return t+n.reduce(function(t,n){return t+n},0)},0);r.parameters[i].featureProbs.push((n+1)/(o+1*e))},u=0;u<e;u++)o(u)})},e.fitBernoulli=function(t,n,e){var r=this;this.classes.forEach(function(i){var a=t.filter(function(t,e){return n[e]===i}),o=a.length;r.parameters[i]={featureProbs:[]};for(var u=function(t){var n=a.filter(function(n){return 1===n[t]}).length;r.parameters[i].featureProbs.push((n+1)/(o+2))},s=0;s<e;s++)u(s)})},e.gaussianProbability=function(t,n,e){return Math.exp(-Math.pow(t-n,2)/(2*e))/Math.sqrt(2*Math.PI*e)},e.predictSingle=function(t){var n=this,e={};return this.classes.forEach(function(r){var i=Math.log(n.classPriors[r]);if("gaussian"===n.type)for(var a=n.parameters[r],o=0;o<t.length;o++){var u=n.gaussianProbability(t[o],a.means[o],a.variances[o]);i+=Math.log(u+1e-9)}else if("multinomial"===n.type)for(var s=n.parameters[r],c=0;c<t.length;c++)i+=t[c]*Math.log(s.featureProbs[c]+1e-9);else if("bernoulli"===n.type)for(var l=n.parameters[r],f=0;f<t.length;f++)i+=Math.log((1===t[f]?l.featureProbs[f]:1-l.featureProbs[f])+1e-9);e[r]=i}),Object.keys(e).reduce(function(t,n){return e[t]>e[n]?t:n})},e.predict=function(t){var n=this;return this.validatePredictionData(t),t.map(function(t){return Array.isArray(t)?t:[t]}).map(function(t){return n.predictSingle(t)})},e.predictProba=function(t){var n=this;return this.validatePredictionData(t),t.map(function(t){return Array.isArray(t)?t:[t]}).map(function(t){var e={};n.classes.forEach(function(r){var i=Math.log(n.classPriors[r]);if("gaussian"===n.type)for(var a=n.parameters[r],o=0;o<t.length;o++){var u=n.gaussianProbability(t[o],a.means[o],a.variances[o]);i+=Math.log(u+1e-9)}else if("multinomial"===n.type)for(var s=n.parameters[r],c=0;c<t.length;c++)i+=t[c]*Math.log(s.featureProbs[c]+1e-9);else if("bernoulli"===n.type)for(var l=n.parameters[r],f=0;f<t.length;f++)i+=Math.log((1===t[f]?l.featureProbs[f]:1-l.featureProbs[f])+1e-9);e[r]=i});var r=Math.max.apply(Math,Object.values(e)),i={},a=0;n.classes.forEach(function(t){i[t]=Math.exp(e[t]-r),a+=i[t]});var o={};return n.classes.forEach(function(t){o[t]=i[t]/a}),o})},e.score=function(t,n){for(var e=this.predict(t),r=0,i=0;i<n.length;i++)e[i]===n[i]&&r++;var a=r/n.length,o=this.confusionMatrix(n,e);return{accuracy:a,confusionMatrix:o,classMetrics:this.calculateClassMetrics(o),predictions:e}},e.confusionMatrix=function(t,n){for(var e=this.classes.length,r=Array(e).fill(0).map(function(){return Array(e).fill(0)}),i=0;i<t.length;i++){var a=this.classes.indexOf(t[i]),o=this.classes.indexOf(n[i]);r[a][o]++}return{matrix:r,classes:this.classes,display:this.formatConfusionMatrix(r)}},e.formatConfusionMatrix=function(t){var n=Math.max.apply(Math,t.flat().map(function(t){return t.toString().length}).concat([8])),e=function(t){return t.toString().padStart(n)},r="\n"+" ".repeat(n+2)+"Predicted\n";r+=" ".repeat(n+2)+this.classes.map(function(t){return e(t)}).join(" ")+"\n";for(var i=0;i<t.length;i++)r+=0===i?"Actual ":" ",r+=e(this.classes[i])+" ",r+=t[i].map(function(t){return e(t)}).join(" ")+"\n";return r},e.calculateClassMetrics=function(t){var n=t.matrix,e={};return this.classes.forEach(function(t,r){var i=n[r][r],a=n[r].reduce(function(t,n){return t+n},0)-i,o=n.map(function(t){return t[r]}).reduce(function(t,n){return t+n},0)-i,u=i+o>0?i/(i+o):0,s=i+a>0?i/(i+a):0;e[t]={precision:u,recall:s,f1Score:u+s>0?u*s*2/(u+s):0,support:i+a}}),e},e.summary=function(){if(!this.trained)throw new Error("Model must be trained first");return{modelType:"Naive Bayes",naiveBayesType:this.type,classes:this.classes,classPriors:this.classPriors,trainingMetrics:this.trainingMetrics}},n}(x),T=/*#__PURE__*/function(t){function n(n,e,r,i,a,o){var u;return void 0===n&&(n=1),void 0===e&&(e="linear"),void 0===r&&(r="scale"),void 0===i&&(i=3),void 0===a&&(a=.001),void 0===o&&(o=1e3),(u=t.call(this)||this).C=n,u.kernel=e,u.gamma=r,u.degree=i,u.learningRate=a,u.iterations=o,u.weights=null,u.bias=null,u.supportVectors=null,u.classes=null,u.normParams=null,u}r(n,t);var e=n.prototype;return e.fit=function(t,n,e){var r=this;void 0===e&&(e=!0),this.validateTrainingData(t,n);var i=t.map(function(t){return Array.isArray(t)?t:[t]});if(this.classes=[].concat(new Set(n)).sort(),2!==this.classes.length)throw new Error("SVM currently only supports binary classification");var a=n.map(function(t){return t===r.classes[1]?1:-1});if(e){var o=this.normalizeFeatures(i);i=o.normalized,this.normParams={means:o.means,stds:o.stds}}var u=i.length,s=i[0].length;if("scale"===this.gamma){var c=this.calculateVariance(i);this.gamma=1/(s*c)}else"auto"===this.gamma&&(this.gamma=1/s);this.weights=Array(s).fill(0),this.bias=0;for(var l=[],f=0;f<this.iterations;f++){for(var h=0,d=0;d<u;d++){var p=i[d],m=a[d],g=m*this.decisionFunction([p])[0];if(g<1){for(var v=0;v<s;v++)this.weights[v]+=this.learningRate*(m*p[v]-1/this.C*2*this.weights[v]);this.bias+=this.learningRate*m,h+=1-g}else for(var y=0;y<s;y++)this.weights[y]+=this.learningRate*(1/this.C*-2*this.weights[y])}var b=1/this.C*this.weights.reduce(function(t,n){return t+n*n},0);l.push(h/u+b)}return this.identifySupportVectors(i,a),this.trained=!0,this.trainingMetrics={finalLoss:l[l.length-1],losses:l,nSupportVectors:this.supportVectors.length,supportVectorRatio:this.supportVectors.length/u},this},e.calculateVariance=function(t){for(var n=t.length,e=t[0].length,r=0,i=function(e){var i=t.map(function(t){return t[e]}),a=i.reduce(function(t,n){return t+n},0)/n,o=i.reduce(function(t,n){return t+Math.pow(n-a,2)},0)/n;r+=o},a=0;a<e;a++)i(a);return r/e},e.identifySupportVectors=function(t,n){this.supportVectors=[];for(var e=0;e<t.length;e++){var r=this.decisionFunction([t[e]])[0],i=Math.abs(r);i<1.5&&this.supportVectors.push({index:e,vector:t[e],label:n[e],margin:i})}},e.kernelFunction=function(t,n){if("linear"===this.kernel)return t.reduce(function(t,e,r){return t+e*n[r]},0);if("rbf"===this.kernel){var e=t.reduce(function(t,e,r){return t+Math.pow(e-n[r],2)},0);return Math.exp(-this.gamma*e)}if("poly"===this.kernel){var r=t.reduce(function(t,e,r){return t+e*n[r]},0);return Math.pow(r+1,this.degree)}return 0},e.decisionFunction=function(t){var n=this;return t.map(function(t){for(var e=n.bias,r=0;r<n.weights.length;r++)e+=n.weights[r]*t[r];return e})},e.predict=function(t){var n=this;this.validatePredictionData(t);var e=t.map(function(t){return Array.isArray(t)?t:[t]});if(this.normParams){var r=this.normParams,i=r.means,a=r.stds;e=e.map(function(t){return t.map(function(t,n){return(t-i[n])/a[n]})})}return this.decisionFunction(e).map(function(t){return t>=0?n.classes[1]:n.classes[0]})},e.predictProba=function(t){var n=this;this.validatePredictionData(t);var e=t.map(function(t){return Array.isArray(t)?t:[t]});if(this.normParams){var r=this.normParams,i=r.means,a=r.stds;e=e.map(function(t){return t.map(function(t,n){return(t-i[n])/a[n]})})}return this.decisionFunction(e).map(function(t){var e,r=1/(1+Math.exp(-t));return(e={})[n.classes[0]]=1-r,e[n.classes[1]]=r,e})},e.score=function(t,n){for(var e=this.predict(t),r=0,i=0;i<n.length;i++)e[i]===n[i]&&r++;var a=r/n.length,o=this.confusionMatrix(n,e);return{accuracy:a,confusionMatrix:o,classMetrics:this.calculateClassMetrics(o),predictions:e}},e.confusionMatrix=function(t,n){for(var e=this.classes.length,r=Array(e).fill(0).map(function(){return Array(e).fill(0)}),i=0;i<t.length;i++){var a=this.classes.indexOf(t[i]),o=this.classes.indexOf(n[i]);r[a][o]++}return{matrix:r,classes:this.classes,display:this.formatConfusionMatrix(r)}},e.formatConfusionMatrix=function(t){var n=Math.max.apply(Math,t.flat().map(function(t){return t.toString().length}).concat([8])),e=function(t){return t.toString().padStart(n)},r="\n"+" ".repeat(n+2)+"Predicted\n";r+=" ".repeat(n+2)+this.classes.map(function(t){return e(t)}).join(" ")+"\n";for(var i=0;i<t.length;i++)r+=0===i?"Actual ":" ",r+=e(this.classes[i])+" ",r+=t[i].map(function(t){return e(t)}).join(" ")+"\n";return r},e.calculateClassMetrics=function(t){var n=t.matrix,e={};return this.classes.forEach(function(t,r){var i=n[r][r],a=n[r].reduce(function(t,n){return t+n},0)-i,o=n.map(function(t){return t[r]}).reduce(function(t,n){return t+n},0)-i,u=i+o>0?i/(i+o):0,s=i+a>0?i/(i+a):0;e[t]={precision:u,recall:s,f1Score:u+s>0?u*s*2/(u+s):0,support:i+a}}),e},e.summary=function(){if(!this.trained)throw new Error("Model must be trained first");return{modelType:"Support Vector Machine",classes:this.classes,trainingMetrics:this.trainingMetrics,hyperparameters:{C:this.C,kernel:this.kernel,gamma:this.gamma,degree:this.degree,learningRate:this.learningRate,iterations:this.iterations}}},n}(x),C=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.createLinearRegression=function(t){void 0===t&&(t={});var n=t.learningRate,e=t.iterations,r=t.regularization,i=t.lambda;return new _(void 0===n?.01:n,void 0===e?1e3:e,void 0===r?null:r,void 0===i?.01:i)},n.createLogisticRegression=function(t){void 0===t&&(t={});var n=t.learningRate,e=t.iterations,r=t.regularization,i=t.lambda;return new M(void 0===n?.01:n,void 0===e?1e3:e,void 0===r?null:r,void 0===i?.01:i)},n.createKNN=function(t){void 0===t&&(t={});var n=t.k,e=t.metric,r=t.weights;return new S(void 0===n?5:n,void 0===e?"euclidean":e,void 0===r?"uniform":r)},n.createDecisionTree=function(t){void 0===t&&(t={});var n=t.maxDepth,e=t.minSamplesSplit,r=t.minSamplesLeaf,i=t.criterion;return new N(void 0===n?10:n,void 0===e?2:e,void 0===r?1:r,void 0===i?"gini":i)},n.createRandomForest=function(t){void 0===t&&(t={});var n=t.nEstimators,e=t.maxDepth,r=t.minSamplesSplit,i=t.minSamplesLeaf,a=t.maxFeatures,o=t.criterion,u=t.bootstrap;return new E(void 0===n?100:n,void 0===e?10:e,void 0===r?2:r,void 0===i?1:i,void 0===a?"sqrt":a,void 0===o?"gini":o,void 0===u||u)},n.createNaiveBayes=function(t){void 0===t&&(t={});var n=t.type;return new A(void 0===n?"gaussian":n)},n.createSVM=function(t){void 0===t&&(t={});var n=t.C,e=t.kernel,r=t.gamma,i=t.degree,a=t.learningRate,o=t.iterations;return new T(void 0===n?1:n,void 0===e?"linear":e,void 0===r?"scale":r,void 0===i?3:i,void 0===a?.001:a,void 0===o?1e3:o)},n.crossValidate=function(t,n,e,r,i){void 0===r&&(r=5),void 0===i&&(i="classification");for(var a=n.length,o=Math.floor(a/r),u=Array.from({length:a},function(t,n){return n}),s=a-1;s>0;s--){var c=Math.floor(Math.random()*(s+1)),l=[u[c],u[s]];u[s]=l[0],u[c]=l[1]}for(var f=[],h=0;h<r;h++){var d=h*o,p=h===r-1?a:d+o,m=u.slice(d,p),g=[].concat(u.slice(0,d),u.slice(p)),v=g.map(function(t){return n[t]}),y=g.map(function(t){return e[t]}),b=m.map(function(t){return n[t]}),w=m.map(function(t){return e[t]}),x=Object.create(Object.getPrototypeOf(t));Object.assign(x,t),x.fit(v,y,i);var _=x.score(b,w);f.push("classification"===i?_.accuracy:_.r2Score)}var M=f.reduce(function(t,n){return t+n},0)/f.length,S=Math.sqrt(f.reduce(function(t,n){return t+Math.pow(n-M,2)},0)/f.length);return{scores:f,meanScore:M,stdScore:S,folds:r}},n.trainTestSplit=function(t,n,e,r){void 0===e&&(e=.2),void 0===r&&(r=!0);var i=t.length,a=Array.from({length:i},function(t,n){return n});if(r)for(var o=i-1;o>0;o--){var u=Math.floor(Math.random()*(o+1)),s=[a[u],a[o]];a[o]=s[0],a[u]=s[1]}var c=i-Math.floor(i*e),l=a.slice(0,c),f=a.slice(c);return{X_train:l.map(function(n){return t[n]}),X_test:f.map(function(n){return t[n]}),y_train:l.map(function(t){return n[t]}),y_test:f.map(function(t){return n[t]})}},n.compareModels=function(t,n,e,r){void 0===r&&(r="classification");var i=this.trainTestSplit(n,e,.2),a=i.X_train,o=i.X_test,u=i.y_train,s=i.y_test,c=[];return t.forEach(function(t){var n=t.name,e=t.model,i=Date.now();e.fit(a,u,r);var l=Date.now()-i,f=Date.now(),h=e.score(o,s),d=Date.now()-f;c.push({name:n,score:"classification"===r?h.accuracy:h.r2Score,trainTime:l,evalTime:d,fullScore:h})}),c.sort(function(t,n){return n.score-t.score}),{results:c,bestModel:c[0],comparison:this.generateComparisonReport(c,r)}},n.generateComparisonReport=function(t,n){var e="classification"===n?"Accuracy":"R² Score",r="\n"+"=".repeat(70)+"\n";return r+="š MODEL COMPARISON REPORT\n",r+="=".repeat(70)+"\n\n",r+="Metric: "+e+"\n\n",r+="Rank | Model | Score | Train Time | Eval Time\n",r+="-----+-------------------------+----------+------------+-----------\n",t.forEach(function(t,n){var e=(n+1).toString().padStart(4),i=t.name.padEnd(24),a=t.score.toFixed(4).padStart(8),o=(t.trainTime+"ms").padStart(10),u=(t.evalTime+"ms").padStart(9);r+=e+" | "+i+" | "+a+" | "+o+" | "+u+"\n"}),r+="\n"+"=".repeat(70)+"\n",r+="š Best Model: "+t[0].name+" ("+e+": "+t[0].score.toFixed(4)+")\n",r+="=".repeat(70)+"\n"},n.polynomialFeatures=function(t,n){return void 0===n&&(n=2),t.map(function(t){for(var e=[].concat(t),r=2;r<=n;r++)for(var i=0;i<t.length;i++)e.push(Math.pow(t[i],r));if(n>=2)for(var a=0;a<t.length;a++)for(var o=a+1;o<t.length;o++)e.push(t[a]*t[o]);return e})},n.standardScaler=function(t){for(var n=t.length,e=t[0].length,r=[],i=[],a=function(e){var a=t.map(function(t){return t[e]}),o=a.reduce(function(t,n){return t+n},0)/n,u=a.reduce(function(t,n){return t+Math.pow(n-o,2)},0)/n,s=Math.sqrt(u);r.push(o),i.push(0===s?1:s)},o=0;o<e;o++)a(o);var u=t.map(function(t){return t.map(function(t,n){return(t-r[n])/i[n]})});return{scaled:u,means:r,stds:i,transform:function(t){return t.map(function(t){return t.map(function(t,n){return(t-r[n])/i[n]})})}}},n.minMaxScaler=function(t,n){void 0===n&&(n=[0,1]);for(var e=t[0].length,r=[],i=[],a=n[0],o=n[1],u=function(n){var e=t.map(function(t){return t[n]});r.push(Math.min.apply(Math,e)),i.push(Math.max.apply(Math,e))},s=0;s<e;s++)u(s);var c=t.map(function(t){return t.map(function(t,n){var e=i[n]-r[n];return 0===e?a:a+(t-r[n])/e*(o-a)})});return{scaled:c,mins:r,maxs:i,transform:function(t){return t.map(function(t){return t.map(function(t,n){var e=i[n]-r[n];return 0===e?a:a+(t-r[n])/e*(o-a)})})}}},n.rocCurve=function(t,n){var e=n.map(function(n,e){return{probability:"object"==typeof n?Object.values(n)[1]:n,label:t[e]}});e.sort(function(t,n){return n.probability-t.probability});var r=t.filter(function(t){return 1===t||!0===t}).length,i=t.length-r,a=[0],o=[0],u=0,s=0;e.forEach(function(t){1===t.label||!0===t.label?u++:s++,a.push(u/r),o.push(s/i)});for(var c=0,l=1;l<o.length;l++)c+=(o[l]-o[l-1])*(a[l]+a[l-1])/2;return{fpr:o,tpr:a,auc:c,thresholds:e.map(function(t){return t.probability})}},n.precisionRecallCurve=function(t,n){var e=n.map(function(n,e){return{probability:"object"==typeof n?Object.values(n)[1]:n,label:t[e]}});e.sort(function(t,n){return n.probability-t.probability});var r=[],i=[],a=0,o=0,u=t.filter(function(t){return 1===t||!0===t}).length;return e.forEach(function(t){1===t.label||!0===t.label?a++:o++;var n=a/u;r.push(a/(a+o)),i.push(n)}),{precision:r,recall:i,thresholds:e.map(function(t){return t.probability})}},n.quickTrain=function(t,n,e,r){void 0===r&&(r={});var i,a=r.taskType,o=void 0===a?"classification":a,u=r.testSize,s=void 0===u?.2:u,c=r.normalize,l=void 0===c||c;switch(t.toLowerCase()){case"linear":case"linearregression":i=this.createLinearRegression(r);break;case"logistic":case"logisticregression":i=this.createLogisticRegression(r);break;case"knn":i=this.createKNN(r);break;case"tree":case"decisiontree":i=this.createDecisionTree(r);break;case"forest":case"randomforest":i=this.createRandomForest(r);break;case"naivebayes":case"nb":i=this.createNaiveBayes(r);break;case"svm":i=this.createSVM(r);break;default:throw new Error("Unknown model type: "+t)}var f=this.trainTestSplit(n,e,s),h=f.X_train,d=f.X_test,p=f.y_train,m=f.y_test;console.log("\nš Training "+t+"...");var g=Date.now();i.fit(h,p,l,o);var v=Date.now()-g;console.log("ā
Training completed in "+v+"ms"),console.log("\nš Evaluating model...");var y=i.score(d,m);return console.log("\n"+"=".repeat(60)),console.log("š RESULTS"),console.log(""+"=".repeat(60)),"classification"===o?(console.log("Accuracy: "+(100*y.accuracy).toFixed(2)+"%"),console.log("\nConfusion Matrix:"+y.confusionMatrix.display),console.log("\nPer-Class Metrics:"),Object.keys(y.classMetrics).forEach(function(t){var n=y.classMetrics[t];console.log(" "+t+":"),console.log(" Precision: "+(100*n.precision).toFixed(2)+"%"),console.log(" Recall: "+(100*n.recall).toFixed(2)+"%"),console.log(" F1-Score: "+(100*n.f1Score).toFixed(2)+"%")})):(console.log("R² Score: "+y.r2Score.toFixed(4)),console.log("MSE: "+y.mse.toFixed(4)),console.log("RMSE: "+y.rmse.toFixed(4)),console.log("MAE: "+y.mae.toFixed(4))),console.log("\n"+"=".repeat(60)+"\n"),{model:i,score:y,trainTime:v,summary:i.summary()}},t}();function k(t,n){return null==t||null==n?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function q(t,n){return null==t||null==n?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function F(t){let n,e,r;function i(t,r,i=0,a=t.length){if(i<a){if(0!==n(r,r))return a;do{const n=i+a>>>1;e(t[n],r)<0?i=n+1:a=n}while(i<a)}return i}return 2!==t.length?(n=k,e=(n,e)=>k(t(n),e),r=(n,e)=>t(n)-e):(n=t===k||t===q?t:D,e=t,r=t),{left:i,center:function(t,n,e=0,a=t.length){const o=i(t,n,e,a-1);return o>e&&r(t[o-1],n)>-r(t[o],n)?o-1:o},right:function(t,r,i=0,a=t.length){if(i<a){if(0!==n(r,r))return a;do{const n=i+a>>>1;e(t[n],r)<=0?i=n+1:a=n}while(i<a)}return i}}}function D(){return 0}function z(t){return null===t?NaN:+t}const I=F(k),P=I.right,R=I.left,O=F(z).center;var V=P;const j=B(H),L=B(function(t){const n=H(t);return(t,e,r,i,a)=>{n(t,e,0+(r<<=2),0+(i<<=2),a<<=2),n(t,e,r+1,i+1,a),n(t,e,r+2,i+2,a),n(t,e,r+3,i+3,a)}});function B(t){return function(n,e,r=e){if(!((e=+e)>=0))throw new RangeError("invalid rx");if(!((r=+r)>=0))throw new RangeError("invalid ry");let{data:i,width:a,height:o}=n;if(!((a=Math.floor(a))>=0))throw new RangeError("invalid width");if(!((o=Math.floor(void 0!==o?o:i.length/a))>=0))throw new RangeError("invalid height");if(!a||!o||!e&&!r)return n;const u=e&&t(e),s=r&&t(r),c=i.slice();return u&&s?($(u,c,i,a,o),$(u,i,c,a,o),$(u,c,i,a,o),U(s,i,c,a,o),U(s,c,i,a,o),U(s,i,c,a,o)):u?($(u,i,c,a,o),$(u,c,i,a,o),$(u,i,c,a,o)):s&&(U(s,i,c,a,o),U(s,c,i,a,o),U(s,i,c,a,o)),n}}function $(t,n,e,r,i){for(let a=0,o=r*i;a<o;)t(n,e,a,a+=r,1)}function U(t,n,e,r,i){for(let a=0,o=r*i;a<r;++a)t(n,e,a,a+o,r)}function H(t){const n=Math.floor(t);if(n===t)return function(t){const n=2*t+1;return(e,r,i,a,o)=>{if(!((a-=o)>=i))return;let u=t*r[i];const s=o*t;for(let t=i,n=i+s;t<n;t+=o)u+=r[Math.min(a,t)];for(let t=i,c=a;t<=c;t+=o)u+=r[Math.min(a,t+s)],e[t]=u/n,u-=r[Math.max(i,t-s)]}}(t);const e=t-n,r=2*t+1;return(t,i,a,o,u)=>{if(!((o-=u)>=a))return;let s=n*i[a];const c=u*n,l=c+u;for(let t=a,n=a+c;t<n;t+=u)s+=i[Math.min(o,t)];for(let n=a,f=o;n<=f;n+=u)s+=i[Math.min(o,n+c)],t[n]=(s+e*(i[Math.max(a,n-l)]+i[Math.min(o,n+l)]))/r,s-=i[Math.max(a,n-c)]}}function Y(t,n){let e=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&++e;else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(i=+i)>=i&&++e}return e}function G(t){return 0|t.length}function W(t){return!(t>0)}function X(t){return"object"!=typeof t||"length"in t?t:Array.from(t)}function Q(t,n){let e,r=0,i=0,a=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(e=n-i,i+=e/++r,a+=e*(n-i));else{let o=-1;for(let u of t)null!=(u=n(u,++o,t))&&(u=+u)>=u&&(e=u-i,i+=e/++r,a+=e*(u-i))}if(r>1)return a/(r-1)}function K(t,n){const e=Q(t,n);return e?Math.sqrt(e):e}function Z(t,n){let e,r;if(void 0===n)for(const n of t)null!=n&&(void 0===e?n>=n&&(e=r=n):(e>n&&(e=n),r<n&&(r=n)));else{let i=-1;for(let a of t)null!=(a=n(a,++i,t))&&(void 0===e?a>=a&&(e=r=a):(e>a&&(e=a),r<a&&(r=a)))}return[e,r]}class J{constructor(){this._partials=new Float64Array(32),this._n=0}add(t){const n=this._partials;let e=0;for(let r=0;r<this._n&&r<32;r++){const i=n[r],a=t+i,o=Math.abs(t)<Math.abs(i)?t-(a-i):i-(a-t);o&&(n[e++]=o),t=a}return n[e]=t,this._n=e+1,this}valueOf(){const t=this._partials;let n,e,r,i=this._n,a=0;if(i>0){for(a=t[--i];i>0&&(n=a,e=t[--i],a=n+e,r=e-(a-n),!r););i>0&&(r<0&&t[i-1]<0||r>0&&t[i-1]>0)&&(e=2*r,n=a+e,e==n-a&&(a=n))}return a}}class tt extends Map{constructor(t,n=at){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const[n,e]of t)this.set(n,e)}get(t){return super.get(et(this,t))}has(t){return super.has(et(this,t))}set(t,n){return super.set(rt(this,t),n)}delete(t){return super.delete(it(this,t))}}class nt extends Set{constructor(t,n=at){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const n of t)this.add(n)}has(t){return super.has(et(this,t))}add(t){return super.add(rt(this,t))}delete(t){return super.delete(it(this,t))}}function et({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):e}function rt({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):(t.set(r,e),e)}function it({_intern:t,_key:n},e){const r=n(e);return t.has(r)&&(e=t.get(r),t.delete(r)),e}function at(t){return null!==t&&"object"==typeof t?t.valueOf():t}function ot(t){return t}function ut(t,...n){return dt(t,ot,ot,n)}function st(t,...n){return dt(t,Array.from,ot,n)}function ct(t,n){for(let e=1,r=n.length;e<r;++e)t=t.flatMap(t=>t.pop().map(([n,e])=>[...t,n,e]));return t}function lt(t,n,...e){return dt(t,ot,n,e)}function ft(t,n,...e){return dt(t,Array.from,n,e)}function ht(t){if(1!==t.length)throw new Error("duplicate key");return t[0]}function dt(t,n,e,r){return function t(i,a){if(a>=r.length)return e(i);const o=new tt,u=r[a++];let s=-1;for(const t of i){const n=u(t,++s,i),e=o.get(n);e?e.push(t):o.set(n,[t])}for(const[n,e]of o)o.set(n,t(e,a));return n(o)}(t,0)}function pt(t,n){return Array.from(n,n=>t[n])}function mt(t,...n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");t=Array.from(t);let[e]=n;if(e&&2!==e.length||n.length>1){const r=Uint32Array.from(t,(t,n)=>n);return n.length>1?(n=n.map(n=>t.map(n)),r.sort((t,e)=>{for(const r of n){const n=vt(r[t],r[e]);if(n)return n}})):(e=t.map(e),r.sort((t,n)=>vt(e[t],e[n]))),pt(t,r)}return t.sort(gt(e))}function gt(t=k){if(t===k)return vt;if("function"!=typeof t)throw new TypeError("compare is not a function");return(n,e)=>{const r=t(n,e);return r||0===r?r:(0===t(e,e))-(0===t(n,n))}}function vt(t,n){return(null==t||!(t>=t))-(null==n||!(n>=n))||(t<n?-1:t>n?1:0)}var yt=Array.prototype.slice;function bt(t){return()=>t}const wt=Math.sqrt(50),xt=Math.sqrt(10),_t=Math.sqrt(2);function Mt(t,n,e){const r=(n-t)/Math.max(0,e),i=Math.floor(Math.log10(r)),a=r/Math.pow(10,i),o=a>=wt?10:a>=xt?5:a>=_t?2:1;let u,s,c;return i<0?(c=Math.pow(10,-i)/o,u=Math.round(t*c),s=Math.round(n*c),u/c<t&&++u,s/c>n&&--s,c=-c):(c=Math.pow(10,i)*o,u=Math.round(t/c),s=Math.round(n/c),u*c<t&&++u,s*c>n&&--s),s<u&&.5<=e&&e<2?Mt(t,n,2*e):[u,s,c]}function St(t,n,e){if(!((e=+e)>0))return[];if((t=+t)===(n=+n))return[t];const r=n<t,[i,a,o]=r?Mt(n,t,e):Mt(t,n,e);if(!(a>=i))return[];const u=a-i+1,s=new Array(u);if(r)if(o<0)for(let t=0;t<u;++t)s[t]=(a-t)/-o;else for(let t=0;t<u;++t)s[t]=(a-t)*o;else if(o<0)for(let t=0;t<u;++t)s[t]=(i+t)/-o;else for(let t=0;t<u;++t)s[t]=(i+t)*o;return s}function Nt(t,n,e){return Mt(t=+t,n=+n,e=+e)[2]}function Et(t,n,e){e=+e;const r=(n=+n)<(t=+t),i=r?Nt(n,t,e):Nt(t,n,e);return(r?-1:1)*(i<0?1/-i:i)}function At(t,n,e){let r;for(;;){const i=Nt(t,n,e);if(i===r||0===i||!isFinite(i))return[t,n];i>0?(t=Math.floor(t/i)*i,n=Math.ceil(n/i)*i):i<0&&(t=Math.ceil(t*i)/i,n=Math.floor(n*i)/i),r=i}}function Tt(t){return Math.max(1,Math.ceil(Math.log(Y(t))/Math.LN2)+1)}function Ct(){var t=ot,n=Z,e=Tt;function r(r){Array.isArray(r)||(r=Array.from(r));var i,a,o,u=r.length,s=new Array(u);for(i=0;i<u;++i)s[i]=t(r[i],i,r);var c=n(s),l=c[0],f=c[1],h=e(s,l,f);if(!Array.isArray(h)){const t=f,e=+h;if(n===Z&&([l,f]=At(l,f,e)),(h=St(l,f,e))[0]<=l&&(o=Nt(l,f,e)),h[h.length-1]>=f)if(t>=f&&n===Z){const t=Nt(l,f,e);isFinite(t)&&(t>0?f=(Math.floor(f/t)+1)*t:t<0&&(f=(Math.ceil(f*-t)+1)/-t))}else h.pop()}for(var d=h.length,p=0,m=d;h[p]<=l;)++p;for(;h[m-1]>f;)--m;(p||m<d)&&(h=h.slice(p,m),d=m-p);var g,v=new Array(d+1);for(i=0;i<=d;++i)(g=v[i]=[]).x0=i>0?h[i-1]:l,g.x1=i<d?h[i]:f;if(isFinite(o)){if(o>0)for(i=0;i<u;++i)null!=(a=s[i])&&l<=a&&a<=f&&v[Math.min(d,Math.floor((a-l)/o))].push(r[i]);else if(o<0)for(i=0;i<u;++i)if(null!=(a=s[i])&&l<=a&&a<=f){const t=Math.floor((l-a)*o);v[Math.min(d,t+(h[t]<=a))].push(r[i])}}else for(i=0;i<u;++i)null!=(a=s[i])&&l<=a&&a<=f&&v[V(h,a,0,d)].push(r[i]);return v}return r.value=function(n){return arguments.length?(t="function"==typeof n?n:bt(n),r):t},r.domain=function(t){return arguments.length?(n="function"==typeof t?t:bt([t[0],t[1]]),r):n},r.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:bt(Array.isArray(t)?yt.call(t):t),r):e},r}function kt(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e<n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e<i||void 0===e&&i>=i)&&(e=i)}return e}function qt(t,n){let e,r=-1,i=-1;if(void 0===n)for(const n of t)++i,null!=n&&(e<n||void 0===e&&n>=n)&&(e=n,r=i);else for(let a of t)null!=(a=n(a,++i,t))&&(e<a||void 0===e&&a>=a)&&(e=a,r=i);return r}function Ft(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e>n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e>i||void 0===e&&i>=i)&&(e=i)}return e}function Dt(t,n){let e,r=-1,i=-1;if(void 0===n)for(const n of t)++i,null!=n&&(e>n||void 0===e&&n>=n)&&(e=n,r=i);else for(let a of t)null!=(a=n(a,++i,t))&&(e>a||void 0===e&&a>=a)&&(e=a,r=i);return r}function zt(t,n,e=0,r=Infinity,i){if(n=Math.floor(n),e=Math.floor(Math.max(0,e)),r=Math.floor(Math.min(t.length-1,r)),!(e<=n&&n<=r))return t;for(i=void 0===i?vt:gt(i);r>e;){if(r-e>600){const a=r-e+1,o=n-e+1,u=Math.log(a),s=.5*Math.exp(2*u/3),c=.5*Math.sqrt(u*s*(a-s)/a)*(o-a/2<0?-1:1);zt(t,n,Math.max(e,Math.floor(n-o*s/a+c)),Math.min(r,Math.floor(n+(a-o)*s/a+c)),i)}const a=t[n];let o=e,u=r;for(It(t,e,n),i(t[r],a)>0&&It(t,e,r);o<u;){for(It(t,o,u),++o,--u;i(t[o],a)<0;)++o;for(;i(t[u],a)>0;)--u}0===i(t[e],a)?It(t,e,u):(++u,It(t,u,r)),u<=n&&(e=u+1),n<=u&&(r=u-1)}return t}function It(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function Pt(t,n=k){let e,r=!1;if(1===n.length){let i;for(const a of t){const t=n(a);(r?k(t,i)>0:0===k(t,t))&&(e=a,i=t,r=!0)}}else for(const i of t)(r?n(i,e)>0:0===n(i,i))&&(e=i,r=!0);return e}function Rt(t,n,e){if(t=Float64Array.from(function*(t,n){if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(yield n);else{let e=-1;for(let r of t)null!=(r=n(r,++e,t))&&(r=+r)>=r&&(yield r)}}(t,e)),(r=t.length)&&!isNaN(n=+n)){if(n<=0||r<2)return Ft(t);if(n>=1)return kt(t);var r,i=(r-1)*n,a=Math.floor(i),o=kt(zt(t,a).subarray(0,a+1));return o+(Ft(t.subarray(a+1))-o)*(i-a)}}function Ot(t,n,e=z){if((r=t.length)&&!isNaN(n=+n)){if(n<=0||r<2)return+e(t[0],0,t);if(n>=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,a=Math.floor(i),o=+e(t[a],a,t);return o+(+e(t[a+1],a+1,t)-o)*(i-a)}}function Vt(t,n,e=z){if(!isNaN(n=+n)){if(r=Float64Array.from(t,(n,r)=>z(e(t[r],r,t))),n<=0)return Dt(r);if(n>=1)return qt(r);var r,i=Uint32Array.from(t,(t,n)=>n),a=r.length-1,o=Math.floor(a*n);return zt(i,o,0,a,(t,n)=>vt(r[t],r[n])),(o=Pt(i.subarray(0,o+1),t=>r[t]))>=0?o:-1}}function jt(t,n){let e=0,r=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(++e,r+=n);else{let i=-1;for(let a of t)null!=(a=n(a,++i,t))&&(a=+a)>=a&&(++e,r+=a)}if(e)return r/e}function Lt(t){return Array.from(function*(t){for(const n of t)yield*n}(t))}function Bt(t,n){return[t,n]}function $t(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),a=new Array(i);++r<i;)a[r]=t+r*e;return a}function Ut(t,n=k){if(1===n.length)return Dt(t,n);let e,r=-1,i=-1;for(const a of t)++i,(r<0?0===n(a,a):n(a,e)<0)&&(e=a,r=i);return r}var Ht=Yt(Math.random);function Yt(t){return function(n,e=0,r=n.length){let i=r-(e=+e);for(;i;){const r=t()*i--|0,a=n[i+e];n[i+e]=n[r+e],n[r+e]=a}return n}}function Gt(t,n){let e=0;if(void 0===n)for(let n of t)(n=+n)&&(e+=n);else{let r=-1;for(let i of t)(i=+n(i,++r,t))&&(e+=i)}return e}function Wt(t){if(!(i=t.length))return[];for(var n=-1,e=Ft(t,Xt),r=new Array(e);++n<e;)for(var i,a=-1,o=r[n]=new Array(i);++a<i;)o[a]=t[a][n];return r}function Xt(t){return t.length}function Qt(t){return t instanceof nt?t:new nt(t)}function Kt(t,n){const e=t[Symbol.iterator](),r=new Set;for(const t of n){const n=Zt(t);if(r.has(n))continue;let i,a;for(;({value:i,done:a}=e.next());){if(a)return!1;const t=Zt(i);if(r.add(t),Object.is(n,t))break}}return!0}function Zt(t){return null!==t&&"object"==typeof t?t.valueOf():t}function Jt(t){return t}var tn=1e-6;function nn(t){return"translate("+t+",0)"}function en(t){return"translate(0,"+t+")"}function rn(t){return n=>+t(n)}function an(t,n){return n=Math.max(0,t.bandwidth()-2*n)/2,t.round()&&(n=Math.round(n)),e=>+t(e)+n}function on(){return!this.__axis}function un(t,n){var e=[],r=null,i=null,a=6,o=6,u=3,s="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,c=1===t||4===t?-1:1,l=4===t||2===t?"x":"y",f=1===t||3===t?nn:en;function h(h){var d=null==r?n.ticks?n.ticks.apply(n,e):n.domain():r,p=null==i?n.tickFormat?n.tickFormat.apply(n,e):Jt:i,m=Math.max(a,0)+u,g=n.range(),v=+g[0]+s,y=+g[g.length-1]+s,b=(n.bandwidth?an:rn)(n.copy(),s),w=h.selection?h.selection():h,x=w.selectAll(".domain").data([null]),_=w.selectAll(".tick").data(d,n).order(),M=_.exit(),S=_.enter().append("g").attr("class","tick"),N=_.select("line"),E=_.select("text");x=x.merge(x.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),_=_.merge(S),N=N.merge(S.append("line").attr("stroke","currentColor").attr(l+"2",c*a)),E=E.merge(S.append("text").attr("fill","currentColor").attr(l,c*m).attr("dy",1===t?"0em":3===t?"0.71em":"0.32em")),h!==w&&(x=x.transition(h),_=_.transition(h),N=N.transition(h),E=E.transition(h),M=M.transition(h).attr("opacity",tn).attr("transform",function(t){return isFinite(t=b(t))?f(t+s):this.getAttribute("transform")}),S.attr("opacity",tn).attr("transform",function(t){var n=this.parentNode.__axis;return f((n&&isFinite(n=n(t))?n:b(t))+s)})),M.remove(),x.attr("d",4===t||2===t?o?"M"+c*o+","+v+"H"+s+"V"+y+"H"+c*o:"M"+s+","+v+"V"+y:o?"M"+v+","+c*o+"V"+s+"H"+y+"V"+c*o:"M"+v+","+s+"H"+y),_.attr("opacity",1).attr("transform",function(t){return f(b(t)+s)}),N.attr(l+"2",c*a),E.attr(l,c*m).text(p),w.filter(on).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===t?"start":4===t?"end":"middle"),w.each(function(){this.__axis=b})}return h.scale=function(t){return arguments.length?(n=t,h):n},h.ticks=function(){return e=Array.from(arguments),h},h.tickArguments=function(t){return arguments.length?(e=null==t?[]:Array.from(t),h):e.slice()},h.tickValues=function(t){return arguments.length?(r=null==t?null:Array.from(t),h):r&&r.slice()},h.tickFormat=function(t){return arguments.length?(i=t,h):i},h.tickSize=function(t){return arguments.length?(a=o=+t,h):a},h.tickSizeInner=function(t){return arguments.length?(a=+t,h):a},h.tickSizeOuter=function(t){return arguments.length?(o=+t,h):o},h.tickPadding=function(t){return arguments.length?(u=+t,h):u},h.offset=function(t){return arguments.length?(s=+t,h):s},h}function sn(t){return un(3,t)}function cn(t){return un(4,t)}var ln={value:()=>{}};function fn(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new hn(r)}function hn(t){this._=t}function dn(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function pn(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=ln,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}hn.prototype=fn.prototype={constructor:hn,on:function(t,n){var e,r,i=this._,a=(r=i,(t+"").trim().split(/^|\s+/).map(function(t){var n="",e=t.indexOf(".");if(e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}})),o=-1,u=a.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++o<u;)if(e=(t=a[o]).type)i[e]=pn(i[e],t.name,n);else if(null==n)for(e in i)i[e]=pn(i[e],t.name,null);return this}for(;++o<u;)if((e=(t=a[o]).type)&&(e=dn(i[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new hn(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,i=new Array(e),a=0;a<e;++a)i[a]=arguments[a+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(a=0,e=(r=this._[t]).length;a<e;++a)r[a].value.apply(n,i)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,a=r.length;i<a;++i)r[i].value.apply(n,e)}};var mn="http://www.w3.org/1999/xhtml",gn={svg:"http://www.w3.org/2000/svg",xhtml:mn,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function vn(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),gn.hasOwnProperty(n)?{space:gn[n],local:t}:t}function yn(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===mn&&n.documentElement.namespaceURI===mn?n.createElement(t):n.createElementNS(e,t)}}function bn(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function wn(t){var n=vn(t);return(n.local?bn:yn)(n)}function xn(){}function _n(t){return null==t?xn:function(){return this.querySelector(t)}}function Mn(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function Sn(){return[]}function Nn(t){return null==t?Sn:function(){return this.querySelectorAll(t)}}function En(t){return function(){return this.matches(t)}}function An(t){return function(n){return n.matches(t)}}var Tn=Array.prototype.find;function Cn(){return this.firstElementChild}var kn=Array.prototype.filter;function qn(){return Array.from(this.children)}function Fn(t){return new Array(t.length)}function Dn(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function zn(t,n,e,r,i,a){for(var o,u=0,s=n.length,c=a.length;u<c;++u)(o=n[u])?(o.__data__=a[u],r[u]=o):e[u]=new Dn(t,a[u]);for(;u<s;++u)(o=n[u])&&(i[u]=o)}function In(t,n,e,r,i,a,o){var u,s,c,l=new Map,f=n.length,h=a.length,d=new Array(f);for(u=0;u<f;++u)(s=n[u])&&(d[u]=c=o.call(s,s.__data__,u,n)+"",l.has(c)?i[u]=s:l.set(c,s));for(u=0;u<h;++u)c=o.call(t,a[u],u,a)+"",(s=l.get(c))?(r[u]=s,s.__data__=a[u],l.delete(c)):e[u]=new Dn(t,a[u]);for(u=0;u<f;++u)(s=n[u])&&l.get(d[u])===s&&(i[u]=s)}function Pn(t){return t.__data__}function Rn(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function On(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function Vn(t){return function(){this.removeAttribute(t)}}function jn(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Ln(t,n){return function(){this.setAttribute(t,n)}}function Bn(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function $n(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function Un(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function Hn(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Yn(t){return function(){this.style.removeProperty(t)}}function Gn(t,n,e){return function(){this.style.setProperty(t,n,e)}}function Wn(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function Xn(t,n){return t.style.getPropertyValue(n)||Hn(t).getComputedStyle(t,null).getPropertyValue(n)}function Qn(t){return function(){delete this[t]}}function Kn(t,n){return function(){this[t]=n}}function Zn(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function Jn(t){return t.trim().split(/^|\s+/)}function te(t){return t.classList||new ne(t)}function ne(t){this._node=t,this._names=Jn(t.getAttribute("class")||"")}function ee(t,n){for(var e=te(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function re(t,n){for(var e=te(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function ie(t){return function(){ee(this,t)}}function ae(t){return function(){re(this,t)}}function oe(t,n){return function(){(n.apply(this,arguments)?ee:re)(this,t)}}function ue(){this.textContent=""}function se(t){return function(){this.textContent=t}}function ce(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}function le(){this.innerHTML=""}function fe(t){return function(){this.innerHTML=t}}function he(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}function de(){this.nextSibling&&this.parentNode.appendChild(this)}function pe(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function me(){return null}function ge(){var t=this.parentNode;t&&t.removeChild(this)}function ve(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function ye(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function be(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,a=n.length;r<a;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.options);++i?n.length=i:delete this.__on}}}function we(t,n,e){return function(){var r,i=this.__on,a=function(t){return function(n){t.call(this,n,this.__data__)}}(n);if(i)for(var o=0,u=i.length;o<u;++o)if((r=i[o]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=a,r.options=e),void(r.value=n);this.addEventListener(t.type,a,e),r={type:t.type,name:t.name,value:n,listener:a,options:e},i?i.push(r):this.__on=[r]}}function xe(t,n,e){var r=Hn(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}function _e(t,n){return function(){return xe(this,t,n)}}function Me(t,n){return function(){return xe(this,t,n.apply(this,arguments))}}Dn.prototype={constructor:Dn,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}},ne.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Se=[null];function Ne(t,n){this._groups=t,this._parents=n}function Ee(){return new Ne([[document.documentElement]],Se)}function Ae(t){return"string"==typeof t?new Ne([[document.querySelector(t)]],[document.documentElement]):new Ne([[t]],Se)}Ne.prototype=Ee.prototype={constructor:Ne,select:function(t){"function"!=typeof t&&(t=_n(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var a,o,u=n[i],s=u.length,c=r[i]=new Array(s),l=0;l<s;++l)(a=u[l])&&(o=t.call(a,a.__data__,l,u))&&("__data__"in a&&(o.__data__=a.__data__),c[l]=o);return new Ne(r,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return Mn(t.apply(this,arguments))}}(t):Nn(t);for(var n=this._groups,e=n.length,r=[],i=[],a=0;a<e;++a)for(var o,u=n[a],s=u.length,c=0;c<s;++c)(o=u[c])&&(r.push(t.call(o,o.__data__,c,u)),i.push(o));return new Ne(r,i)},selectChild:function(t){return this.select(null==t?Cn:function(t){return function(){return Tn.call(this.children,t)}}("function"==typeof t?t:An(t)))},selectChildren:function(t){return this.selectAll(null==t?qn:function(t){return function(){return kn.call(this.children,t)}}("function"==typeof t?t:An(t)))},filter:function(t){"function"!=typeof t&&(t=En(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var a,o=n[i],u=o.length,s=r[i]=[],c=0;c<u;++c)(a=o[c])&&t.call(a,a.__data__,c,o)&&s.push(a);return new Ne(r,this._parents)},data:function(t,n){if(!arguments.length)return Array.from(this,Pn);var e=n?In:zn,r=this._parents,i=this._groups;"function"!=typeof t&&(t=function(t){return function(){return t}}(t));for(var a=i.length,o=new Array(a),u=new Array(a),s=new Array(a),c=0;c<a;++c){var l=r[c],f=i[c],h=f.length,d=Rn(t.call(l,l&&l.__data__,c,r)),p=d.length,m=u[c]=new Array(p),g=o[c]=new Array(p);e(l,f,m,g,s[c]=new Array(h),d,n);for(var v,y,b=0,w=0;b<p;++b)if(v=m[b]){for(b>=w&&(w=b+1);!(y=g[w])&&++w<p;);v._next=y||null}}return(o=new Ne(o,r))._enter=u,o._exit=s,o},enter:function(){return new Ne(this._enter||this._groups.map(Fn),this._parents)},exit:function(){return new Ne(this._exit||this._groups.map(Fn),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,a=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=n&&(i=n(i))&&(i=i.selection()),null==e?a.remove():e(a),r&&i?r.merge(i).order():i},merge:function(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,a=Math.min(i,r.length),o=new Array(i),u=0;u<a;++u)for(var s,c=e[u],l=r[u],f=c.length,h=o[u]=new Array(f),d=0;d<f;++d)(s=c[d]||l[d])&&(h[d]=s);for(;u<i;++u)o[u]=e[u];return new Ne(o,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],a=i.length-1,o=i[a];--a>=0;)(r=i[a])&&(o&&4^r.compareDocumentPosition(o)&&o.parentNode.insertBefore(r,o),o=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=On);for(var e=this._groups,r=e.length,i=new Array(r),a=0;a<r;++a){for(var o,u=e[a],s=u.length,c=i[a]=new Array(s),l=0;l<s;++l)(o=u[l])&&(c[l]=o);c.sort(n)}return new Ne(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null},size:function(){let t=0;for(const n of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i,a=n[e],o=0,u=a.length;o<u;++o)(i=a[o])&&t.call(i,i.__data__,o,a);return this},attr:function(t,n){var e=vn(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((null==n?e.local?jn:Vn:"function"==typeof n?e.local?Un:$n:e.local?Bn:Ln)(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?Yn:"function"==typeof n?Wn:Gn)(t,n,null==e?"":e)):Xn(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?Qn:"function"==typeof n?Zn:Kn)(t,n)):this.node()[t]},classed:function(t,n){var e=Jn(t+"");if(arguments.length<2){for(var r=te(this.node()),i=-1,a=e.length;++i<a;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?oe:n?ie:ae)(e,n))},text:function(t){return arguments.length?this.each(null==t?ue:("function"==typeof t?ce:se)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?le:("function"==typeof t?he:fe)(t)):this.node().innerHTML},raise:function(){return this.each(de)},lower:function(){return this.each(pe)},append:function(t){var n="function"==typeof t?t:wn(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})},insert:function(t,n){var e="function"==typeof t?t:wn(t),r=null==n?me:"function"==typeof n?n:_n(n);return this.select(function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)})},remove:function(){return this.each(ge)},clone:function(t){return this.select(t?ye:ve)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,n,e){var r,i,a=function(t){return t.trim().split(/^|\s+/).map(function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}})}(t+""),o=a.length;if(!(arguments.length<2)){for(u=n?we:be,r=0;r<o;++r)this.each(u(a[r],n,e));return this}var u=this.node().__on;if(u)for(var s,c=0,l=u.length;c<l;++c)for(r=0,s=u[c];r<o;++r)if((i=a[r]).type===s.type&&i.name===s.name)return s.value},dispatch:function(t,n){return this.each(("function"==typeof n?Me:_e)(t,n))},[Symbol.iterator]:function*(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r,i=t[n],a=0,o=i.length;a<o;++a)(r=i[a])&&(yield r)}};var Te=0;function Ce(){return new ke}function ke(){this._="@"+(++Te).toString(36)}function qe(t){let n;for(;n=t.sourceEvent;)t=n;return t}function Fe(t,n){if(t=qe(t),void 0===n&&(n=t.currentTarget),n){var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,[(r=r.matrixTransform(n.getScreenCTM().inverse())).x,r.y]}if(n.getBoundingClientRect){var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}}return[t.pageX,t.pageY]}ke.prototype=Ce.prototype={constructor:ke,get:function(t){for(var n=this._;!(n in t);)if(!(t=t.parentNode))return;return t[n]},set:function(t,n){return t[this._]=n},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};const De={passive:!1},ze={capture:!0,passive:!1};function Ie(t){t.stopImmediatePropagation()}function Pe(t){t.preventDefault(),t.stopImmediatePropagation()}function Re(t){var n=t.document.documentElement,e=Ae(t).on("dragstart.drag",Pe,ze);"onselectstart"in n?e.on("selectstart.drag",Pe,ze):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}function Oe(t,n){var e=t.document.documentElement,r=Ae(t).on("dragstart.drag",null);n&&(r.on("click.drag",Pe,ze),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in e?r.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}var Ve=t=>()=>t;function je(t,{sourceEvent:n,subject:e,target:r,identifier:i,active:a,x:o,y:u,dx:s,dy:c,dispatch:l}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:e,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:u,enumerable:!0,configurable:!0},dx:{value:s,enumerable:!0,configurable:!0},dy:{value:c,enumerable:!0,configurable:!0},_:{value:l}})}function Le(t){return!t.ctrlKey&&!t.button}function Be(){return this.parentNode}function $e(t,n){return null==n?{x:t.x,y:t.y}:n}function Ue(){return navigator.maxTouchPoints||"ontouchstart"in this}function He(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function Ye(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function Ge(){}je.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var We=.7,Xe=1/We,Qe="\\s*([+-]?\\d+)\\s*",Ke="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Ze="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Je=/^#([0-9a-f]{3,8})$/,tr=new RegExp(`^rgb\\(${Qe},${Qe},${Qe}\\)$`),nr=new RegExp(`^rgb\\(${Ze},${Ze},${Ze}\\)$`),er=new RegExp(`^rgba\\(${Qe},${Qe},${Qe},${Ke}\\)$`),rr=new RegExp(`^rgba\\(${Ze},${Ze},${Ze},${Ke}\\)$`),ir=new RegExp(`^hsl\\(${Ke},${Ze},${Ze}\\)$`),ar=new RegExp(`^hsla\\(${Ke},${Ze},${Ze},${Ke}\\)$`),or={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function ur(){return this.rgb().formatHex()}function sr(){return this.rgb().formatRgb()}function cr(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=Je.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?lr(n):3===e?new pr(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?fr(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?fr(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=tr.exec(t))?new pr(n[1],n[2],n[3],1):(n=nr.exec(t))?new pr(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=er.exec(t))?fr(n[1],n[2],n[3],n[4]):(n=rr.exec(t))?fr(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=ir.exec(t))?wr(n[1],n[2]/100,n[3]/100,1):(n=ar.exec(t))?wr(n[1],n[2]/100,n[3]/100,n[4]):or.hasOwnProperty(t)?lr(or[t]):"transparent"===t?new pr(NaN,NaN,NaN,0):null}function lr(t){return new pr(t>>16&255,t>>8&255,255&t,1)}function fr(t,n,e,r){return r<=0&&(t=n=e=NaN),new pr(t,n,e,r)}function hr(t){return t instanceof Ge||(t=cr(t)),t?new pr((t=t.rgb()).r,t.g,t.b,t.opacity):new pr}function dr(t,n,e,r){return 1===arguments.length?hr(t):new pr(t,n,e,null==r?1:r)}function pr(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function mr(){return`#${br(this.r)}${br(this.g)}${br(this.b)}`}function gr(){const t=vr(this.opacity);return`${1===t?"rgb(":"rgba("}${yr(this.r)}, ${yr(this.g)}, ${yr(this.b)}${1===t?")":`, ${t})`}`}function vr(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function yr(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function br(t){return((t=yr(t))<16?"0":"")+t.toString(16)}function wr(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Mr(t,n,e,r)}function xr(t){if(t instanceof Mr)return new Mr(t.h,t.s,t.l,t.opacity);if(t instanceof Ge||(t=cr(t)),!t)return new Mr;if(t instanceof Mr)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),a=Math.max(n,e,r),o=NaN,u=a-i,s=(a+i)/2;return u?(o=n===a?(e-r)/u+6*(e<r):e===a?(r-n)/u+2:(n-e)/u+4,u/=s<.5?a+i:2-a-i,o*=60):u=s>0&&s<1?0:o,new Mr(o,u,s,t.opacity)}function _r(t,n,e,r){return 1===arguments.length?xr(t):new Mr(t,n,e,null==r?1:r)}function Mr(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Sr(t){return(t=(t||0)%360)<0?t+360:t}function Nr(t){return Math.max(0,Math.min(1,t||0))}function Er(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}He(Ge,cr,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:ur,formatHex:ur,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return xr(this).formatHsl()},formatRgb:sr,toString:sr}),He(pr,dr,Ye(Ge,{brighter(t){return t=null==t?Xe:Math.pow(Xe,t),new pr(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?We:Math.pow(We,t),new pr(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new pr(yr(this.r),yr(this.g),yr(this.b),vr(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:mr,formatHex:mr,formatHex8:function(){return`#${br(this.r)}${br(this.g)}${br(this.b)}${br(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:gr,toString:gr})),He(Mr,_r,Ye(Ge,{brighter(t){return t=null==t?Xe:Math.pow(Xe,t),new Mr(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?We:Math.pow(We,t),new Mr(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new pr(Er(t>=240?t-240:t+120,i,r),Er(t,i,r),Er(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new Mr(Sr(this.h),Nr(this.s),Nr(this.l),vr(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=vr(this.opacity);return`${1===t?"hsl(":"hsla("}${Sr(this.h)}, ${100*Nr(this.s)}%, ${100*Nr(this.l)}%${1===t?")":`, ${t})`}`}}));const Ar=Math.PI/180,Tr=180/Math.PI,Cr=.96422,kr=.82521,qr=4/29,Fr=6/29,Dr=3*Fr*Fr,zr=Fr*Fr*Fr;function Ir(t){if(t instanceof Rr)return new Rr(t.l,t.a,t.b,t.opacity);if(t instanceof Ur)return Hr(t);t instanceof pr||(t=hr(t));var n,e,r=Lr(t.r),i=Lr(t.g),a=Lr(t.b),o=Or((.2225045*r+.7168786*i+.0606169*a)/1);return r===i&&i===a?n=e=o:(n=Or((.4360747*r+.3850649*i+.1430804*a)/Cr),e=Or((.0139322*r+.0971045*i+.7141733*a)/kr)),new Rr(116*o-16,500*(n-o),200*(o-e),t.opacity)}function Pr(t,n,e,r){return 1===arguments.length?Ir(t):new Rr(t,n,e,null==r?1:r)}function Rr(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function Or(t){return t>zr?Math.pow(t,1/3):t/Dr+qr}function Vr(t){return t>Fr?t*t*t:Dr*(t-qr)}function jr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Lr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Br(t){if(t instanceof Ur)return new Ur(t.h,t.c,t.l,t.opacity);if(t instanceof Rr||(t=Ir(t)),0===t.a&&0===t.b)return new Ur(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var n=Math.atan2(t.b,t.a)*Tr;return new Ur(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function $r(t,n,e,r){return 1===arguments.length?Br(t):new Ur(t,n,e,null==r?1:r)}function Ur(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function Hr(t){if(isNaN(t.h))return new Rr(t.l,0,0,t.opacity);var n=t.h*Ar;return new Rr(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}He(Rr,Pr,Ye(Ge,{brighter(t){return new Rr(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker(t){return new Rr(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return new pr(jr(3.1338561*(n=Cr*Vr(n))-1.6168667*(t=1*Vr(t))-.4906146*(e=kr*Vr(e))),jr(-.9787684*n+1.9161415*t+.033454*e),jr(.0719453*n-.2289914*t+1.4052427*e),this.opacity)}})),He(Ur,$r,Ye(Ge,{brighter(t){return new Ur(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker(t){return new Ur(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb(){return Hr(this).rgb()}}));var Yr=-.14861,Gr=1.78277,Wr=-.29227,Xr=-.90649,Qr=1.97294,Kr=Qr*Xr,Zr=Qr*Gr,Jr=Gr*Wr-Xr*Yr;function ti(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof ni)return new ni(t.h,t.s,t.l,t.opacity);t instanceof pr||(t=hr(t));var n=t.g/255,e=t.b/255,r=(Jr*e+Kr*(t.r/255)-Zr*n)/(Jr+Kr-Zr),i=e-r,a=(Qr*(n-r)-Wr*i)/Xr,o=Math.sqrt(a*a+i*i)/(Qr*r*(1-r)),u=o?Math.atan2(a,i)*Tr-120:NaN;return new ni(u<0?u+360:u,o,r,t.opacity)}(t):new ni(t,n,e,null==r?1:r)}function ni(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function ei(t,n,e,r,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*n+(4-6*a+3*o)*e+(1+3*t+3*a-3*o)*r+o*i)/6}function ri(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],a=t[r+1];return ei((e-r/n)*n,r>0?t[r-1]:2*i-a,i,a,r<n-1?t[r+2]:2*a-i)}}function ii(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n);return ei((e-r/n)*n,t[(r+n-1)%n],t[r%n],t[(r+1)%n],t[(r+2)%n])}}He(ni,ti,Ye(Ge,{brighter(t){return t=null==t?Xe:Math.pow(Xe,t),new ni(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?We:Math.pow(We,t),new ni(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*Ar,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new pr(255*(n+e*(Yr*r+Gr*i)),255*(n+e*(Wr*r+Xr*i)),255*(n+e*(Qr*r)),this.opacity)}}));var ai=t=>()=>t;function oi(t,n){return function(e){return t+e*n}}function ui(t,n){var e=n-t;return e?oi(t,e>180||e<-180?e-360*Math.round(e/360):e):ai(isNaN(t)?n:t)}function si(t,n){var e=n-t;return e?oi(t,e):ai(isNaN(t)?n:t)}var ci=function t(n){var e=function(t){return 1===(t=+t)?si:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):ai(isNaN(n)?e:n)}}(n);function r(t,n){var r=e((t=dr(t)).r,(n=dr(n)).r),i=e(t.g,n.g),a=e(t.b,n.b),o=si(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=a(n),t.opacity=o(n),t+""}}return r.gamma=t,r}(1);function li(t){return function(n){var e,r,i=n.length,a=new Array(i),o=new Array(i),u=new Array(i);for(e=0;e<i;++e)r=dr(n[e]),a[e]=r.r||0,o[e]=r.g||0,u[e]=r.b||0;return a=t(a),o=t(o),u=t(u),r.opacity=1,function(t){return r.r=a(t),r.g=o(t),r.b=u(t),r+""}}}var fi=li(ri),hi=li(ii);function di(t,n){n||(n=[]);var e,r=t?Math.min(n.length,t.length):0,i=n.slice();return function(a){for(e=0;e<r;++e)i[e]=t[e]*(1-a)+n[e]*a;return i}}function pi(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function mi(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,a=new Array(i),o=new Array(r);for(e=0;e<i;++e)a[e]=_i(t[e],n[e]);for(;e<r;++e)o[e]=n[e];return function(t){for(e=0;e<i;++e)o[e]=a[e](t);return o}}function gi(t,n){var e=new Date;return t=+t,n=+n,function(r){return e.setTime(t*(1-r)+n*r),e}}function vi(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}function yi(t,n){var e,r={},i={};for(e in null!==t&&"object"==typeof t||(t={}),null!==n&&"object"==typeof n||(n={}),n)e in t?r[e]=_i(t[e],n[e]):i[e]=n[e];return function(t){for(e in r)i[e]=r[e](t);return i}}var bi=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,wi=new RegExp(bi.source,"g");function xi(t,n){var e,r,i,a=bi.lastIndex=wi.lastIndex=0,o=-1,u=[],s=[];for(t+="",n+="";(e=bi.exec(t))&&(r=wi.exec(n));)(i=r.index)>a&&(i=n.slice(a,i),u[o]?u[o]+=i:u[++o]=i),(e=e[0])===(r=r[0])?u[o]?u[o]+=r:u[++o]=r:(u[++o]=null,s.push({i:o,x:vi(e,r)})),a=wi.lastIndex;return a<n.length&&(i=n.slice(a),u[o]?u[o]+=i:u[++o]=i),u.length<2?s[0]?function(t){return function(n){return t(n)+""}}(s[0].x):function(t){return function(){return t}}(n):(n=s.length,function(t){for(var e,r=0;r<n;++r)u[(e=s[r]).i]=e.x(t);return u.join("")})}function _i(t,n){var e,r=typeof n;return null==n||"boolean"===r?ai(n):("number"===r?vi:"string"===r?(e=cr(n))?(n=e,ci):xi:n instanceof cr?ci:n instanceof Date?gi:pi(n)?di:Array.isArray(n)?mi:"function"!=typeof n.valueOf&&"function"!=typeof n.toString||isNaN(n)?yi:vi)(t,n)}function Mi(t,n){return t=+t,n=+n,function(e){return Math.round(t*(1-e)+n*e)}}var Si,Ni=180/Math.PI,Ei={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Ai(t,n,e,r,i,a){var o,u,s;return(o=Math.sqrt(t*t+n*n))&&(t/=o,n/=o),(s=t*e+n*r)&&(e-=t*s,r-=n*s),(u=Math.sqrt(e*e+r*r))&&(e/=u,r/=u,s/=u),t*r<n*e&&(t=-t,n=-n,s=-s,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(n,t)*Ni,skewX:Math.atan(s)*Ni,scaleX:o,scaleY:u}}function Ti(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(a,o){var u=[],s=[];return a=t(a),o=t(o),function(t,r,i,a,o,u){if(t!==i||r!==a){var s=o.push("translate(",null,n,null,e);u.push({i:s-4,x:vi(t,i)},{i:s-2,x:vi(r,a)})}else(i||a)&&o.push("translate("+i+n+a+e)}(a.translateX,a.translateY,o.translateX,o.translateY,u,s),function(t,n,e,a){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),a.push({i:e.push(i(e)+"rotate(",null,r)-2,x:vi(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(a.rotate,o.rotate,u,s),function(t,n,e,a){t!==n?a.push({i:e.push(i(e)+"skewX(",null,r)-2,x:vi(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(a.skewX,o.skewX,u,s),function(t,n,e,r,a,o){if(t!==e||n!==r){var u=a.push(i(a)+"scale(",null,",",null,")");o.push({i:u-4,x:vi(t,e)},{i:u-2,x:vi(n,r)})}else 1===e&&1===r||a.push(i(a)+"scale("+e+","+r+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,u,s),a=o=null,function(t){for(var n,e=-1,r=s.length;++e<r;)u[(n=s[e]).i]=n.x(t);return u.join("")}}}var Ci=Ti(function(t){const n=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?Ei:Ai(n.a,n.b,n.c,n.d,n.e,n.f)},"px, ","px)","deg)"),ki=Ti(function(t){return null==t?Ei:(Si||(Si=document.createElementNS("http://www.w3.org/2000/svg","g")),Si.setAttribute("transform",t),(t=Si.transform.baseVal.consolidate())?Ai((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):Ei)},", ",")",")");function qi(t){return((t=Math.exp(t))+1/t)/2}var Fi=function t(n,e,r){function i(t,i){var a,o,u=t[0],s=t[1],c=t[2],l=i[2],f=i[0]-u,h=i[1]-s,d=f*f+h*h;if(d<1e-12)o=Math.log(l/c)/n,a=function(t){return[u+t*f,s+t*h,c*Math.exp(n*t*o)]};else{var p=Math.sqrt(d),m=(l*l-c*c+r*d)/(2*c*e*p),g=(l*l-c*c-r*d)/(2*l*e*p),v=Math.log(Math.sqrt(m*m+1)-m),y=Math.log(Math.sqrt(g*g+1)-g);o=(y-v)/n,a=function(t){var r=t*o,i=qi(v),a=c/(e*p)*(i*function(t){return((t=Math.exp(2*t))-1)/(t+1)}(n*r+v)-function(t){return((t=Math.exp(t))-1/t)/2}(v));return[u+a*f,s+a*h,c*i/qi(n*r+v)]}}return a.duration=1e3*o*n/Math.SQRT2,a}return i.rho=function(n){var e=Math.max(.001,+n),r=e*e;return t(e,r,r*r)},i}(Math.SQRT2,2,4);function Di(t){return function(n,e){var r=t((n=_r(n)).h,(e=_r(e)).h),i=si(n.s,e.s),a=si(n.l,e.l),o=si(n.opacity,e.opacity);return function(t){return n.h=r(t),n.s=i(t),n.l=a(t),n.opacity=o(t),n+""}}}var zi=Di(ui),Ii=Di(si);function Pi(t){return function(n,e){var r=t((n=$r(n)).h,(e=$r(e)).h),i=si(n.c,e.c),a=si(n.l,e.l),o=si(n.opacity,e.opacity);return function(t){return n.h=r(t),n.c=i(t),n.l=a(t),n.opacity=o(t),n+""}}}var Ri=Pi(ui),Oi=Pi(si);function Vi(t){return function n(e){function r(n,r){var i=t((n=ti(n)).h,(r=ti(r)).h),a=si(n.s,r.s),o=si(n.l,r.l),u=si(n.opacity,r.opacity);return function(t){return n.h=i(t),n.s=a(t),n.l=o(Math.pow(t,e)),n.opacity=u(t),n+""}}return e=+e,r.gamma=n,r}(1)}var ji=Vi(ui),Li=Vi(si);function Bi(t,n){void 0===n&&(n=t,t=_i);for(var e=0,r=n.length-1,i=n[0],a=new Array(r<0?0:r);e<r;)a[e]=t(i,i=n[++e]);return function(t){var n=Math.max(0,Math.min(r-1,Math.floor(t*=r)));return a[n](t-n)}}var $i,Ui,Hi=0,Yi=0,Gi=0,Wi=0,Xi=0,Qi=0,Ki="object"==typeof performance&&performance.now?performance:Date,Zi="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Ji(){return Xi||(Zi(ta),Xi=Ki.now()+Qi)}function ta(){Xi=0}function na(){this._call=this._time=this._next=null}function ea(t,n,e){var r=new na;return r.restart(t,n,e),r}function ra(){Ji(),++Hi;for(var t,n=$i;n;)(t=Xi-n._time)>=0&&n._call.call(void 0,t),n=n._next;--Hi}function ia(){Xi=(Wi=Ki.now())+Qi,Hi=Yi=0;try{ra()}finally{Hi=0,function(){for(var t,n,e=$i,r=Infinity;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:$i=n);Ui=t,oa(r)}(),Xi=0}}function aa(){var t=Ki.now(),n=t-Wi;n>1e3&&(Qi-=n,Wi=t)}function oa(t){Hi||(Yi&&(Yi=clearTimeout(Yi)),t-Xi>24?(t<Infinity&&(Yi=setTimeout(ia,t-Ki.now()-Qi)),Gi&&(Gi=clearInterval(Gi))):(Gi||(Wi=Ki.now(),Gi=setInterval(aa,1e3)),Hi=1,Zi(ia)))}function ua(t,n,e){var r=new na;return r.restart(e=>{r.stop(),t(e+n)},n=null==n?0:+n,e),r}na.prototype=ea.prototype={constructor:na,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?Ji():+e)+(null==n?0:+n),this._next||Ui===this||(Ui?Ui._next=this:$i=this,Ui=this),this._call=t,this._time=e,oa()},stop:function(){this._call&&(this._call=null,this._time=Infinity,oa())}};var sa=fn("start","end","cancel","interrupt"),ca=[];function la(t,n,e,r,i,a){var o=t.__transition;if(o){if(e in o)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function a(s){var c,l,f,h;if(1!==e.state)return u();for(c in i)if((h=i[c]).name===e.name){if(3===h.state)return ua(a);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[c]):+c<n&&(h.state=6,h.timer.stop(),h.on.call("cancel",t,t.__data__,h.index,h.group),delete i[c])}if(ua(function(){3===e.state&&(e.state=4,e.timer.restart(o,e.delay,e.time),o(s))}),e.state=2,e.on.call("start",t,t.__data__,e.index,e.group),2===e.state){for(e.state=3,r=new Array(f=e.tween.length),c=0,l=-1;c<f;++c)(h=e.tween[c].value.call(t,t.__data__,e.index,e.group))&&(r[++l]=h);r.length=l+1}}function o(n){for(var i=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(u),e.state=5,1),a=-1,o=r.length;++a<o;)r[a].call(t,i);5===e.state&&(e.on.call("end",t,t.__data__,e.index,e.group),u())}function u(){for(var r in e.state=6,e.timer.stop(),delete i[n],i)return;delete t.__transition}i[n]=e,e.timer=ea(function(t){e.state=1,e.timer.restart(a,e.delay,e.time),e.delay<=t&&a(t-e.delay)},0,e.time)}(t,e,{name:n,index:r,group:i,on:sa,tween:ca,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function fa(t,n){var e=da(t,n);if(e.state>0)throw new Error("too late; already scheduled");return e}function ha(t,n){var e=da(t,n);if(e.state>3)throw new Error("too late; already running");return e}function da(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function pa(t,n){var e,r,i,a=t.__transition,o=!0;if(a){for(i in n=null==n?null:n+"",a)(e=a[i]).name===n?(r=e.state>2&&e.state<5,e.state=6,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete a[i]):o=!1;o&&delete t.__transition}}function ma(t,n){var e,r;return function(){var i=ha(this,t),a=i.tween;if(a!==e)for(var o=0,u=(r=e=a).length;o<u;++o)if(r[o].name===n){(r=r.slice()).splice(o,1);break}i.tween=r}}function ga(t,n,e){var r,i;if("function"!=typeof e)throw new Error;return function(){var a=ha(this,t),o=a.tween;if(o!==r){i=(r=o).slice();for(var u={name:n,value:e},s=0,c=i.length;s<c;++s)if(i[s].name===n){i[s]=u;break}s===c&&i.push(u)}a.tween=i}}function va(t,n,e){var r=t._id;return t.each(function(){var t=ha(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)}),function(t){return da(t,r).value[n]}}function ya(t,n){var e;return("number"==typeof n?vi:n instanceof cr?ci:(e=cr(n))?(n=e,ci):xi)(t,n)}function ba(t){return function(){this.removeAttribute(t)}}function wa(t){return function(){this.removeAttributeNS(t.space,t.local)}}function xa(t,n,e){var r,i,a=e+"";return function(){var o=this.getAttribute(t);return o===a?null:o===r?i:i=n(r=o,e)}}function _a(t,n,e){var r,i,a=e+"";return function(){var o=this.getAttributeNS(t.space,t.local);return o===a?null:o===r?i:i=n(r=o,e)}}function Ma(t,n,e){var r,i,a;return function(){var o,u,s=e(this);if(null!=s)return(o=this.getAttribute(t))===(u=s+"")?null:o===r&&u===i?a:(i=u,a=n(r=o,s));this.removeAttribute(t)}}function Sa(t,n,e){var r,i,a;return function(){var o,u,s=e(this);if(null!=s)return(o=this.getAttributeNS(t.space,t.local))===(u=s+"")?null:o===r&&u===i?a:(i=u,a=n(r=o,s));this.removeAttributeNS(t.space,t.local)}}function Na(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}(t,i)),e}return i._value=n,i}function Ea(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}(t,i)),e}return i._value=n,i}function Aa(t,n){return function(){fa(this,t).delay=+n.apply(this,arguments)}}function Ta(t,n){return n=+n,function(){fa(this,t).delay=n}}function Ca(t,n){return function(){ha(this,t).duration=+n.apply(this,arguments)}}function ka(t,n){return n=+n,function(){ha(this,t).duration=n}}var qa=Ee.prototype.constructor;function Fa(t){return function(){this.style.removeProperty(t)}}var Da=0;function za(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function Ia(t){return Ee().transition(t)}function Pa(){return++Da}var Ra=Ee.prototype;function Oa(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function Va(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}za.prototype=Ia.prototype={constructor:za,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=_n(t));for(var r=this._groups,i=r.length,a=new Array(i),o=0;o<i;++o)for(var u,s,c=r[o],l=c.length,f=a[o]=new Array(l),h=0;h<l;++h)(u=c[h])&&(s=t.call(u,u.__data__,h,c))&&("__data__"in u&&(s.__data__=u.__data__),f[h]=s,la(f[h],n,e,h,f,da(u,e)));return new za(a,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=Nn(t));for(var r=this._groups,i=r.length,a=[],o=[],u=0;u<i;++u)for(var s,c=r[u],l=c.length,f=0;f<l;++f)if(s=c[f]){for(var h,d=t.call(s,s.__data__,f,c),p=da(s,e),m=0,g=d.length;m<g;++m)(h=d[m])&&la(h,n,e,m,d,p);a.push(d),o.push(s)}return new za(a,o,n,e)},selectChild:Ra.selectChild,selectChildren:Ra.selectChildren,filter:function(t){"function"!=typeof t&&(t=En(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var a,o=n[i],u=o.length,s=r[i]=[],c=0;c<u;++c)(a=o[c])&&t.call(a,a.__data__,c,o)&&s.push(a);return new za(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=Math.min(r,e.length),a=new Array(r),o=0;o<i;++o)for(var u,s=n[o],c=e[o],l=s.length,f=a[o]=new Array(l),h=0;h<l;++h)(u=s[h]||c[h])&&(f[h]=u);for(;o<r;++o)a[o]=n[o];return new za(a,this._parents,this._name,this._id)},selection:function(){return new qa(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=Pa(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o,u=r[a],s=u.length,c=0;c<s;++c)if(o=u[c]){var l=da(o,n);la(o,t,e,c,u,{time:l.time+l.delay+l.duration,delay:0,duration:l.duration,ease:l.ease})}return new za(r,this._parents,t,e)},call:Ra.call,nodes:Ra.nodes,node:Ra.node,size:Ra.size,empty:Ra.empty,each:Ra.each,on:function(t,n){var e=this._id;return arguments.length<2?da(this.node(),e).on.on(t):this.each(function(t,n,e){var r,i,a=function(t){return(t+"").trim().split(/^|\s+/).every(function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||"start"===t})}(n)?fa:ha;return function(){var o=a(this,t),u=o.on;u!==r&&(i=(r=u).copy()).on(n,e),o.on=i}}(e,t,n))},attr:function(t,n){var e=vn(t),r="transform"===e?ki:ya;return this.attrTween(t,"function"==typeof n?(e.local?Sa:Ma)(e,r,va(this,"attr."+t,n)):null==n?(e.local?wa:ba)(e):(e.local?_a:xa)(e,r,n))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=vn(t);return this.tween(e,(r.local?Na:Ea)(r,n))},style:function(t,n,e){var r="transform"==(t+="")?Ci:ya;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var a=Xn(this,t),o=(this.style.removeProperty(t),Xn(this,t));return a===o?null:a===e&&o===r?i:i=n(e=a,r=o)}}(t,r)).on("end.style."+t,Fa(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,a;return function(){var o=Xn(this,t),u=e(this),s=u+"";return null==u&&(this.style.removeProperty(t),s=u=Xn(this,t)),o===s?null:o===r&&s===i?a:(i=s,a=n(r=o,u))}}(t,r,va(this,"style."+t,n))).each(function(t,n){var e,r,i,a,o="style."+n,u="end."+o;return function(){var s=ha(this,t),c=s.on,l=null==s.value[o]?a||(a=Fa(n)):void 0;c===e&&i===l||(r=(e=c).copy()).on(u,i=l),s.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,a=e+"";return function(){var o=Xn(this,t);return o===a?null:o===r?i:i=n(r=o,e)}}(t,r,n),e).on("end.style."+t,null)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,function(t,n,e){var r,i;function a(){var a=n.apply(this,arguments);return a!==i&&(r=(i=a)&&function(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}(t,a,e)),r}return a._value=n,a}(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(va(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,function(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&function(t){return function(n){this.textContent=t.call(this,n)}}(r)),n}return r._value=t,r}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=da(this.node(),e).tween,a=0,o=i.length;a<o;++a)if((r=i[a]).name===t)return r.value;return null}return this.each((null==n?ma:ga)(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?Aa:Ta)(n,t)):da(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?Ca:ka)(n,t)):da(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(function(t,n){if("function"!=typeof n)throw new Error;return function(){ha(this,t).ease=n}}(n,t)):da(this.node(),n).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,n){return function(){var e=n.apply(this,arguments);if("function"!=typeof e)throw new Error;ha(this,t).ease=e}}(this._id,t))},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise(function(a,o){var u={value:o},s={value:function(){0===--i&&a()}};e.each(function(){var e=ha(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(u),n._.interrupt.push(u),n._.end.push(s)),e.on=n}),0===i&&a()})},[Symbol.iterator]:Ra[Symbol.iterator]};var ja=function t(n){function e(t){return Math.pow(t,n)}return n=+n,e.exponent=t,e}(3),La=function t(n){function e(t){return 1-Math.pow(1-t,n)}return n=+n,e.exponent=t,e}(3),Ba=function t(n){function e(t){return((t*=2)<=1?Math.pow(t,n):2-Math.pow(2-t,n))/2}return n=+n,e.exponent=t,e}(3),$a=Math.PI,Ua=$a/2;function Ha(t){return(1-Math.cos($a*t))/2}function Ya(t){return 1.0009775171065494*(Math.pow(2,-10*t)-.0009765625)}function Ga(t){return((t*=2)<=1?Ya(1-t):2-Ya(t-1))/2}function Wa(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}var Xa=4/11,Qa=6/11,Ka=8/11,Za=9/11,Ja=10/11,to=21/22,no=7.5625;function eo(t){return(t=+t)<Xa?no*t*t:t<Ka?no*(t-=Qa)*t+.75:t<Ja?no*(t-=Za)*t+.9375:no*(t-=to)*t+.984375}var ro=1.70158,io=function t(n){function e(t){return(t=+t)*t*(n*(t-1)+t)}return n=+n,e.overshoot=t,e}(ro),ao=function t(n){function e(t){return--t*t*((t+1)*n+t)+1}return n=+n,e.overshoot=t,e}(ro),oo=function t(n){function e(t){return((t*=2)<1?t*t*((n+1)*t-n):(t-=2)*t*((n+1)*t+n)+2)/2}return n=+n,e.overshoot=t,e}(ro),uo=2*Math.PI,so=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=uo);function i(t){return n*Ya(- --t)*Math.sin((r-t)/e)}return i.amplitude=function(n){return t(n,e*uo)},i.period=function(e){return t(n,e)},i}(1,.3),co=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=uo);function i(t){return 1-n*Ya(t=+t)*Math.sin((t+r)/e)}return i.amplitude=function(n){return t(n,e*uo)},i.period=function(e){return t(n,e)},i}(1,.3),lo=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=uo);function i(t){return((t=2*t-1)<0?n*Ya(-t)*Math.sin((r-t)/e):2-n*Ya(t)*Math.sin((r+t)/e))/2}return i.amplitude=function(n){return t(n,e*uo)},i.period=function(e){return t(n,e)},i}(1,.3),fo={time:null,delay:0,duration:250,ease:Va};function ho(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))throw new Error(`transition ${n} not found`);return e}Ee.prototype.interrupt=function(t){return this.each(function(){pa(this,t)})},Ee.prototype.transition=function(t){var n,e;t instanceof za?(n=t._id,t=t._name):(n=Pa(),(e=fo).time=Ji(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o,u=r[a],s=u.length,c=0;c<s;++c)(o=u[c])&&la(o,t,n,c,u,e||ho(o,n));return new za(r,this._parents,t,n)};var po=[null],mo=t=>()=>t;function go(t,{sourceEvent:n,target:e,selection:r,mode:i,dispatch:a}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},selection:{value:r,enumerable:!0,configurable:!0},mode:{value:i,enumerable:!0,configurable:!0},_:{value:a}})}function vo(t){t.preventDefault(),t.stopImmediatePropagation()}var yo={name:"drag"},bo={name:"space"},wo={name:"handle"},xo={name:"center"};const{abs:_o,max:Mo,min:So}=Math;function No(t){return[+t[0],+t[1]]}function Eo(t){return[No(t[0]),No(t[1])]}var Ao={name:"x",handles:["w","e"].map(Io),input:function(t,n){return null==t?null:[[+t[0],n[0][1]],[+t[1],n[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},To={name:"y",handles:["n","s"].map(Io),input:function(t,n){return null==t?null:[[n[0][0],+t[0]],[n[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},Co={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(Io),input:function(t){return null==t?null:Eo(t)},output:function(t){return t}},ko={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},qo={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},Fo={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},Do={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},zo={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function Io(t){return{type:t}}function Po(t){return!t.ctrlKey&&!t.button}function Ro(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function Oo(){return navigator.maxTouchPoints||"ontouchstart"in this}function Vo(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function jo(t){var n,e=Ro,r=Po,i=Oo,a=!0,o=fn("start","brush","end"),u=6;function s(n){var e=n.property("__brush",m).selectAll(".overlay").data([Io("overlay")]);e.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",ko.overlay).merge(e).each(function(){var t=Vo(this).extent;Ae(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])}),n.selectAll(".selection").data([Io("selection")]).enter().append("rect").attr("class","selection").attr("cursor",ko.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=n.selectAll(".handle").data(t.handles,function(t){return t.type});r.exit().remove(),r.enter().append("rect").attr("class",function(t){return"handle handle--"+t.type}).attr("cursor",function(t){return ko[t.type]}),n.each(c).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",h).filter(i).on("touchstart.brush",h).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function c(){var t=Ae(this),n=Vo(this).selection;n?(t.selectAll(".selection").style("display",null).attr("x",n[0][0]).attr("y",n[0][1]).attr("width",n[1][0]-n[0][0]).attr("height",n[1][1]-n[0][1]),t.selectAll(".handle").style("display",null).attr("x",function(t){return"e"===t.type[t.type.length-1]?n[1][0]-u/2:n[0][0]-u/2}).attr("y",function(t){return"s"===t.type[0]?n[1][1]-u/2:n[0][1]-u/2}).attr("width",function(t){return"n"===t.type||"s"===t.type?n[1][0]-n[0][0]+u:u}).attr("height",function(t){return"e"===t.type||"w"===t.type?n[1][1]-n[0][1]+u:u})):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function l(t,n,e){var r=t.__brush.emitter;return!r||e&&r.clean?new f(t,n,e):r}function f(t,n,e){this.that=t,this.args=n,this.state=t.__brush,this.active=0,this.clean=e}function h(e){if((!n||e.touches)&&r.apply(this,arguments)){var i,o,u,s,f,h,d,p,m,g,v,y=this,b=e.target.__data__.type,w="selection"===(a&&e.metaKey?b="overlay":b)?yo:a&&e.altKey?xo:wo,x=t===To?null:Do[b],_=t===Ao?null:zo[b],M=Vo(y),S=M.extent,N=M.selection,E=S[0][0],A=S[0][1],T=S[1][0],C=S[1][1],k=0,q=0,F=x&&_&&a&&e.shiftKey,D=Array.from(e.touches||[e],t=>{const n=t.identifier;return(t=Fe(t,y)).point0=t.slice(),t.identifier=n,t});pa(y);var z=l(y,arguments,!0).beforestart();if("overlay"===b){N&&(m=!0);const n=[D[0],D[1]||D[0]];M.selection=N=[[i=t===To?E:So(n[0][0],n[1][0]),u=t===Ao?A:So(n[0][1],n[1][1])],[f=t===To?T:Mo(n[0][0],n[1][0]),d=t===Ao?C:Mo(n[0][1],n[1][1])]],D.length>1&&V(e)}else i=N[0][0],u=N[0][1],f=N[1][0],d=N[1][1];o=i,s=u,h=f,p=d;var I=Ae(y).attr("pointer-events","none"),P=I.selectAll(".overlay").attr("cursor",ko[b]);if(e.touches)z.moved=O,z.ended=j;else{var R=Ae(e.view).on("mousemove.brush",O,!0).on("mouseup.brush",j,!0);a&&R.on("keydown.brush",function(t){switch(t.keyCode){case 16:F=x&&_;break;case 18:w===wo&&(x&&(f=h-k*x,i=o+k*x),_&&(d=p-q*_,u=s+q*_),w=xo,V(t));break;case 32:w!==wo&&w!==xo||(x<0?f=h-k:x>0&&(i=o-k),_<0?d=p-q:_>0&&(u=s-q),w=bo,P.attr("cursor",ko.selection),V(t));break;default:return}vo(t)},!0).on("keyup.brush",function(t){switch(t.keyCode){case 16:F&&(g=v=F=!1,V(t));break;case 18:w===xo&&(x<0?f=h:x>0&&(i=o),_<0?d=p:_>0&&(u=s),w=wo,V(t));break;case 32:w===bo&&(t.altKey?(x&&(f=h-k*x,i=o+k*x),_&&(d=p-q*_,u=s+q*_),w=xo):(x<0?f=h:x>0&&(i=o),_<0?d=p:_>0&&(u=s),w=wo),P.attr("cursor",ko[b]),V(t));break;default:return}vo(t)},!0),Re(e.view)}c.call(y),z.start(e,w.name)}function O(t){for(const n of t.changedTouches||[t])for(const t of D)t.identifier===n.identifier&&(t.cur=Fe(n,y));if(F&&!g&&!v&&1===D.length){const t=D[0];_o(t.cur[0]-t[0])>_o(t.cur[1]-t[1])?v=!0:g=!0}for(const t of D)t.cur&&(t[0]=t.cur[0],t[1]=t.cur[1]);m=!0,vo(t),V(t)}function V(t){const n=D[0],e=n.point0;var r;switch(k=n[0]-e[0],q=n[1]-e[1],w){case bo:case yo:x&&(k=Mo(E-i,So(T-f,k)),o=i+k,h=f+k),_&&(q=Mo(A-u,So(C-d,q)),s=u+q,p=d+q);break;case wo:D[1]?(x&&(o=Mo(E,So(T,D[0][0])),h=Mo(E,So(T,D[1][0])),x=1),_&&(s=Mo(A,So(C,D[0][1])),p=Mo(A,So(C,D[1][1])),_=1)):(x<0?(k=Mo(E-i,So(T-i,k)),o=i+k,h=f):x>0&&(k=Mo(E-f,So(T-f,k)),o=i,h=f+k),_<0?(q=Mo(A-u,So(C-u,q)),s=u+q,p=d):_>0&&(q=Mo(A-d,So(C-d,q)),s=u,p=d+q));break;case xo:x&&(o=Mo(E,So(T,i-k*x)),h=Mo(E,So(T,f+k*x))),_&&(s=Mo(A,So(C,u-q*_)),p=Mo(A,So(C,d+q*_)))}h<o&&(x*=-1,r=i,i=f,f=r,r=o,o=h,h=r,b in qo&&P.attr("cursor",ko[b=qo[b]])),p<s&&(_*=-1,r=u,u=d,d=r,r=s,s=p,p=r,b in Fo&&P.attr("cursor",ko[b=Fo[b]])),M.selection&&(N=M.selection),g&&(o=N[0][0],h=N[1][0]),v&&(s=N[0][1],p=N[1][1]),N[0][0]===o&&N[0][1]===s&&N[1][0]===h&&N[1][1]===p||(M.selection=[[o,s],[h,p]],c.call(y),z.brush(t,w.name))}function j(t){if(function(t){t.stopImmediatePropagation()}(t),t.touches){if(t.touches.length)return;n&&clearTimeout(n),n=setTimeout(function(){n=null},500)}else Oe(t.view,m),R.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);I.attr("pointer-events","all"),P.attr("cursor",ko.overlay),M.selection&&(N=M.selection),function(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}(N)&&(M.selection=null,c.call(y)),z.end(t,w.name)}}function d(t){l(this,arguments).moved(t)}function p(t){l(this,arguments).ended(t)}function m(){var n=this.__brush||{selection:null};return n.extent=Eo(e.apply(this,arguments)),n.dim=t,n}return s.move=function(n,e,r){n.tween?n.on("start.brush",function(t){l(this,arguments).beforestart().start(t)}).on("interrupt.brush end.brush",function(t){l(this,arguments).end(t)}).tween("brush",function(){var n=this,r=n.__brush,i=l(n,arguments),a=r.selection,o=t.input("function"==typeof e?e.apply(this,arguments):e,r.extent),u=_i(a,o);function s(t){r.selection=1===t&&null===o?null:u(t),c.call(n),i.brush()}return null!==a&&null!==o?s:s(1)}):n.each(function(){var n=this,i=arguments,a=n.__brush,o=t.input("function"==typeof e?e.apply(n,i):e,a.extent),u=l(n,i).beforestart();pa(n),a.selection=null===o?null:o,c.call(n),u.start(r).brush(r).end(r)})},s.clear=function(t,n){s.move(t,null,n)},f.prototype={beforestart:function(){return 1===++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(t,n){return this.starting?(this.starting=!1,this.emit("start",t,n)):this.emit("brush",t),this},brush:function(t,n){return this.emit("brush",t,n),this},end:function(t,n){return 0===--this.active&&(delete this.state.emitter,this.emit("end",t,n)),this},emit:function(n,e,r){var i=Ae(this.that).datum();o.call(n,this.that,new go(n,{sourceEvent:e,target:s,selection:t.output(this.state.selection),mode:r,dispatch:o}),i)}},s.extent=function(t){return arguments.length?(e="function"==typeof t?t:mo(Eo(t)),s):e},s.filter=function(t){return arguments.length?(r="function"==typeof t?t:mo(!!t),s):r},s.touchable=function(t){return arguments.length?(i="function"==typeof t?t:mo(!!t),s):i},s.handleSize=function(t){return arguments.length?(u=+t,s):u},s.keyModifiers=function(t){return arguments.length?(a=!!t,s):a},s.on=function(){var t=o.on.apply(o,arguments);return t===o?s:t},s}var Lo=Math.abs,Bo=Math.cos,$o=Math.sin,Uo=Math.PI,Ho=Uo/2,Yo=2*Uo,Go=Math.max,Wo=1e-12;function Xo(t,n){return Array.from({length:n-t},(n,e)=>t+e)}function Qo(t,n){var e=0,r=null,i=null,a=null;function o(o){var u,s=o.length,c=new Array(s),l=Xo(0,s),f=new Array(s*s),h=new Array(s),d=0;o=Float64Array.from({length:s*s},n?(t,n)=>o[n%s][n/s|0]:(t,n)=>o[n/s|0][n%s]);for(let n=0;n<s;++n){let e=0;for(let r=0;r<s;++r)e+=o[n*s+r]+t*o[r*s+n];d+=c[n]=e}u=(d=Go(0,Yo-e*s)/d)?e:Yo/s;{let n=0;r&&l.sort((t,n)=>r(c[t],c[n]));for(const e of l){const r=n;if(t){const t=Xo(1+~s,s).filter(t=>t<0?o[~t*s+e]:o[e*s+t]);i&&t.sort((t,n)=>i(t<0?-o[~t*s+e]:o[e*s+t],n<0?-o[~n*s+e]:o[e*s+n]));for(const r of t)r<0?(f[~r*s+e]||(f[~r*s+e]={source:null,target:null})).target={index:e,startAngle:n,endAngle:n+=o[~r*s+e]*d,value:o[~r*s+e]}:(f[e*s+r]||(f[e*s+r]={source:null,target:null})).source={index:e,startAngle:n,endAngle:n+=o[e*s+r]*d,value:o[e*s+r]};h[e]={index:e,startAngle:r,endAngle:n,value:c[e]}}else{const t=Xo(0,s).filter(t=>o[e*s+t]||o[t*s+e]);i&&t.sort((t,n)=>i(o[e*s+t],o[e*s+n]));for(const r of t){let t;if(e<r?(t=f[e*s+r]||(f[e*s+r]={source:null,target:null}),t.source={index:e,startAngle:n,endAngle:n+=o[e*s+r]*d,value:o[e*s+r]}):(t=f[r*s+e]||(f[r*s+e]={source:null,target:null}),t.target={index:e,startAngle:n,endAngle:n+=o[e*s+r]*d,value:o[e*s+r]},e===r&&(t.source=t.target)),t.source&&t.target&&t.source.value<t.target.value){const n=t.source;t.source=t.target,t.target=n}}h[e]={index:e,startAngle:r,endAngle:n,value:c[e]}}n+=u}}return(f=Object.values(f)).groups=h,a?f.sort(a):f}return o.padAngle=function(t){return arguments.length?(e=Go(0,t),o):e},o.sortGroups=function(t){return arguments.length?(r=t,o):r},o.sortSubgroups=function(t){return arguments.length?(i=t,o):i},o.sortChords=function(t){return arguments.length?(null==t?a=null:(n=t,a=function(t,e){return n(t.source.value+t.target.value,e.source.value+e.target.value)})._=t,o):a&&a._;var n},o}const Ko=Math.PI,Zo=2*Ko,Jo=1e-6,tu=Zo-Jo;function nu(t){this._+=t[0];for(let n=1,e=t.length;n<e;++n)this._+=arguments[n]+t[n]}class eu{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==t?nu:function(t){let n=Math.floor(t);if(!(n>=0))throw new Error(`invalid digits: ${t}`);if(n>15)return nu;const e=10**n;return function(t){this._+=t[0];for(let n=1,r=t.length;n<r;++n)this._+=Math.round(arguments[n]*e)/e+t[n]}}(t)}moveTo(t,n){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,n){this._append`L${this._x1=+t},${this._y1=+n}`}quadraticCurveTo(t,n,e,r){this._append`Q${+t},${+n},${this._x1=+e},${this._y1=+r}`}bezierCurveTo(t,n,e,r,i,a){this._append`C${+t},${+n},${+e},${+r},${this._x1=+i},${this._y1=+a}`}arcTo(t,n,e,r,i){if(t=+t,n=+n,e=+e,r=+r,(i=+i)<0)throw new Error(`negative radius: ${i}`);let a=this._x1,o=this._y1,u=e-t,s=r-n,c=a-t,l=o-n,f=c*c+l*l;if(null===this._x1)this._append`M${this._x1=t},${this._y1=n}`;else if(f>Jo)if(Math.abs(l*u-s*c)>Jo&&i){let h=e-a,d=r-o,p=u*u+s*s,m=h*h+d*d,g=Math.sqrt(p),v=Math.sqrt(f),y=i*Math.tan((Ko-Math.acos((p+f-m)/(2*g*v)))/2),b=y/v,w=y/g;Math.abs(b-1)>Jo&&this._append`L${t+b*c},${n+b*l}`,this._append`A${i},${i},0,0,${+(l*h>c*d)},${this._x1=t+w*u},${this._y1=n+w*s}`}else this._append`L${this._x1=t},${this._y1=n}`}arc(t,n,e,r,i,a){if(t=+t,n=+n,a=!!a,(e=+e)<0)throw new Error(`negative radius: ${e}`);let o=e*Math.cos(r),u=e*Math.sin(r),s=t+o,c=n+u,l=1^a,f=a?r-i:i-r;null===this._x1?this._append`M${s},${c}`:(Math.abs(this._x1-s)>Jo||Math.abs(this._y1-c)>Jo)&&this._append`L${s},${c}`,e&&(f<0&&(f=f%Zo+Zo),f>tu?this._append`A${e},${e},0,1,${l},${t-o},${n-u}A${e},${e},0,1,${l},${this._x1=s},${this._y1=c}`:f>Jo&&this._append`A${e},${e},0,${+(f>=Ko)},${l},${this._x1=t+e*Math.cos(i)},${this._y1=n+e*Math.sin(i)}`)}rect(t,n,e,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${e=+e}v${+r}h${-e}Z`}toString(){return this._}}function ru(){return new eu}ru.prototype=eu.prototype;var iu=Array.prototype.slice;function au(t){return function(){return t}}function ou(t){return t.source}function uu(t){return t.target}function su(t){return t.radius}function cu(t){return t.startAngle}function lu(t){return t.endAngle}function fu(){return 0}function hu(){return 10}function du(t){var n=ou,e=uu,r=su,i=su,a=cu,o=lu,u=fu,s=null;function c(){var c,l=n.apply(this,arguments),f=e.apply(this,arguments),h=u.apply(this,arguments)/2,d=iu.call(arguments),p=+r.apply(this,(d[0]=l,d)),m=a.apply(this,d)-Ho,g=o.apply(this,d)-Ho,v=+i.apply(this,(d[0]=f,d)),y=a.apply(this,d)-Ho,b=o.apply(this,d)-Ho;if(s||(s=c=ru()),h>Wo&&(Lo(g-m)>2*h+Wo?g>m?(m+=h,g-=h):(m-=h,g+=h):m=g=(m+g)/2,Lo(b-y)>2*h+Wo?b>y?(y+=h,b-=h):(y-=h,b+=h):y=b=(y+b)/2),s.moveTo(p*Bo(m),p*$o(m)),s.arc(0,0,p,m,g),m!==y||g!==b)if(t){var w=v-+t.apply(this,arguments),x=(y+b)/2;s.quadraticCurveTo(0,0,w*Bo(y),w*$o(y)),s.lineTo(v*Bo(x),v*$o(x)),s.lineTo(w*Bo(b),w*$o(b))}else s.quadraticCurveTo(0,0,v*Bo(y),v*$o(y)),s.arc(0,0,v,y,b);if(s.quadraticCurveTo(0,0,p*Bo(m),p*$o(m)),s.closePath(),c)return s=null,c+""||null}return t&&(c.headRadius=function(n){return arguments.length?(t="function"==typeof n?n:au(+n),c):t}),c.radius=function(t){return arguments.length?(r=i="function"==typeof t?t:au(+t),c):r},c.sourceRadius=function(t){return arguments.length?(r="function"==typeof t?t:au(+t),c):r},c.targetRadius=function(t){return arguments.length?(i="function"==typeof t?t:au(+t),c):i},c.startAngle=function(t){return arguments.length?(a="function"==typeof t?t:au(+t),c):a},c.endAngle=function(t){return arguments.length?(o="function"==typeof t?t:au(+t),c):o},c.padAngle=function(t){return arguments.length?(u="function"==typeof t?t:au(+t),c):u},c.source=function(t){return arguments.length?(n=t,c):n},c.target=function(t){return arguments.length?(e=t,c):e},c.context=function(t){return arguments.length?(s=null==t?null:t,c):s},c}var pu=Array.prototype.slice;function mu(t,n){return t-n}var gu=t=>()=>t;function vu(t,n){for(var e,r=-1,i=n.length;++r<i;)if(e=yu(t,n[r]))return e;return 0}function yu(t,n){for(var e=n[0],r=n[1],i=-1,a=0,o=t.length,u=o-1;a<o;u=a++){var s=t[a],c=s[0],l=s[1],f=t[u],h=f[0],d=f[1];if(bu(s,f,n))return 0;l>r!=d>r&&e<(h-c)*(r-l)/(d-l)+c&&(i=-i)}return i}function bu(t,n,e){var r,i,a,o;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])===(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&(i=t[r=+(t[0]===n[0])],o=n[r],i<=(a=e[r])&&a<=o||o<=a&&a<=i)}function wu(){}var xu=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function _u(){var t=1,n=1,e=Tt,r=u;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(mu);else{const e=Z(t,Mu);for(n=St(...At(e[0],e[1],n),n);n[n.length-1]>=e[1];)n.pop();for(;n[1]<e[0];)n.shift()}return n.map(n=>a(t,n))}function a(e,i){const a=null==i?NaN:+i;if(isNaN(a))throw new Error(`invalid value: ${i}`);var u=[],s=[];return function(e,r,i){var a,u,s,c,l,f,h=new Array,d=new Array;for(a=u=-1,c=Su(e[0],r),xu[c<<1].forEach(p);++a<t-1;)s=c,c=Su(e[a+1],r),xu[s|c<<1].forEach(p);for(xu[0|c].forEach(p);++u<n-1;){for(a=-1,c=Su(e[u*t+t],r),l=Su(e[u*t],r),xu[c<<1|l<<2].forEach(p);++a<t-1;)s=c,c=Su(e[u*t+t+a+1],r),f=l,l=Su(e[u*t+a+1],r),xu[s|c<<1|l<<2|f<<3].forEach(p);xu[c|l<<3].forEach(p)}for(a=-1,xu[(l=e[u*t]>=r)<<2].forEach(p);++a<t-1;)f=l,l=Su(e[u*t+a+1],r),xu[l<<2|f<<3].forEach(p);function p(t){var n,e,r=[t[0][0]+a,t[0][1]+u],s=[t[1][0]+a,t[1][1]+u],c=o(r),l=o(s);(n=d[c])?(e=h[l])?(delete d[n.end],delete h[e.start],n===e?(n.ring.push(s),i(n.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[n.end],n.ring.push(s),d[n.end=l]=n):(n=h[l])?(e=d[c])?(delete h[n.start],delete d[e.end],n===e?(n.ring.push(s),i(n.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[n.start],n.ring.unshift(r),h[n.start=c]=n):h[c]=d[l]={start:c,end:l,ring:[r,s]}}xu[l<<3].forEach(p)}(e,a,function(t){r(t,e,a),function(t){for(var n=0,e=t.length,r=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++n<e;)r+=t[n-1][1]*t[n][0]-t[n-1][0]*t[n][1];return r}(t)>0?u.push([t]):s.push(t)}),s.forEach(function(t){for(var n,e=0,r=u.length;e<r;++e)if(-1!==vu((n=u[e])[0],t))return void n.push(t)}),{type:"MultiPolygon",value:i,coordinates:u}}function o(n){return 2*n[0]+n[1]*(t+1)*4}function u(e,r,i){e.forEach(function(e){var a=e[0],o=e[1],u=0|a,s=0|o,c=Nu(r[s*t+u]);a>0&&a<t&&u===a&&(e[0]=Eu(a,Nu(r[s*t+u-1]),c,i)),o>0&&o<n&&s===o&&(e[1]=Eu(o,Nu(r[(s-1)*t+u]),c,i))})}return i.contour=a,i.size=function(e){if(!arguments.length)return[t,n];var r=Math.floor(e[0]),a=Math.floor(e[1]);if(!(r>=0&&a>=0))throw new Error("invalid size");return t=r,n=a,i},i.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?gu(pu.call(t)):gu(t),i):e},i.smooth=function(t){return arguments.length?(r=t?u:wu,i):r===u},i}function Mu(t){return isFinite(t)?t:NaN}function Su(t,n){return null!=t&&+t>=n}function Nu(t){return null==t||isNaN(t=+t)?-Infinity:t}function Eu(t,n,e,r){const i=r-n,a=e-n,o=isFinite(i)||isFinite(a)?i/a:Math.sign(i)/Math.sign(a);return isNaN(o)?t:t+o-.5}function Au(t){return t[0]}function Tu(t){return t[1]}function Cu(){return 1}const ku=134217729;function qu(t,n,e,r,i){let a,o,u,s,c=n[0],l=r[0],f=0,h=0;l>c==l>-c?(a=c,c=n[++f]):(a=l,l=r[++h]);let d=0;if(f<t&&h<e)for(l>c==l>-c?(o=c+a,u=a-(o-c),c=n[++f]):(o=l+a,u=a-(o-l),l=r[++h]),a=o,0!==u&&(i[d++]=u);f<t&&h<e;)l>c==l>-c?(o=a+c,s=o-a,u=a-(o-s)+(c-s),c=n[++f]):(o=a+l,s=o-a,u=a-(o-s)+(l-s),l=r[++h]),a=o,0!==u&&(i[d++]=u);for(;f<t;)o=a+c,s=o-a,u=a-(o-s)+(c-s),c=n[++f],a=o,0!==u&&(i[d++]=u);for(;h<e;)o=a+l,s=o-a,u=a-(o-s)+(l-s),l=r[++h],a=o,0!==u&&(i[d++]=u);return 0===a&&0!==d||(i[d++]=a),d}function Fu(t){return new Float64Array(t)}const Du=Fu(4),zu=Fu(8),Iu=Fu(12),Pu=Fu(16),Ru=Fu(4);function Ou(t,n,e,r,i,a){const o=(n-a)*(e-i),u=(t-i)*(r-a),s=o-u,c=Math.abs(o+u);return Math.abs(s)>=33306690738754716e-32*c?s:-function(t,n,e,r,i,a,o){let u,s,c,l,f,h,d,p,m,g,v,y,b,w,x,_,M,S;const N=t-i,E=e-i,A=n-a,T=r-a;w=N*T,h=ku*N,d=h-(h-N),p=N-d,h=ku*T,m=h-(h-T),g=T-m,x=p*g-(w-d*m-p*m-d*g),_=A*E,h=ku*A,d=h-(h-A),p=A-d,h=ku*E,m=h-(h-E),g=E-m,M=p*g-(_-d*m-p*m-d*g),v=x-M,f=x-v,Du[0]=x-(v+f)+(f-M),y=w+v,f=y-w,b=w-(y-f)+(v-f),v=b-_,f=b-v,Du[1]=b-(v+f)+(f-_),S=y+v,f=S-y,Du[2]=y-(S-f)+(v-f),Du[3]=S;let C=function(t,n){let e=n[0];for(let t=1;t<4;t++)e+=n[t];return e}(0,Du),k=22204460492503146e-32*o;if(C>=k||-C>=k)return C;if(f=t-N,u=t-(N+f)+(f-i),f=e-E,c=e-(E+f)+(f-i),f=n-A,s=n-(A+f)+(f-a),f=r-T,l=r-(T+f)+(f-a),0===u&&0===s&&0===c&&0===l)return C;if(k=11093356479670487e-47*o+33306690738754706e-32*Math.abs(C),C+=N*l+T*u-(A*c+E*s),C>=k||-C>=k)return C;w=u*T,h=ku*u,d=h-(h-u),p=u-d,h=ku*T,m=h-(h-T),g=T-m,x=p*g-(w-d*m-p*m-d*g),_=s*E,h=ku*s,d=h-(h-s),p=s-d,h=ku*E,m=h-(h-E),g=E-m,M=p*g-(_-d*m-p*m-d*g),v=x-M,f=x-v,Ru[0]=x-(v+f)+(f-M),y=w+v,f=y-w,b=w-(y-f)+(v-f),v=b-_,f=b-v,Ru[1]=b-(v+f)+(f-_),S=y+v,f=S-y,Ru[2]=y-(S-f)+(v-f),Ru[3]=S;const q=qu(4,Du,4,Ru,zu);w=N*l,h=ku*N,d=h-(h-N),p=N-d,h=ku*l,m=h-(h-l),g=l-m,x=p*g-(w-d*m-p*m-d*g),_=A*c,h=ku*A,d=h-(h-A),p=A-d,h=ku*c,m=h-(h-c),g=c-m,M=p*g-(_-d*m-p*m-d*g),v=x-M,f=x-v,Ru[0]=x-(v+f)+(f-M),y=w+v,f=y-w,b=w-(y-f)+(v-f),v=b-_,f=b-v,Ru[1]=b-(v+f)+(f-_),S=y+v,f=S-y,Ru[2]=y-(S-f)+(v-f),Ru[3]=S;const F=qu(q,zu,4,Ru,Iu);w=u*l,h=ku*u,d=h-(h-u),p=u-d,h=ku*l,m=h-(h-l),g=l-m,x=p*g-(w-d*m-p*m-d*g),_=s*c,h=ku*s,d=h-(h-s),p=s-d,h=ku*c,m=h-(h-c),g=c-m,M=p*g-(_-d*m-p*m-d*g),v=x-M,f=x-v,Ru[0]=x-(v+f)+(f-M),y=w+v,f=y-w,b=w-(y-f)+(v-f),v=b-_,f=b-v,Ru[1]=b-(v+f)+(f-_),S=y+v,f=S-y,Ru[2]=y-(S-f)+(v-f),Ru[3]=S;const D=qu(F,Iu,4,Ru,Pu);return Pu[D-1]}(t,n,e,r,i,a,c)}const Vu=Math.pow(2,-52),ju=new Uint32Array(512);class Lu{static from(t,n=Gu,e=Wu){const r=t.length,i=new Float64Array(2*r);for(let a=0;a<r;a++){const r=t[a];i[2*a]=n(r),i[2*a+1]=e(r)}return new Lu(i)}constructor(t){const n=t.length>>1;if(n>0&&"number"!=typeof t[0])throw new Error("Expected coords to contain numbers.");this.coords=t;const e=Math.max(2*n-5,0);this._triangles=new Uint32Array(3*e),this._halfedges=new Int32Array(3*e),this._hashSize=Math.ceil(Math.sqrt(n)),this._hullPrev=new Uint32Array(n),this._hullNext=new Uint32Array(n),this._hullTri=new Uint32Array(n),this._hullHash=new Int32Array(this._hashSize),this._ids=new Uint32Array(n),this._dists=new Float64Array(n),this.update()}update(){const{coords:t,_hullPrev:n,_hullNext:e,_hullTri:r,_hullHash:i}=this,a=t.length>>1;let o=Infinity,u=Infinity,s=-Infinity,c=-Infinity;for(let n=0;n<a;n++){const e=t[2*n],r=t[2*n+1];e<o&&(o=e),r<u&&(u=r),e>s&&(s=e),r>c&&(c=r),this._ids[n]=n}const l=(o+s)/2,f=(u+c)/2;let h,d,p;for(let n=0,e=Infinity;n<a;n++){const r=Bu(l,f,t[2*n],t[2*n+1]);r<e&&(h=n,e=r)}const m=t[2*h],g=t[2*h+1];for(let n=0,e=Infinity;n<a;n++){if(n===h)continue;const r=Bu(m,g,t[2*n],t[2*n+1]);r<e&&r>0&&(d=n,e=r)}let v=t[2*d],y=t[2*d+1],b=Infinity;for(let n=0;n<a;n++){if(n===h||n===d)continue;const e=Uu(m,g,v,y,t[2*n],t[2*n+1]);e<b&&(p=n,b=e)}let w=t[2*p],x=t[2*p+1];if(Infinity===b){for(let n=0;n<a;n++)this._dists[n]=t[2*n]-t[0]||t[2*n+1]-t[1];Hu(this._ids,this._dists,0,a-1);const n=new Uint32Array(a);let e=0;for(let t=0,r=-Infinity;t<a;t++){const i=this._ids[t],a=this._dists[i];a>r&&(n[e++]=i,r=a)}return this.hull=n.subarray(0,e),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}if(Ou(m,g,v,y,w,x)<0){const t=d,n=v,e=y;d=p,v=w,y=x,p=t,w=n,x=e}const _=function(t,n,e,r,i,a){const o=e-t,u=r-n,s=i-t,c=a-n,l=o*o+u*u,f=s*s+c*c,h=.5/(o*c-u*s);return{x:t+(c*l-u*f)*h,y:n+(o*f-s*l)*h}}(m,g,v,y,w,x);this._cx=_.x,this._cy=_.y;for(let n=0;n<a;n++)this._dists[n]=Bu(t[2*n],t[2*n+1],_.x,_.y);Hu(this._ids,this._dists,0,a-1),this._hullStart=h;let M=3;e[h]=n[p]=d,e[d]=n[h]=p,e[p]=n[d]=h,r[h]=0,r[d]=1,r[p]=2,i.fill(-1),i[this._hashKey(m,g)]=h,i[this._hashKey(v,y)]=d,i[this._hashKey(w,x)]=p,this.trianglesLen=0,this._addTriangle(h,d,p,-1,-1,-1);for(let a,o,u=0;u<this._ids.length;u++){const s=this._ids[u],c=t[2*s],l=t[2*s+1];if(u>0&&Math.abs(c-a)<=Vu&&Math.abs(l-o)<=Vu)continue;if(a=c,o=l,s===h||s===d||s===p)continue;let f=0;for(let t=0,n=this._hashKey(c,l);t<this._hashSize&&(f=i[(n+t)%this._hashSize],-1===f||f===e[f]);t++);f=n[f];let m,g=f;for(;m=e[g],Ou(c,l,t[2*g],t[2*g+1],t[2*m],t[2*m+1])>=0;)if(g=m,g===f){g=-1;break}if(-1===g)continue;let v=this._addTriangle(g,s,e[g],-1,-1,r[g]);r[s]=this._legalize(v+2),r[g]=v,M++;let y=e[g];for(;m=e[y],Ou(c,l,t[2*y],t[2*y+1],t[2*m],t[2*m+1])<0;)v=this._addTriangle(y,s,m,r[s],-1,r[y]),r[s]=this._legalize(v+2),e[y]=y,M--,y=m;if(g===f)for(;m=n[g],Ou(c,l,t[2*m],t[2*m+1],t[2*g],t[2*g+1])<0;)v=this._addTriangle(m,s,g,-1,r[g],r[m]),this._legalize(v+2),r[m]=v,e[g]=g,M--,g=m;this._hullStart=n[s]=g,e[g]=n[y]=s,e[s]=y,i[this._hashKey(c,l)]=s,i[this._hashKey(t[2*g],t[2*g+1])]=g}this.hull=new Uint32Array(M);for(let t=0,n=this._hullStart;t<M;t++)this.hull[t]=n,n=e[n];this.triangles=this._triangles.subarray(0,this.trianglesLen),this.halfedges=this._halfedges.subarray(0,this.trianglesLen)}_hashKey(t,n){return Math.floor(function(t,n){const e=t/(Math.abs(t)+Math.abs(n));return(n>0?3-e:1+e)/4}(t-this._cx,n-this._cy)*this._hashSize)%this._hashSize}_legalize(t){const{_triangles:n,_halfedges:e,coords:r}=this;let i=0,a=0;for(;;){const o=e[t],u=t-t%3;if(a=u+(t+2)%3,-1===o){if(0===i)break;t=ju[--i];continue}const s=o-o%3,c=s+(o+2)%3,l=n[a],f=n[t],h=n[u+(t+1)%3],d=n[c];if($u(r[2*l],r[2*l+1],r[2*f],r[2*f+1],r[2*h],r[2*h+1],r[2*d],r[2*d+1])){n[t]=d,n[o]=l;const r=e[c];if(-1===r){let n=this._hullStart;do{if(this._hullTri[n]===c){this._hullTri[n]=t;break}n=this._hullPrev[n]}while(n!==this._hullStart)}this._link(t,r),this._link(o,e[a]),this._link(a,c),i<ju.length&&(ju[i++]=s+(o+1)%3)}else{if(0===i)break;t=ju[--i]}}return a}_link(t,n){this._halfedges[t]=n,-1!==n&&(this._halfedges[n]=t)}_addTriangle(t,n,e,r,i,a){const o=this.trianglesLen;return this._triangles[o]=t,this._triangles[o+1]=n,this._triangles[o+2]=e,this._link(o,r),this._link(o+1,i),this._link(o+2,a),this.trianglesLen+=3,o}}function Bu(t,n,e,r){const i=t-e,a=n-r;return i*i+a*a}function $u(t,n,e,r,i,a,o,u){const s=t-o,c=n-u,l=e-o,f=r-u,h=i-o,d=a-u,p=l*l+f*f,m=h*h+d*d;return s*(f*m-p*d)-c*(l*m-p*h)+(s*s+c*c)*(l*d-f*h)<0}function Uu(t,n,e,r,i,a){const o=e-t,u=r-n,s=i-t,c=a-n,l=o*o+u*u,f=s*s+c*c,h=.5/(o*c-u*s),d=(c*l-u*f)*h,p=(o*f-s*l)*h;return d*d+p*p}function Hu(t,n,e,r){if(r-e<=20)for(let i=e+1;i<=r;i++){const r=t[i],a=n[r];let o=i-1;for(;o>=e&&n[t[o]]>a;)t[o+1]=t[o--];t[o+1]=r}else{let i=e+1,a=r;Yu(t,e+r>>1,i),n[t[e]]>n[t[r]]&&Yu(t,e,r),n[t[i]]>n[t[r]]&&Yu(t,i,r),n[t[e]]>n[t[i]]&&Yu(t,e,i);const o=t[i],u=n[o];for(;;){do{i++}while(n[t[i]]<u);do{a--}while(n[t[a]]>u);if(a<i)break;Yu(t,i,a)}t[e+1]=t[a],t[a]=o,r-i+1>=a-e?(Hu(t,n,i,r),Hu(t,n,e,a-1)):(Hu(t,n,e,a-1),Hu(t,n,i,r))}}function Yu(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function Gu(t){return t[0]}function Wu(t){return t[1]}const Xu=1e-6;class Qu{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(t,n){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(t,n){this._+=`L${this._x1=+t},${this._y1=+n}`}arc(t,n,e){const r=(t=+t)+(e=+e),i=n=+n;if(e<0)throw new Error("negative radius");null===this._x1?this._+=`M${r},${i}`:(Math.abs(this._x1-r)>Xu||Math.abs(this._y1-i)>Xu)&&(this._+="L"+r+","+i),e&&(this._+=`A${e},${e},0,1,1,${t-e},${n}A${e},${e},0,1,1,${this._x1=r},${this._y1=i}`)}rect(t,n,e,r){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${+e}v${+r}h${-e}Z`}value(){return this._||null}}class Ku{constructor(){this._=[]}moveTo(t,n){this._.push([t,n])}closePath(){this._.push(this._[0].slice())}lineTo(t,n){this._.push([t,n])}value(){return this._.length?this._:null}}class Zu{constructor(t,[n,e,r,i]=[0,0,960,500]){if(!((r=+r)>=(n=+n)&&(i=+i)>=(e=+e)))throw new Error("invalid bounds");this.delaunay=t,this._circumcenters=new Float64Array(2*t.points.length),this.vectors=new Float64Array(2*t.points.length),this.xmax=r,this.xmin=n,this.ymax=i,this.ymin=e,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:t,hull:n,triangles:e},vectors:r}=this;let i,a;const o=this.circumcenters=this._circumcenters.subarray(0,e.length/3*2);for(let r,u,s=0,c=0,l=e.length;s<l;s+=3,c+=2){const l=2*e[s],f=2*e[s+1],h=2*e[s+2],d=t[l],p=t[l+1],m=t[h],g=t[h+1],v=t[f]-d,y=t[f+1]-p,b=m-d,w=g-p,x=2*(v*w-y*b);if(Math.abs(x)<1e-9){if(void 0===i){i=a=0;for(const e of n)i+=t[2*e],a+=t[2*e+1];i/=n.length,a/=n.length}const e=1e9*Math.sign((i-d)*w-(a-p)*b);r=(d+m)/2-e*w,u=(p+g)/2+e*b}else{const t=1/x,n=v*v+y*y,e=b*b+w*w;r=d+(w*n-y*e)*t,u=p+(v*e-b*n)*t}o[c]=r,o[c+1]=u}let u,s,c,l=n[n.length-1],f=4*l,h=t[2*l],d=t[2*l+1];r.fill(0);for(let e=0;e<n.length;++e)l=n[e],u=f,s=h,c=d,f=4*l,h=t[2*l],d=t[2*l+1],r[u+2]=r[f]=c-d,r[u+3]=r[f+1]=h-s}render(t){const n=null==t?t=new Qu:void 0,{delaunay:{halfedges:e,inedges:r,hull:i},circumcenters:a,vectors:o}=this;if(i.length<=1)return null;for(let n=0,r=e.length;n<r;++n){const r=e[n];if(r<n)continue;const i=2*Math.floor(n/3),o=2*Math.floor(r/3);this._renderSegment(a[i],a[i+1],a[o],a[o+1],t)}let u,s=i[i.length-1];for(let n=0;n<i.length;++n){u=s,s=i[n];const e=2*Math.floor(r[s]/3),c=a[e],l=a[e+1],f=4*u,h=this._project(c,l,o[f+2],o[f+3]);h&&this._renderSegment(c,l,h[0],h[1],t)}return n&&n.value()}renderBounds(t){const n=null==t?t=new Qu:void 0;return t.rect(this.xmin,this.ymin,this.xmax-this.xmin,this.ymax-this.ymin),n&&n.value()}renderCell(t,n){const e=null==n?n=new Qu:void 0,r=this._clip(t);if(null===r||!r.length)return;n.moveTo(r[0],r[1]);let i=r.length;for(;r[0]===r[i-2]&&r[1]===r[i-1]&&i>1;)i-=2;for(let t=2;t<i;t+=2)r[t]===r[t-2]&&r[t+1]===r[t-1]||n.lineTo(r[t],r[t+1]);return n.closePath(),e&&e.value()}*cellPolygons(){const{delaunay:{points:t}}=this;for(let n=0,e=t.length/2;n<e;++n){const t=this.cellPolygon(n);t&&(t.index=n,yield t)}}cellPolygon(t){const n=new Ku;return this.renderCell(t,n),n.value()}_renderSegment(t,n,e,r,i){let a;const o=this._regioncode(t,n),u=this._regioncode(e,r);0===o&&0===u?(i.moveTo(t,n),i.lineTo(e,r)):(a=this._clipSegment(t,n,e,r,o,u))&&(i.moveTo(a[0],a[1]),i.lineTo(a[2],a[3]))}contains(t,n,e){return(n=+n)==n&&(e=+e)==e&&this.delaunay._step(t,n,e)===t}*neighbors(t){const n=this._clip(t);if(n)for(const e of this.delaunay.neighbors(t)){const t=this._clip(e);if(t)t:for(let r=0,i=n.length;r<i;r+=2)for(let a=0,o=t.length;a<o;a+=2)if(n[r]===t[a]&&n[r+1]===t[a+1]&&n[(r+2)%i]===t[(a+o-2)%o]&&n[(r+3)%i]===t[(a+o-1)%o]){yield e;break t}}}_cell(t){const{circumcenters:n,delaunay:{inedges:e,halfedges:r,triangles:i}}=this,a=e[t];if(-1===a)return null;const o=[];let u=a;do{const e=Math.floor(u/3);if(o.push(n[2*e],n[2*e+1]),u=u%3==2?u-2:u+1,i[u]!==t)break;u=r[u]}while(u!==a&&-1!==u);return o}_clip(t){if(0===t&&1===this.delaunay.hull.length)return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];const n=this._cell(t);if(null===n)return null;const{vectors:e}=this,r=4*t;return this._simplify(e[r]||e[r+1]?this._clipInfinite(t,n,e[r],e[r+1],e[r+2],e[r+3]):this._clipFinite(t,n))}_clipFinite(t,n){const e=n.length;let r,i,a,o,u=null,s=n[e-2],c=n[e-1],l=this._regioncode(s,c),f=0;for(let h=0;h<e;h+=2)if(r=s,i=c,s=n[h],c=n[h+1],a=l,l=this._regioncode(s,c),0===a&&0===l)o=f,f=0,u?u.push(s,c):u=[s,c];else{let n,e,h,d,p;if(0===a){if(null===(n=this._clipSegment(r,i,s,c,a,l)))continue;[e,h,d,p]=n}else{if(null===(n=this._clipSegment(s,c,r,i,l,a)))continue;[d,p,e,h]=n,o=f,f=this._edgecode(e,h),o&&f&&this._edge(t,o,f,u,u.length),u?u.push(e,h):u=[e,h]}o=f,f=this._edgecode(d,p),o&&f&&this._edge(t,o,f,u,u.length),u?u.push(d,p):u=[d,p]}if(u)o=f,f=this._edgecode(u[0],u[1]),o&&f&&this._edge(t,o,f,u,u.length);else if(this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2))return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];return u}_clipSegment(t,n,e,r,i,a){const o=i<a;for(o&&([t,n,e,r,i,a]=[e,r,t,n,a,i]);;){if(0===i&&0===a)return o?[e,r,t,n]:[t,n,e,r];if(i&a)return null;let u,s,c=i||a;8&c?(u=t+(e-t)*(this.ymax-n)/(r-n),s=this.ymax):4&c?(u=t+(e-t)*(this.ymin-n)/(r-n),s=this.ymin):2&c?(s=n+(r-n)*(this.xmax-t)/(e-t),u=this.xmax):(s=n+(r-n)*(this.xmin-t)/(e-t),u=this.xmin),i?i=this._regioncode(t=u,n=s):a=this._regioncode(e=u,r=s)}}_clipInfinite(t,n,e,r,i,a){let o,u=Array.from(n);if((o=this._project(u[0],u[1],e,r))&&u.unshift(o[0],o[1]),(o=this._project(u[u.length-2],u[u.length-1],i,a))&&u.push(o[0],o[1]),u=this._clipFinite(t,u))for(let n,e=0,r=u.length,i=this._edgecode(u[r-2],u[r-1]);e<r;e+=2)n=i,i=this._edgecode(u[e],u[e+1]),n&&i&&(e=this._edge(t,n,i,u,e),r=u.length);else this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2)&&(u=[this.xmin,this.ymin,this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax]);return u}_edge(t,n,e,r,i){for(;n!==e;){let e,a;switch(n){case 5:n=4;continue;case 4:n=6,e=this.xmax,a=this.ymin;break;case 6:n=2;continue;case 2:n=10,e=this.xmax,a=this.ymax;break;case 10:n=8;continue;case 8:n=9,e=this.xmin,a=this.ymax;break;case 9:n=1;continue;case 1:n=5,e=this.xmin,a=this.ymin}r[i]===e&&r[i+1]===a||!this.contains(t,e,a)||(r.splice(i,0,e,a),i+=2)}return i}_project(t,n,e,r){let i,a,o,u=Infinity;if(r<0){if(n<=this.ymin)return null;(i=(this.ymin-n)/r)<u&&(o=this.ymin,a=t+(u=i)*e)}else if(r>0){if(n>=this.ymax)return null;(i=(this.ymax-n)/r)<u&&(o=this.ymax,a=t+(u=i)*e)}if(e>0){if(t>=this.xmax)return null;(i=(this.xmax-t)/e)<u&&(a=this.xmax,o=n+(u=i)*r)}else if(e<0){if(t<=this.xmin)return null;(i=(this.xmin-t)/e)<u&&(a=this.xmin,o=n+(u=i)*r)}return[a,o]}_edgecode(t,n){return(t===this.xmin?1:t===this.xmax?2:0)|(n===this.ymin?4:n===this.ymax?8:0)}_regioncode(t,n){return(t<this.xmin?1:t>this.xmax?2:0)|(n<this.ymin?4:n>this.ymax?8:0)}_simplify(t){if(t&&t.length>4){for(let n=0;n<t.length;n+=2){const e=(n+2)%t.length,r=(n+4)%t.length;(t[n]===t[e]&&t[e]===t[r]||t[n+1]===t[e+1]&&t[e+1]===t[r+1])&&(t.splice(e,2),n-=2)}t.length||(t=null)}return t}}const Ju=2*Math.PI,ts=Math.pow;function ns(t){return t[0]}function es(t){return t[1]}function rs(t,n,e){return[t+Math.sin(t+n)*e,n+Math.cos(t-n)*e]}class is{static from(t,n=ns,e=es,r){return new is("length"in t?function(t,n,e,r){const i=t.length,a=new Float64Array(2*i);for(let o=0;o<i;++o){const i=t[o];a[2*o]=n.call(r,i,o,t),a[2*o+1]=e.call(r,i,o,t)}return a}(t,n,e,r):Float64Array.from(function*(t,n,e,r){let i=0;for(const a of t)yield n.call(r,a,i,t),yield e.call(r,a,i,t),++i}(t,n,e,r)))}constructor(t){this._delaunator=new Lu(t),this.inedges=new Int32Array(t.length/2),this._hullIndex=new Int32Array(t.length/2),this.points=this._delaunator.coords,this._init()}update(){return this._delaunator.update(),this._init(),this}_init(){const t=this._delaunator,n=this.points;if(t.hull&&t.hull.length>2&&function(t){const{triangles:n,coords:e}=t;for(let t=0;t<n.length;t+=3){const r=2*n[t],i=2*n[t+1],a=2*n[t+2];if((e[a]-e[r])*(e[i+1]-e[r+1])-(e[i]-e[r])*(e[a+1]-e[r+1])>1e-10)return!1}return!0}(t)){this.collinear=Int32Array.from({length:n.length/2},(t,n)=>n).sort((t,e)=>n[2*t]-n[2*e]||n[2*t+1]-n[2*e+1]);const t=this.collinear[0],e=this.collinear[this.collinear.length-1],r=[n[2*t],n[2*t+1],n[2*e],n[2*e+1]],i=1e-8*Math.hypot(r[3]-r[1],r[2]-r[0]);for(let t=0,e=n.length/2;t<e;++t){const e=rs(n[2*t],n[2*t+1],i);n[2*t]=e[0],n[2*t+1]=e[1]}this._delaunator=new Lu(n)}else delete this.collinear;const e=this.halfedges=this._delaunator.halfedges,r=this.hull=this._delaunator.hull,i=this.triangles=this._delaunator.triangles,a=this.inedges.fill(-1),o=this._hullIndex.fill(-1);for(let t=0,n=e.length;t<n;++t){const n=i[t%3==2?t-2:t+1];-1!==e[t]&&-1!==a[n]||(a[n]=t)}for(let t=0,n=r.length;t<n;++t)o[r[t]]=t;r.length<=2&&r.length>0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=r[0],a[r[0]]=1,2===r.length&&(a[r[1]]=0,this.triangles[1]=r[1],this.triangles[2]=r[1]))}voronoi(t){return new Zu(this,t)}*neighbors(t){const{inedges:n,hull:e,_hullIndex:r,halfedges:i,triangles:a,collinear:o}=this;if(o){const n=o.indexOf(t);return n>0&&(yield o[n-1]),void(n<o.length-1&&(yield o[n+1]))}const u=n[t];if(-1===u)return;let s=u,c=-1;do{if(yield c=a[s],s=s%3==2?s-2:s+1,a[s]!==t)return;if(s=i[s],-1===s){const n=e[(r[t]+1)%e.length];return void(n!==c&&(yield n))}}while(s!==u)}find(t,n,e=0){if((t=+t)!=t||(n=+n)!=n)return-1;const r=e;let i;for(;(i=this._step(e,t,n))>=0&&i!==e&&i!==r;)e=i;return i}_step(t,n,e){const{inedges:r,hull:i,_hullIndex:a,halfedges:o,triangles:u,points:s}=this;if(-1===r[t]||!s.length)return(t+1)%(s.length>>1);let c=t,l=ts(n-s[2*t],2)+ts(e-s[2*t+1],2);const f=r[t];let h=f;do{let r=u[h];const f=ts(n-s[2*r],2)+ts(e-s[2*r+1],2);if(f<l&&(l=f,c=r),h=h%3==2?h-2:h+1,u[h]!==t)break;if(h=o[h],-1===h){if(h=i[(a[t]+1)%i.length],h!==r&&ts(n-s[2*h],2)+ts(e-s[2*h+1],2)<l)return h;break}}while(h!==f);return c}render(t){const n=null==t?t=new Qu:void 0,{points:e,halfedges:r,triangles:i}=this;for(let n=0,a=r.length;n<a;++n){const a=r[n];if(a<n)continue;const o=2*i[n],u=2*i[a];t.moveTo(e[o],e[o+1]),t.lineTo(e[u],e[u+1])}return this.renderHull(t),n&&n.value()}renderPoints(t,n){void 0!==n||t&&"function"==typeof t.moveTo||(n=t,t=null),n=null==n?2:+n;const e=null==t?t=new Qu:void 0,{points:r}=this;for(let e=0,i=r.length;e<i;e+=2){const i=r[e],a=r[e+1];t.moveTo(i+n,a),t.arc(i,a,n,0,Ju)}return e&&e.value()}renderHull(t){const n=null==t?t=new Qu:void 0,{hull:e,points:r}=this,i=2*e[0],a=e.length;t.moveTo(r[i],r[i+1]);for(let n=1;n<a;++n){const i=2*e[n];t.lineTo(r[i],r[i+1])}return t.closePath(),n&&n.value()}hullPolygon(){const t=new Ku;return this.renderHull(t),t.value()}renderTriangle(t,n){const e=null==n?n=new Qu:void 0,{points:r,triangles:i}=this,a=2*i[t*=3],o=2*i[t+1],u=2*i[t+2];return n.moveTo(r[a],r[a+1]),n.lineTo(r[o],r[o+1]),n.lineTo(r[u],r[u+1]),n.closePath(),e&&e.value()}*trianglePolygons(){const{triangles:t}=this;for(let n=0,e=t.length/3;n<e;++n)yield this.trianglePolygon(n)}trianglePolygon(t){const n=new Ku;return this.renderTriangle(t,n),n.value()}}var as={},os={};function us(t){return new Function("d","return {"+t.map(function(t,n){return JSON.stringify(t)+": d["+n+'] || ""'}).join(",")+"}")}function ss(t){var n=Object.create(null),e=[];return t.forEach(function(t){for(var r in t)r in n||e.push(n[r]=r)}),e}function cs(t,n){var e=t+"",r=e.length;return r<n?new Array(n-r+1).join(0)+e:e}function ls(t){var n=new RegExp('["'+t+"\n\r]"),e=t.charCodeAt(0);function r(t,n){var r,i=[],a=t.length,o=0,u=0,s=a<=0,c=!1;function l(){if(s)return os;if(c)return c=!1,as;var n,r,i=o;if(34===t.charCodeAt(i)){for(;o++<a&&34!==t.charCodeAt(o)||34===t.charCodeAt(++o););return(n=o)>=a?s=!0:10===(r=t.charCodeAt(o++))?c=!0:13===r&&(c=!0,10===t.charCodeAt(o)&&++o),t.slice(i+1,n-1).replace(/""/g,'"')}for(;o<a;){if(10===(r=t.charCodeAt(n=o++)))c=!0;else if(13===r)c=!0,10===t.charCodeAt(o)&&++o;else if(r!==e)continue;return t.slice(i,n)}return s=!0,t.slice(i,a)}for(10===t.charCodeAt(a-1)&&--a,13===t.charCodeAt(a-1)&&--a;(r=l())!==os;){for(var f=[];r!==as&&r!==os;)f.push(r),r=l();n&&null==(f=n(f,u++))||i.push(f)}return i}function i(n,e){return n.map(function(n){return e.map(function(t){return o(n[t])}).join(t)})}function a(n){return n.map(o).join(t)}function o(t){return null==t?"":t instanceof Date?function(t){var n,e=t.getUTCHours(),r=t.getUTCMinutes(),i=t.getUTCSeconds(),a=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":((n=t.getUTCFullYear())<0?"-"+cs(-n,6):n>9999?"+"+cs(n,6):cs(n,4))+"-"+cs(t.getUTCMonth()+1,2)+"-"+cs(t.getUTCDate(),2)+(a?"T"+cs(e,2)+":"+cs(r,2)+":"+cs(i,2)+"."+cs(a,3)+"Z":i?"T"+cs(e,2)+":"+cs(r,2)+":"+cs(i,2)+"Z":r||e?"T"+cs(e,2)+":"+cs(r,2)+"Z":"")}(t):n.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}return{parse:function(t,n){var e,i,a=r(t,function(t,r){if(e)return e(t,r-1);i=t,e=n?function(t,n){var e=us(t);return function(r,i){return n(e(r),i,t)}}(t,n):us(t)});return a.columns=i||[],a},parseRows:r,format:function(n,e){return null==e&&(e=ss(n)),[e.map(o).join(t)].concat(i(n,e)).join("\n")},formatBody:function(t,n){return null==n&&(n=ss(t)),i(t,n).join("\n")},formatRows:function(t){return t.map(a).join("\n")},formatRow:a,formatValue:o}}var fs=ls(","),hs=fs.parse,ds=fs.parseRows,ps=fs.format,ms=fs.formatBody,gs=fs.formatRows,vs=fs.formatRow,ys=fs.formatValue,bs=ls("\t"),ws=bs.parse,xs=bs.parseRows,_s=bs.format,Ms=bs.formatBody,Ss=bs.formatRows,Ns=bs.formatRow,Es=bs.formatValue;const As=new Date("2019-01-01T00:00").getHours()||new Date("2019-07-01T00:00").getHours();function Ts(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.blob()}function Cs(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.arrayBuffer()}function ks(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.text()}function qs(t,n){return fetch(t,n).then(ks)}function Fs(t){return function(n,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=void 0),qs(n,e).then(function(n){return t(n,r)})}}var Ds=Fs(hs),zs=Fs(ws);function Is(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);if(204!==t.status&&205!==t.status)return t.json()}function Ps(t){return(n,e)=>qs(n,e).then(n=>(new DOMParser).parseFromString(n,t))}var Rs=Ps("application/xml"),Os=Ps("text/html"),Vs=Ps("image/svg+xml");function js(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,a,o,u,s,c,l,f,h,d=t._root,p={data:r},m=t._x0,g=t._y0,v=t._x1,y=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((c=n>=(a=(m+v)/2))?m=a:v=a,(l=e>=(o=(g+y)/2))?g=o:y=o,i=d,!(d=d[f=l<<1|c]))return i[f]=p,t;if(u=+t._x.call(null,d.data),s=+t._y.call(null,d.data),n===u&&e===s)return p.next=d,i?i[f]=p:t._root=p,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(c=n>=(a=(m+v)/2))?m=a:v=a,(l=e>=(o=(g+y)/2))?g=o:y=o}while((f=l<<1|c)==(h=(s>=o)<<1|u>=a));return i[h]=d,i[f]=p,t}function Ls(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function Bs(t){return t[0]}function $s(t){return t[1]}function Us(t,n,e){var r=new Hs(null==n?Bs:n,null==e?$s:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Hs(t,n,e,r,i,a){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=a,this._root=void 0}function Ys(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var Gs=Us.prototype=Hs.prototype;function Ws(t){return function(){return t}}function Xs(t){return 1e-6*(t()-.5)}function Qs(t){return t.x+t.vx}function Ks(t){return t.y+t.vy}function Zs(t){return t.index}function Js(t,n){var e=t.get(n);if(!e)throw new Error("node not found: "+n);return e}Gs.copy=function(){var t,n,e=new Hs(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=Ys(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=Ys(n));return e},Gs.add=function(t){const n=+this._x.call(null,t),e=+this._y.call(null,t);return js(this.cover(n,e),n,e,t)},Gs.addAll=function(t){var n,e,r,i,a=t.length,o=new Array(a),u=new Array(a),s=Infinity,c=Infinity,l=-Infinity,f=-Infinity;for(e=0;e<a;++e)isNaN(r=+this._x.call(null,n=t[e]))||isNaN(i=+this._y.call(null,n))||(o[e]=r,u[e]=i,r<s&&(s=r),r>l&&(l=r),i<c&&(c=i),i>f&&(f=i));if(s>l||c>f)return this;for(this.cover(s,c).cover(l,f),e=0;e<a;++e)js(this,o[e],u[e],t[e]);return this},Gs.cover=function(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,r=this._y0,i=this._x1,a=this._y1;if(isNaN(e))i=(e=Math.floor(t))+1,a=(r=Math.floor(n))+1;else{for(var o,u,s=i-e||1,c=this._root;e>t||t>=i||r>n||n>=a;)switch(u=(n<r)<<1|t<e,(o=new Array(4))[u]=c,c=o,s*=2,u){case 0:i=e+s,a=r+s;break;case 1:e=i-s,a=r+s;break;case 2:i=e+s,r=a-s;break;case 3:e=i-s,r=a-s}this._root&&this._root.length&&(this._root=c)}return this._x0=e,this._y0=r,this._x1=i,this._y1=a,this},Gs.data=function(){var t=[];return this.visit(function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)}),t},Gs.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},Gs.find=function(t,n,e){var r,i,a,o,u,s,c,l=this._x0,f=this._y0,h=this._x1,d=this._y1,p=[],m=this._root;for(m&&p.push(new Ls(m,l,f,h,d)),null==e?e=Infinity:(l=t-e,f=n-e,h=t+e,d=n+e,e*=e);s=p.pop();)if(!(!(m=s.node)||(i=s.x0)>h||(a=s.y0)>d||(o=s.x1)<l||(u=s.y1)<f))if(m.length){var g=(i+o)/2,v=(a+u)/2;p.push(new Ls(m[3],g,v,o,u),new Ls(m[2],i,v,g,u),new Ls(m[1],g,a,o,v),new Ls(m[0],i,a,g,v)),(c=(n>=v)<<1|t>=g)&&(s=p[p.length-1],p[p.length-1]=p[p.length-1-c],p[p.length-1-c]=s)}else{var y=t-+this._x.call(null,m.data),b=n-+this._y.call(null,m.data),w=y*y+b*b;if(w<e){var x=Math.sqrt(e=w);l=t-x,f=n-x,h=t+x,d=n+x,r=m.data}}return r},Gs.remove=function(t){if(isNaN(a=+this._x.call(null,t))||isNaN(o=+this._y.call(null,t)))return this;var n,e,r,i,a,o,u,s,c,l,f,h,d=this._root,p=this._x0,m=this._y0,g=this._x1,v=this._y1;if(!d)return this;if(d.length)for(;;){if((c=a>=(u=(p+g)/2))?p=u:g=u,(l=o>=(s=(m+v)/2))?m=s:v=s,n=d,!(d=d[f=l<<1|c]))return this;if(!d.length)break;(n[f+1&3]||n[f+2&3]||n[f+3&3])&&(e=n,h=f)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[f]=i:delete n[f],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},Gs.removeAll=function(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this},Gs.root=function(){return this._root},Gs.size=function(){var t=0;return this.visit(function(n){if(!n.length)do{++t}while(n=n.next)}),t},Gs.visit=function(t){var n,e,r,i,a,o,u=[],s=this._root;for(s&&u.push(new Ls(s,this._x0,this._y0,this._x1,this._y1));n=u.pop();)if(!t(s=n.node,r=n.x0,i=n.y0,a=n.x1,o=n.y1)&&s.length){var c=(r+a)/2,l=(i+o)/2;(e=s[3])&&u.push(new Ls(e,c,l,a,o)),(e=s[2])&&u.push(new Ls(e,r,l,c,o)),(e=s[1])&&u.push(new Ls(e,c,i,a,l)),(e=s[0])&&u.push(new Ls(e,r,i,c,l))}return this},Gs.visitAfter=function(t){var n,e=[],r=[];for(this._root&&e.push(new Ls(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var i=n.node;if(i.length){var a,o=n.x0,u=n.y0,s=n.x1,c=n.y1,l=(o+s)/2,f=(u+c)/2;(a=i[0])&&e.push(new Ls(a,o,u,l,f)),(a=i[1])&&e.push(new Ls(a,l,u,s,f)),(a=i[2])&&e.push(new Ls(a,o,f,l,c)),(a=i[3])&&e.push(new Ls(a,l,f,s,c))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},Gs.x=function(t){return arguments.length?(this._x=t,this):this._x},Gs.y=function(t){return arguments.length?(this._y=t,this):this._y};const tc=4294967296;function nc(t){return t.x}function ec(t){return t.y}var rc=Math.PI*(3-Math.sqrt(5));function ic(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function ac(t){return(t=ic(Math.abs(t)))?t[1]:NaN}var oc,uc=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function sc(t){if(!(n=uc.exec(t)))throw new Error("invalid format: "+t);var n;return new cc({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function cc(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function lc(t,n){var e=ic(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}sc.prototype=cc.prototype,cc.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var fc={"%":(t,n)=>(100*t).toFixed(n),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,n)=>t.toExponential(n),f:(t,n)=>t.toFixed(n),g:(t,n)=>t.toPrecision(n),o:t=>Math.round(t).toString(8),p:(t,n)=>lc(100*t,n),r:lc,s:function(t,n){var e=ic(t,n);if(!e)return t+"";var r=e[0],i=e[1],a=i-(oc=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=r.length;return a===o?r:a>o?r+new Array(a-o+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+ic(t,Math.max(0,n+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function hc(t){return t}var dc,pc,mc,gc=Array.prototype.map,vc=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function yc(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?hc:(n=gc.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,a=[],o=0,u=n[0],s=0;i>0&&u>0&&(s+u+1>r&&(u=Math.max(1,r-s)),a.push(t.substring(i-=u,i+u)),!((s+=u+1)>r));)u=n[o=(o+1)%n.length];return a.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",u=void 0===t.numerals?hc:function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}}(gc.call(t.numerals,String)),s=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"ā":t.minus+"",l=void 0===t.nan?"NaN":t.nan+"";function f(t){var n=(t=sc(t)).fill,e=t.align,f=t.sign,h=t.symbol,d=t.zero,p=t.width,m=t.comma,g=t.precision,v=t.trim,y=t.type;"n"===y?(m=!0,y="g"):fc[y]||(void 0===g&&(g=12),v=!0,y="g"),(d||"0"===n&&"="===e)&&(d=!0,n="0",e="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(y)?"0"+y.toLowerCase():"",w="$"===h?a:/[%p]/.test(y)?s:"",x=fc[y],_=/[defgprs%]/.test(y);function M(t){var i,a,s,h=b,M=w;if("c"===y)M=x(t)+M,t="";else{var S=(t=+t)<0||1/t<0;if(t=isNaN(t)?l:x(Math.abs(t),g),v&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r<e;++r)switch(t[r]){case".":i=n=r;break;case"0":0===i&&(i=r),n=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),S&&0===+t&&"+"!==f&&(S=!1),h=(S?"("===f?f:c:"-"===f||"("===f?"":f)+h,M=("s"===y?vc[8+oc/3]:"")+M+(S&&"("===f?")":""),_)for(i=-1,a=t.length;++i<a;)if(48>(s=t.charCodeAt(i))||s>57){M=(46===s?o+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}m&&!d&&(t=r(t,Infinity));var N=h.length+t.length+M.length,E=N<p?new Array(p-N+1).join(n):"";switch(m&&d&&(t=r(E+t,E.length?p-M.length:Infinity),E=""),e){case"<":t=h+t+M+E;break;case"=":t=h+E+t+M;break;case"^":t=E.slice(0,N=E.length>>1)+h+t+M+E.slice(N);break;default:t=E+h+t+M}return u(t)}return g=void 0===g?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),M.toString=function(){return t+""},M}return{format:f,formatPrefix:function(t,n){var e=f(((t=sc(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(ac(n)/3))),i=Math.pow(10,-r),a=vc[8+r/3];return function(t){return e(i*t)+a}}}}function bc(t){return dc=yc(t),pc=dc.format,mc=dc.formatPrefix,dc}function wc(t){return Math.max(0,-ac(Math.abs(t)))}function xc(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(ac(n)/3)))-ac(Math.abs(t)))}function _c(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,ac(n)-ac(t))+1}bc({thousands:",",grouping:[3],currency:["$",""]});var Mc=1e-6,Sc=1e-12,Nc=Math.PI,Ec=Nc/2,Ac=Nc/4,Tc=2*Nc,Cc=180/Nc,kc=Nc/180,qc=Math.abs,Fc=Math.atan,Dc=Math.atan2,zc=Math.cos,Ic=Math.ceil,Pc=Math.exp,Rc=Math.hypot,Oc=Math.log,Vc=Math.pow,jc=Math.sin,Lc=Math.sign||function(t){return t>0?1:t<0?-1:0},Bc=Math.sqrt,$c=Math.tan;function Uc(t){return t>1?0:t<-1?Nc:Math.acos(t)}function Hc(t){return t>1?Ec:t<-1?-Ec:Math.asin(t)}function Yc(t){return(t=jc(t/2))*t}function Gc(){}function Wc(t,n){t&&Qc.hasOwnProperty(t.type)&&Qc[t.type](t,n)}var Xc={Feature:function(t,n){Wc(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)Wc(e[r].geometry,n)}},Qc={Sphere:function(t,n){n.sphere()},Point:function(t,n){n.point((t=t.coordinates)[0],t[1],t[2])},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)n.point((t=e[r])[0],t[1],t[2])},LineString:function(t,n){Kc(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Kc(e[r],n,0)},Polygon:function(t,n){Zc(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Zc(e[r],n)},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)Wc(e[r],n)}};function Kc(t,n,e){var r,i=-1,a=t.length-e;for(n.lineStart();++i<a;)n.point((r=t[i])[0],r[1],r[2]);n.lineEnd()}function Zc(t,n){var e=-1,r=t.length;for(n.polygonStart();++e<r;)Kc(t[e],n,1);n.polygonEnd()}function Jc(t,n){t&&Xc.hasOwnProperty(t.type)?Xc[t.type](t,n):Wc(t,n)}var tl,nl,el,rl,il,al,ol,ul,sl,cl,ll,fl,hl,dl,pl,ml,gl=new J,vl=new J,yl={point:Gc,lineStart:Gc,lineEnd:Gc,polygonStart:function(){gl=new J,yl.lineStart=bl,yl.lineEnd=wl},polygonEnd:function(){var t=+gl;vl.add(t<0?Tc+t:t),this.lineStart=this.lineEnd=this.point=Gc},sphere:function(){vl.add(Tc)}};function bl(){yl.point=xl}function wl(){_l(tl,nl)}function xl(t,n){yl.point=_l,tl=t,nl=n,el=t*=kc,rl=zc(n=(n*=kc)/2+Ac),il=jc(n)}function _l(t,n){var e=(t*=kc)-el,r=e>=0?1:-1,i=r*e,a=zc(n=(n*=kc)/2+Ac),o=jc(n),u=il*o,s=rl*a+u*zc(i),c=u*r*jc(i);gl.add(Dc(c,s)),el=t,rl=a,il=o}function Ml(t){return[Dc(t[1],t[0]),Hc(t[2])]}function Sl(t){var n=t[0],e=t[1],r=zc(e);return[r*zc(n),r*jc(n),jc(e)]}function Nl(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function El(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function Al(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function Tl(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function Cl(t){var n=Bc(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var kl,ql,Fl,Dl,zl,Il,Pl,Rl,Ol,Vl,jl,Ll,Bl,$l,Ul,Hl,Yl={point:Gl,lineStart:Xl,lineEnd:Ql,polygonStart:function(){Yl.point=Kl,Yl.lineStart=Zl,Yl.lineEnd=Jl,dl=new J,yl.polygonStart()},polygonEnd:function(){yl.polygonEnd(),Yl.point=Gl,Yl.lineStart=Xl,Yl.lineEnd=Ql,gl<0?(al=-(ul=180),ol=-(sl=90)):dl>Mc?sl=90:dl<-1e-6&&(ol=-90),ml[0]=al,ml[1]=ul},sphere:function(){al=-(ul=180),ol=-(sl=90)}};function Gl(t,n){pl.push(ml=[al=t,ul=t]),n<ol&&(ol=n),n>sl&&(sl=n)}function Wl(t,n){var e=Sl([t*kc,n*kc]);if(hl){var r=El(hl,e),i=El([r[1],-r[0],0],r);Cl(i),i=Ml(i);var a,o=t-cl,u=o>0?1:-1,s=i[0]*Cc*u,c=qc(o)>180;c^(u*cl<s&&s<u*t)?(a=i[1]*Cc)>sl&&(sl=a):c^(u*cl<(s=(s+360)%360-180)&&s<u*t)?(a=-i[1]*Cc)<ol&&(ol=a):(n<ol&&(ol=n),n>sl&&(sl=n)),c?t<cl?tf(al,t)>tf(al,ul)&&(ul=t):tf(t,ul)>tf(al,ul)&&(al=t):ul>=al?(t<al&&(al=t),t>ul&&(ul=t)):t>cl?tf(al,t)>tf(al,ul)&&(ul=t):tf(t,ul)>tf(al,ul)&&(al=t)}else pl.push(ml=[al=t,ul=t]);n<ol&&(ol=n),n>sl&&(sl=n),hl=e,cl=t}function Xl(){Yl.point=Wl}function Ql(){ml[0]=al,ml[1]=ul,Yl.point=Gl,hl=null}function Kl(t,n){if(hl){var e=t-cl;dl.add(qc(e)>180?e+(e>0?360:-360):e)}else ll=t,fl=n;yl.point(t,n),Wl(t,n)}function Zl(){yl.lineStart()}function Jl(){Kl(ll,fl),yl.lineEnd(),qc(dl)>Mc&&(al=-(ul=180)),ml[0]=al,ml[1]=ul,hl=null}function tf(t,n){return(n-=t)<0?n+360:n}function nf(t,n){return t[0]-n[0]}function ef(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var rf={sphere:Gc,point:af,lineStart:uf,lineEnd:lf,polygonStart:function(){rf.lineStart=ff,rf.lineEnd=hf},polygonEnd:function(){rf.lineStart=uf,rf.lineEnd=lf}};function af(t,n){t*=kc;var e=zc(n*=kc);of(e*zc(t),e*jc(t),jc(n))}function of(t,n,e){++kl,Fl+=(t-Fl)/kl,Dl+=(n-Dl)/kl,zl+=(e-zl)/kl}function uf(){rf.point=sf}function sf(t,n){t*=kc;var e=zc(n*=kc);$l=e*zc(t),Ul=e*jc(t),Hl=jc(n),rf.point=cf,of($l,Ul,Hl)}function cf(t,n){t*=kc;var e=zc(n*=kc),r=e*zc(t),i=e*jc(t),a=jc(n),o=Dc(Bc((o=Ul*a-Hl*i)*o+(o=Hl*r-$l*a)*o+(o=$l*i-Ul*r)*o),$l*r+Ul*i+Hl*a);ql+=o,Il+=o*($l+($l=r)),Pl+=o*(Ul+(Ul=i)),Rl+=o*(Hl+(Hl=a)),of($l,Ul,Hl)}function lf(){rf.point=af}function ff(){rf.point=df}function hf(){pf(Ll,Bl),rf.point=af}function df(t,n){Ll=t,Bl=n,t*=kc,n*=kc,rf.point=pf;var e=zc(n);$l=e*zc(t),Ul=e*jc(t),Hl=jc(n),of($l,Ul,Hl)}function pf(t,n){t*=kc;var e=zc(n*=kc),r=e*zc(t),i=e*jc(t),a=jc(n),o=Ul*a-Hl*i,u=Hl*r-$l*a,s=$l*i-Ul*r,c=Rc(o,u,s),l=Hc(c),f=c&&-l/c;Ol.add(f*o),Vl.add(f*u),jl.add(f*s),ql+=l,Il+=l*($l+($l=r)),Pl+=l*(Ul+(Ul=i)),Rl+=l*(Hl+(Hl=a)),of($l,Ul,Hl)}function mf(t){return function(){return t}}function gf(t,n){function e(e,r){return e=t(e,r),n(e[0],e[1])}return t.invert&&n.invert&&(e.invert=function(e,r){return(e=n.invert(e,r))&&t.invert(e[0],e[1])}),e}function vf(t,n){return qc(t)>Nc&&(t-=Math.round(t/Tc)*Tc),[t,n]}function yf(t,n,e){return(t%=Tc)?n||e?gf(wf(t),xf(n,e)):wf(t):n||e?xf(n,e):vf}function bf(t){return function(n,e){return qc(n+=t)>Nc&&(n-=Math.round(n/Tc)*Tc),[n,e]}}function wf(t){var n=bf(t);return n.invert=bf(-t),n}function xf(t,n){var e=zc(t),r=jc(t),i=zc(n),a=jc(n);function o(t,n){var o=zc(n),u=zc(t)*o,s=jc(t)*o,c=jc(n),l=c*e+u*r;return[Dc(s*i-l*a,u*e-c*r),Hc(l*i+s*a)]}return o.invert=function(t,n){var o=zc(n),u=zc(t)*o,s=jc(t)*o,c=jc(n),l=c*i-s*a;return[Dc(s*i+c*a,u*e+l*r),Hc(l*e-u*r)]},o}function _f(t){function n(n){return(n=t(n[0]*kc,n[1]*kc))[0]*=Cc,n[1]*=Cc,n}return t=yf(t[0]*kc,t[1]*kc,t.length>2?t[2]*kc:0),n.invert=function(n){return(n=t.invert(n[0]*kc,n[1]*kc))[0]*=Cc,n[1]*=Cc,n},n}function Mf(t,n,e,r,i,a){if(e){var o=zc(n),u=jc(n),s=r*e;null==i?(i=n+r*Tc,a=n-s/2):(i=Sf(o,i),a=Sf(o,a),(r>0?i<a:i>a)&&(i+=r*Tc));for(var c,l=i;r>0?l>a:l<a;l-=s)c=Ml([o,-u*zc(l),-u*jc(l)]),t.point(c[0],c[1])}}function Sf(t,n){(n=Sl(n))[0]-=t,Cl(n);var e=Uc(-n[1]);return((-n[2]<0?-e:e)+Tc-Mc)%Tc}function Nf(){var t,n=[];return{point:function(n,e,r){t.push([n,e,r])},lineStart:function(){n.push(t=[])},lineEnd:Gc,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function Ef(t,n){return qc(t[0]-n[0])<Mc&&qc(t[1]-n[1])<Mc}function Af(t,n,e,r){this.x=t,this.z=n,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Tf(t,n,e,r,i){var a,o,u=[],s=[];if(t.forEach(function(t){if(!((n=t.length-1)<=0)){var n,e,r=t[0],o=t[n];if(Ef(r,o)){if(!r[2]&&!o[2]){for(i.lineStart(),a=0;a<n;++a)i.point((r=t[a])[0],r[1]);return void i.lineEnd()}o[0]+=2e-6}u.push(e=new Af(r,t,null,!0)),s.push(e.o=new Af(r,null,e,!1)),u.push(e=new Af(o,t,null,!1)),s.push(e.o=new Af(o,null,e,!0))}}),u.length){for(s.sort(n),Cf(u),Cf(s),a=0,o=s.length;a<o;++a)s[a].e=e=!e;for(var c,l,f=u[0];;){for(var h=f,d=!0;h.v;)if((h=h.n)===f)return;c=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(d)for(a=0,o=c.length;a<o;++a)i.point((l=c[a])[0],l[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(d)for(a=(c=h.p.z).length-1;a>=0;--a)i.point((l=c[a])[0],l[1]);else r(h.x,h.p.x,-1,i);h=h.p}c=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function Cf(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r<n;)i.n=e=t[r],e.p=i,i=e;i.n=e=t[0],e.p=i}}function kf(t){return qc(t[0])<=Nc?t[0]:Lc(t[0])*((qc(t[0])+Nc)%Tc-Nc)}function qf(t,n){var e=kf(n),r=n[1],i=jc(r),a=[jc(e),-zc(e),0],o=0,u=0,s=new J;1===i?r=Ec+Mc:-1===i&&(r=-Ec-Mc);for(var c=0,l=t.length;c<l;++c)if(h=(f=t[c]).length)for(var f,h,d=f[h-1],p=kf(d),m=d[1]/2+Ac,g=jc(m),v=zc(m),y=0;y<h;++y,p=w,g=_,v=M,d=b){var b=f[y],w=kf(b),x=b[1]/2+Ac,_=jc(x),M=zc(x),S=w-p,N=S>=0?1:-1,E=N*S,A=E>Nc,T=g*_;if(s.add(Dc(T*N*jc(E),v*M+T*zc(E))),o+=A?S+N*Tc:S,A^p>=e^w>=e){var C=El(Sl(d),Sl(b));Cl(C);var k=El(a,C);Cl(k);var q=(A^S>=0?-1:1)*Hc(k[2]);(r>q||r===q&&(C[0]||C[1]))&&(u+=A^S>=0?1:-1)}}return(o<-1e-6||o<Mc&&s<-1e-12)^1&u}function Ff(t,n,e,r){return function(i){var a,o,u,s=n(i),c=Nf(),l=n(c),f=!1,h={point:d,lineStart:m,lineEnd:g,polygonStart:function(){h.point=v,h.lineStart=y,h.lineEnd=b,o=[],a=[]},polygonEnd:function(){h.point=d,h.lineStart=m,h.lineEnd=g,o=Lt(o);var t=qf(a,r);o.length?(f||(i.polygonStart(),f=!0),Tf(o,zf,t,e,i)):t&&(f||(i.polygonStart(),f=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),f&&(i.polygonEnd(),f=!1),o=a=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(n,e){t(n,e)&&i.point(n,e)}function p(t,n){s.point(t,n)}function m(){h.point=p,s.lineStart()}function g(){h.point=d,s.lineEnd()}function v(t,n){u.push([t,n]),l.point(t,n)}function y(){l.lineStart(),u=[]}function b(){v(u[0][0],u[0][1]),l.lineEnd();var t,n,e,r,s=l.clean(),h=c.result(),d=h.length;if(u.pop(),a.push(u),u=null,d)if(1&s){if((n=(e=h[0]).length-1)>0){for(f||(i.polygonStart(),f=!0),i.lineStart(),t=0;t<n;++t)i.point((r=e[t])[0],r[1]);i.lineEnd()}}else d>1&&2&s&&h.push(h.pop().concat(h.shift())),o.push(h.filter(Df))}return h}}function Df(t){return t.length>1}function zf(t,n){return((t=t.x)[0]<0?t[1]-Ec-Mc:Ec-t[1])-((n=n.x)[0]<0?n[1]-Ec-Mc:Ec-n[1])}vf.invert=vf;var If=Ff(function(){return!0},function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(a,o){var u=a>0?Nc:-Nc,s=qc(a-e);qc(s-Nc)<Mc?(t.point(e,r=(r+o)/2>0?Ec:-Ec),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(a,r),n=0):i!==u&&s>=Nc&&(qc(e-i)<Mc&&(e-=i*Mc),qc(a-u)<Mc&&(a-=u*Mc),r=function(t,n,e,r){var i,a,o=jc(t-e);return qc(o)>Mc?Fc((jc(n)*(a=zc(r))*jc(e)-jc(r)*(i=zc(n))*jc(t))/(i*a*o)):(n+r)/2}(e,r,a,o),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),n=0),t.point(e=a,r=o),i=u},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}},function(t,n,e,r){var i;if(null==t)r.point(-Nc,i=e*Ec),r.point(0,i),r.point(Nc,i),r.point(Nc,0),r.point(Nc,-i),r.point(0,-i),r.point(-Nc,-i),r.point(-Nc,0),r.point(-Nc,i);else if(qc(t[0]-n[0])>Mc){var a=t[0]<n[0]?Nc:-Nc;r.point(-a,i=e*a/2),r.point(0,i),r.point(a,i)}else r.point(n[0],n[1])},[-Nc,-Ec]);function Pf(t){var n=zc(t),e=2*kc,r=n>0,i=qc(n)>Mc;function a(t,e){return zc(t)*zc(e)>n}function o(t,e,r){var i=[1,0,0],a=El(Sl(t),Sl(e)),o=Nl(a,a),u=a[0],s=o-u*u;if(!s)return!r&&t;var c=n*o/s,l=-n*u/s,f=El(i,a),h=Tl(i,c);Al(h,Tl(a,l));var d=f,p=Nl(h,d),m=Nl(d,d),g=p*p-m*(Nl(h,h)-1);if(!(g<0)){var v=Bc(g),y=Tl(d,(-p-v)/m);if(Al(y,h),y=Ml(y),!r)return y;var b,w=t[0],x=e[0],_=t[1],M=e[1];x<w&&(b=w,w=x,x=b);var S=x-w,N=qc(S-Nc)<Mc;if(!N&&M<_&&(b=_,_=M,M=b),N||S<Mc?N?_+M>0^y[1]<(qc(y[0]-w)<Mc?_:M):_<=y[1]&&y[1]<=M:S>Nc^(w<=y[0]&&y[0]<=x)){var E=Tl(d,(-p+v)/m);return Al(E,h),[y,Ml(E)]}}}function u(n,e){var i=r?t:Nc-t,a=0;return n<-i?a|=1:n>i&&(a|=2),e<-i?a|=4:e>i&&(a|=8),a}return Ff(a,function(t){var n,e,s,c,l;return{lineStart:function(){c=s=!1,l=1},point:function(f,h){var d,p=[f,h],m=a(f,h),g=r?m?0:u(f,h):m?u(f+(f<0?Nc:-Nc),h):0;if(!n&&(c=s=m)&&t.lineStart(),m!==s&&(!(d=o(n,p))||Ef(n,d)||Ef(p,d))&&(p[2]=1),m!==s)l=0,m?(t.lineStart(),d=o(p,n),t.point(d[0],d[1])):(d=o(n,p),t.point(d[0],d[1],2),t.lineEnd()),n=d;else if(i&&n&&r^m){var v;g&e||!(v=o(p,n,!0))||(l=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1],3)))}!m||n&&Ef(n,p)||t.point(p[0],p[1]),n=p,s=m,e=g},lineEnd:function(){s&&t.lineEnd(),n=null},clean:function(){return l|(c&&s)<<1}}},function(n,r,i,a){Mf(a,t,e,i,n,r)},r?[0,-t]:[-Nc,t-Nc])}var Rf,Of,Vf,jf,Lf=1e9,Bf=-Lf;function $f(t,n,e,r){function i(i,a){return t<=i&&i<=e&&n<=a&&a<=r}function a(i,a,u,c){var l=0,f=0;if(null==i||(l=o(i,u))!==(f=o(a,u))||s(i,a)<0^u>0)do{c.point(0===l||3===l?t:e,l>1?r:n)}while((l=(l+u+4)%4)!==f);else c.point(a[0],a[1])}function o(r,i){return qc(r[0]-t)<Mc?i>0?0:3:qc(r[0]-e)<Mc?i>0?2:1:qc(r[1]-n)<Mc?i>0?1:0:i>0?3:2}function u(t,n){return s(t.x,n.x)}function s(t,n){var e=o(t,1),r=o(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(o){var s,c,l,f,h,d,p,m,g,v,y,b=o,w=Nf(),x={point:_,lineStart:function(){x.point=M,c&&c.push(l=[]),v=!0,g=!1,p=m=NaN},lineEnd:function(){s&&(M(f,h),d&&g&&w.rejoin(),s.push(w.result())),x.point=_,g&&b.lineEnd()},polygonStart:function(){b=w,s=[],c=[],y=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=c.length;e<i;++e)for(var a,o,u=c[e],s=1,l=u.length,f=u[0],h=f[0],d=f[1];s<l;++s)a=h,o=d,h=(f=u[s])[0],d=f[1],o<=r?d>r&&(h-a)*(r-o)>(d-o)*(t-a)&&++n:d<=r&&(h-a)*(r-o)<(d-o)*(t-a)&&--n;return n}(),e=y&&n,i=(s=Lt(s)).length;(e||i)&&(o.polygonStart(),e&&(o.lineStart(),a(null,null,1,o),o.lineEnd()),i&&Tf(s,u,n,a,o),o.polygonEnd()),b=o,s=c=l=null}};function _(t,n){i(t,n)&&b.point(t,n)}function M(a,o){var u=i(a,o);if(c&&l.push([a,o]),v)f=a,h=o,d=u,v=!1,u&&(b.lineStart(),b.point(a,o));else if(u&&g)b.point(a,o);else{var s=[p=Math.max(Bf,Math.min(Lf,p)),m=Math.max(Bf,Math.min(Lf,m))],w=[a=Math.max(Bf,Math.min(Lf,a)),o=Math.max(Bf,Math.min(Lf,o))];!function(t,n,e,r,i,a){var o,u=t[0],s=t[1],c=0,l=1,f=n[0]-u,h=n[1]-s;if(o=e-u,f||!(o>0)){if(o/=f,f<0){if(o<c)return;o<l&&(l=o)}else if(f>0){if(o>l)return;o>c&&(c=o)}if(o=i-u,f||!(o<0)){if(o/=f,f<0){if(o>l)return;o>c&&(c=o)}else if(f>0){if(o<c)return;o<l&&(l=o)}if(o=r-s,h||!(o>0)){if(o/=h,h<0){if(o<c)return;o<l&&(l=o)}else if(h>0){if(o>l)return;o>c&&(c=o)}if(o=a-s,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>c&&(c=o)}else if(h>0){if(o<c)return;o<l&&(l=o)}return c>0&&(t[0]=u+c*f,t[1]=s+c*h),l<1&&(n[0]=u+l*f,n[1]=s+l*h),!0}}}}}(s,w,t,n,e,r)?u&&(b.lineStart(),b.point(a,o),y=!1):(g||(b.lineStart(),b.point(s[0],s[1])),b.point(w[0],w[1]),u||b.lineEnd(),y=!1)}p=a,m=o,g=u}return x}}var Uf={sphere:Gc,point:Gc,lineStart:function(){Uf.point=Yf,Uf.lineEnd=Hf},lineEnd:Gc,polygonStart:Gc,polygonEnd:Gc};function Hf(){Uf.point=Uf.lineEnd=Gc}function Yf(t,n){Of=t*=kc,Vf=jc(n*=kc),jf=zc(n),Uf.point=Gf}function Gf(t,n){t*=kc;var e=jc(n*=kc),r=zc(n),i=qc(t-Of),a=zc(i),o=r*jc(i),u=jf*e-Vf*r*a,s=Vf*e+jf*r*a;Rf.add(Dc(Bc(o*o+u*u),s)),Of=t,Vf=e,jf=r}function Wf(t){return Rf=new J,Jc(t,Uf),+Rf}var Xf=[null,null],Qf={type:"LineString",coordinates:Xf};function Kf(t,n){return Xf[0]=t,Xf[1]=n,Wf(Qf)}var Zf={Feature:function(t,n){return th(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)if(th(e[r].geometry,n))return!0;return!1}},Jf={Sphere:function(){return!0},Point:function(t,n){return nh(t.coordinates,n)},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(nh(e[r],n))return!0;return!1},LineString:function(t,n){return eh(t.coordinates,n)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(eh(e[r],n))return!0;return!1},Polygon:function(t,n){return rh(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(rh(e[r],n))return!0;return!1},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)if(th(e[r],n))return!0;return!1}};function th(t,n){return!(!t||!Jf.hasOwnProperty(t.type))&&Jf[t.type](t,n)}function nh(t,n){return 0===Kf(t,n)}function eh(t,n){for(var e,r,i,a=0,o=t.length;a<o;a++){if(0===(r=Kf(t[a],n)))return!0;if(a>0&&(i=Kf(t[a],t[a-1]))>0&&e<=i&&r<=i&&(e+r-i)*(1-Math.pow((e-r)/i,2))<Sc*i)return!0;e=r}return!1}function rh(t,n){return!!qf(t.map(ih),ah(n))}function ih(t){return(t=t.map(ah)).pop(),t}function ah(t){return[t[0]*kc,t[1]*kc]}function oh(t,n,e){var r=$t(t,n-Mc,e).concat(n);return function(t){return r.map(function(n){return[t,n]})}}function uh(t,n,e){var r=$t(t,n-Mc,e).concat(n);return function(t){return r.map(function(n){return[n,t]})}}function sh(){var t,n,e,r,i,a,o,u,s,c,l,f,h=10,d=h,p=90,m=360,g=2.5;function v(){return{type:"MultiLineString",coordinates:y()}}function y(){return $t(Ic(r/p)*p,e,p).map(l).concat($t(Ic(u/m)*m,o,m).map(f)).concat($t(Ic(n/h)*h,t,h).filter(function(t){return qc(t%p)>Mc}).map(s)).concat($t(Ic(a/d)*d,i,d).filter(function(t){return qc(t%m)>Mc}).map(c))}return v.lines=function(){return y().map(function(t){return{type:"LineString",coordinates:t}})},v.outline=function(){return{type:"Polygon",coordinates:[l(r).concat(f(o).slice(1),l(e).reverse().slice(1),f(u).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(u=+t[0][1],o=+t[1][1],(r=+t[0][0])>(e=+t[1][0])&&(t=r,r=e,e=t),u>o&&(t=u,u=o,o=t),v.precision(g)):[[r,u],[e,o]]},v.extentMinor=function(e){return arguments.length?(a=+e[0][1],i=+e[1][1],(n=+e[0][0])>(t=+e[1][0])&&(e=n,n=t,t=e),a>i&&(e=a,a=i,i=e),v.precision(g)):[[n,a],[t,i]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],m=+t[1],v):[p,m]},v.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],v):[h,d]},v.precision=function(h){return arguments.length?(g=+h,s=oh(a,i,90),c=uh(n,t,g),l=oh(u,o,90),f=uh(r,e,g),v):g},v.extentMajor([[-180,-89.999999],[180,89.999999]]).extentMinor([[-180,-80.000001],[180,80.000001]])}var ch,lh,fh,hh,dh=t=>t,ph=new J,mh=new J,gh={point:Gc,lineStart:Gc,lineEnd:Gc,polygonStart:function(){gh.lineStart=vh,gh.lineEnd=wh},polygonEnd:function(){gh.lineStart=gh.lineEnd=gh.point=Gc,ph.add(qc(mh)),mh=new J},result:function(){var t=ph/2;return ph=new J,t}};function vh(){gh.point=yh}function yh(t,n){gh.point=bh,ch=fh=t,lh=hh=n}function bh(t,n){mh.add(hh*t-fh*n),fh=t,hh=n}function wh(){bh(ch,lh)}var xh,_h,Mh,Sh,Nh=gh,Eh=Infinity,Ah=Eh,Th=-Eh,Ch=Th,kh={point:function(t,n){t<Eh&&(Eh=t),t>Th&&(Th=t),n<Ah&&(Ah=n),n>Ch&&(Ch=n)},lineStart:Gc,lineEnd:Gc,polygonStart:Gc,polygonEnd:Gc,result:function(){var t=[[Eh,Ah],[Th,Ch]];return Th=Ch=-(Ah=Eh=Infinity),t}},qh=kh,Fh=0,Dh=0,zh=0,Ih=0,Ph=0,Rh=0,Oh=0,Vh=0,jh=0,Lh={point:Bh,lineStart:$h,lineEnd:Yh,polygonStart:function(){Lh.lineStart=Gh,Lh.lineEnd=Wh},polygonEnd:function(){Lh.point=Bh,Lh.lineStart=$h,Lh.lineEnd=Yh},result:function(){var t=jh?[Oh/jh,Vh/jh]:Rh?[Ih/Rh,Ph/Rh]:zh?[Fh/zh,Dh/zh]:[NaN,NaN];return Fh=Dh=zh=Ih=Ph=Rh=Oh=Vh=jh=0,t}};function Bh(t,n){Fh+=t,Dh+=n,++zh}function $h(){Lh.point=Uh}function Uh(t,n){Lh.point=Hh,Bh(Mh=t,Sh=n)}function Hh(t,n){var e=t-Mh,r=n-Sh,i=Bc(e*e+r*r);Ih+=i*(Mh+t)/2,Ph+=i*(Sh+n)/2,Rh+=i,Bh(Mh=t,Sh=n)}function Yh(){Lh.point=Bh}function Gh(){Lh.point=Xh}function Wh(){Qh(xh,_h)}function Xh(t,n){Lh.point=Qh,Bh(xh=Mh=t,_h=Sh=n)}function Qh(t,n){var e=t-Mh,r=n-Sh,i=Bc(e*e+r*r);Ih+=i*(Mh+t)/2,Ph+=i*(Sh+n)/2,Rh+=i,Oh+=(i=Sh*t-Mh*n)*(Mh+t),Vh+=i*(Sh+n),jh+=3*i,Bh(Mh=t,Sh=n)}var Kh=Lh;function Zh(t){this._context=t}Zh.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,Tc)}},result:Gc};var Jh,td,nd,ed,rd,id=new J,ad={point:Gc,lineStart:function(){ad.point=od},lineEnd:function(){Jh&&ud(td,nd),ad.point=Gc},polygonStart:function(){Jh=!0},polygonEnd:function(){Jh=null},result:function(){var t=+id;return id=new J,t}};function od(t,n){ad.point=ud,td=ed=t,nd=rd=n}function ud(t,n){id.add(Bc((ed-=t)*ed+(rd-=n)*rd)),ed=t,rd=n}var sd=ad;let cd,ld,fd,hd;class dd{constructor(t){this._append=null==t?pd:function(t){const n=Math.floor(t);if(!(n>=0))throw new RangeError(`invalid digits: ${t}`);if(n>15)return pd;if(n!==cd){const t=10**n;cd=n,ld=function(n){let e=1;this._+=n[0];for(const r=n.length;e<r;++e)this._+=Math.round(arguments[e]*t)/t+n[e]}}return ld}(t),this._radius=4.5,this._=""}pointRadius(t){return this._radius=+t,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){0===this._line&&(this._+="Z"),this._point=NaN}point(t,n){switch(this._point){case 0:this._append`M${t},${n}`,this._point=1;break;case 1:this._append`L${t},${n}`;break;default:if(this._append`M${t},${n}`,this._radius!==fd||this._append!==ld){const t=this._radius,n=this._;this._="",this._append`m0,${t}a${t},${t} 0 1,1 0,${-2*t}a${t},${t} 0 1,1 0,${2*t}z`,fd=t,ld=this._append,hd=this._,this._=n}this._+=hd}}result(){const t=this._;return this._="",t.length?t:null}}function pd(t){let n=1;this._+=t[0];for(const e=t.length;n<e;++n)this._+=arguments[n]+t[n]}function md(t){return function(n){var e=new gd;for(var r in t)e[r]=t[r];return e.stream=n,e}}function gd(){}function vd(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),Jc(e,t.stream(qh)),n(qh.result()),null!=r&&t.clipExtent(r),t}function yd(t,n,e){return vd(t,function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],a=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),o=+n[0][0]+(r-a*(e[1][0]+e[0][0]))/2,u=+n[0][1]+(i-a*(e[1][1]+e[0][1]))/2;t.scale(150*a).translate([o,u])},e)}function bd(t,n,e){return yd(t,[[0,0],n],e)}function wd(t,n,e){return vd(t,function(e){var r=+n,i=r/(e[1][0]-e[0][0]),a=(r-i*(e[1][0]+e[0][0]))/2,o=-i*e[0][1];t.scale(150*i).translate([a,o])},e)}function xd(t,n,e){return vd(t,function(e){var r=+n,i=r/(e[1][1]-e[0][1]),a=-i*e[0][0],o=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([a,o])},e)}gd.prototype={constructor:gd,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var _d=zc(30*kc);function Md(t,n){return+n?function(t,n){function e(r,i,a,o,u,s,c,l,f,h,d,p,m,g){var v=c-r,y=l-i,b=v*v+y*y;if(b>4*n&&m--){var w=o+h,x=u+d,_=s+p,M=Bc(w*w+x*x+_*_),S=Hc(_/=M),N=qc(qc(_)-1)<Mc||qc(a-f)<Mc?(a+f)/2:Dc(x,w),E=t(N,S),A=E[0],T=E[1],C=A-r,k=T-i,q=y*C-v*k;(q*q/b>n||qc((v*C+y*k)/b-.5)>.3||o*h+u*d+s*p<_d)&&(e(r,i,a,o,u,s,A,T,N,w/=M,x/=M,_,m,g),g.point(A,T),e(A,T,N,w,x,_,c,l,f,h,d,p,m,g))}}return function(n){var r,i,a,o,u,s,c,l,f,h,d,p,m={point:g,lineStart:v,lineEnd:b,polygonStart:function(){n.polygonStart(),m.lineStart=w},polygonEnd:function(){n.polygonEnd(),m.lineStart=v}};function g(e,r){e=t(e,r),n.point(e[0],e[1])}function v(){l=NaN,m.point=y,n.lineStart()}function y(r,i){var a=Sl([r,i]),o=t(r,i);e(l,f,c,h,d,p,l=o[0],f=o[1],c=r,h=a[0],d=a[1],p=a[2],16,n),n.point(l,f)}function b(){m.point=g,n.lineEnd()}function w(){v(),m.point=x,m.lineEnd=_}function x(t,n){y(r=t,n),i=l,a=f,o=h,u=d,s=p,m.point=y}function _(){e(l,f,c,h,d,p,i,a,r,o,u,s,16,n),m.lineEnd=b,b()}return m}}(t,n):function(t){return md({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}(t)}var Sd=md({point:function(t,n){this.stream.point(t*kc,n*kc)}});function Nd(t,n,e,r,i,a){if(!a)return function(t,n,e,r,i){function a(a,o){return[n+t*(a*=r),e-t*(o*=i)]}return a.invert=function(a,o){return[(a-n)/t*r,(e-o)/t*i]},a}(t,n,e,r,i);var o=zc(a),u=jc(a),s=o*t,c=u*t,l=o/t,f=u/t,h=(u*e-o*n)/t,d=(u*n+o*e)/t;function p(t,a){return[s*(t*=r)-c*(a*=i)+n,e-c*t-s*a]}return p.invert=function(t,n){return[r*(l*t-f*n+h),i*(d-f*t-l*n)]},p}function Ed(t){return Ad(function(){return t})()}function Ad(t){var n,e,r,i,a,o,u,s,c,l,f=150,h=480,d=250,p=0,m=0,g=0,v=0,y=0,b=0,w=1,x=1,_=null,M=If,S=null,N=dh,E=.5;function A(t){return s(t[0]*kc,t[1]*kc)}function T(t){return(t=s.invert(t[0],t[1]))&&[t[0]*Cc,t[1]*Cc]}function C(){var t=Nd(f,0,0,w,x,b).apply(null,n(p,m)),r=Nd(f,h-t[0],d-t[1],w,x,b);return e=yf(g,v,y),u=gf(n,r),s=gf(e,u),o=Md(u,E),k()}function k(){return c=l=null,A}return A.stream=function(t){return c&&l===t?c:c=Sd(function(t){return md({point:function(n,e){var r=t(n,e);return this.stream.point(r[0],r[1])}})}(e)(M(o(N(l=t)))))},A.preclip=function(t){return arguments.length?(M=t,_=void 0,k()):M},A.postclip=function(t){return arguments.length?(N=t,S=r=i=a=null,k()):N},A.clipAngle=function(t){return arguments.length?(M=+t?Pf(_=t*kc):(_=null,If),k()):_*Cc},A.clipExtent=function(t){return arguments.length?(N=null==t?(S=r=i=a=null,dh):$f(S=+t[0][0],r=+t[0][1],i=+t[1][0],a=+t[1][1]),k()):null==S?null:[[S,r],[i,a]]},A.scale=function(t){return arguments.length?(f=+t,C()):f},A.translate=function(t){return arguments.length?(h=+t[0],d=+t[1],C()):[h,d]},A.center=function(t){return arguments.length?(p=t[0]%360*kc,m=t[1]%360*kc,C()):[p*Cc,m*Cc]},A.rotate=function(t){return arguments.length?(g=t[0]%360*kc,v=t[1]%360*kc,y=t.length>2?t[2]%360*kc:0,C()):[g*Cc,v*Cc,y*Cc]},A.angle=function(t){return arguments.length?(b=t%360*kc,C()):b*Cc},A.reflectX=function(t){return arguments.length?(w=t?-1:1,C()):w<0},A.reflectY=function(t){return arguments.length?(x=t?-1:1,C()):x<0},A.precision=function(t){return arguments.length?(o=Md(u,E=t*t),k()):Bc(E)},A.fitExtent=function(t,n){return yd(A,t,n)},A.fitSize=function(t,n){return bd(A,t,n)},A.fitWidth=function(t,n){return wd(A,t,n)},A.fitHeight=function(t,n){return xd(A,t,n)},function(){return n=t.apply(this,arguments),A.invert=n.invert&&T,C()}}function Td(t){var n=0,e=Nc/3,r=Ad(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*kc,e=t[1]*kc):[n*Cc,e*Cc]},i}function Cd(t,n){var e=jc(t),r=(e+jc(n))/2;if(qc(r)<Mc)return function(t){var n=zc(t);function e(t,e){return[t*n,jc(e)/n]}return e.invert=function(t,e){return[t/n,Hc(e*n)]},e}(t);var i=1+e*(2*r-e),a=Bc(i)/r;function o(t,n){var e=Bc(i-2*r*jc(n))/r;return[e*jc(t*=r),a-e*zc(t)]}return o.invert=function(t,n){var e=a-n,o=Dc(t,qc(e))*Lc(e);return e*r<0&&(o-=Nc*Lc(t)*Lc(e)),[o/r,Hc((i-(t*t+e*e)*r*r)/(2*r))]},o}function kd(){return Td(Cd).scale(155.424).center([0,33.6442])}function qd(){return kd().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Fd(t){return function(n,e){var r=zc(n),i=zc(e),a=t(r*i);return Infinity===a?[2,0]:[a*i*jc(n),a*jc(e)]}}function Dd(t){return function(n,e){var r=Bc(n*n+e*e),i=t(r),a=jc(i),o=zc(i);return[Dc(n*a,r*o),Hc(r&&e*a/r)]}}var zd=Fd(function(t){return Bc(2/(1+t))});zd.invert=Dd(function(t){return 2*Hc(t/2)});var Id=Fd(function(t){return(t=Uc(t))&&t/jc(t)});function Pd(t,n){return[t,Oc($c((Ec+n)/2))]}function Rd(t){var n,e,r,i=Ed(t),a=i.center,o=i.scale,u=i.translate,s=i.clipExtent,c=null;function l(){var a=Nc*o(),u=i(_f(i.rotate()).invert([0,0]));return s(null==c?[[u[0]-a,u[1]-a],[u[0]+a,u[1]+a]]:t===Pd?[[Math.max(u[0]-a,c),n],[Math.min(u[0]+a,e),r]]:[[c,Math.max(u[1]-a,n)],[e,Math.min(u[1]+a,r)]])}return i.scale=function(t){return arguments.length?(o(t),l()):o()},i.translate=function(t){return arguments.length?(u(t),l()):u()},i.center=function(t){return arguments.length?(a(t),l()):a()},i.clipExtent=function(t){return arguments.length?(null==t?c=n=e=r=null:(c=+t[0][0],n=+t[0][1],e=+t[1][0],r=+t[1][1]),l()):null==c?null:[[c,n],[e,r]]},l()}function Od(t){return $c((Ec+t)/2)}function Vd(t,n){var e=zc(t),r=t===n?jc(t):Oc(e/zc(n))/Oc(Od(n)/Od(t)),i=e*Vc(Od(t),r)/r;if(!r)return Pd;function a(t,n){i>0?n<-Ec+Mc&&(n=-Ec+Mc):n>Ec-Mc&&(n=Ec-Mc);var e=i/Vc(Od(n),r);return[e*jc(r*t),i-e*zc(r*t)]}return a.invert=function(t,n){var e=i-n,a=Lc(r)*Bc(t*t+e*e),o=Dc(t,qc(e))*Lc(e);return e*r<0&&(o-=Nc*Lc(t)*Lc(e)),[o/r,2*Fc(Vc(i/a,1/r))-Ec]},a}function jd(t,n){return[t,n]}function Ld(t,n){var e=zc(t),r=t===n?jc(t):(e-zc(n))/(n-t),i=e/r+t;if(qc(r)<Mc)return jd;function a(t,n){var e=i-n,a=r*t;return[e*jc(a),i-e*zc(a)]}return a.invert=function(t,n){var e=i-n,a=Dc(t,qc(e))*Lc(e);return e*r<0&&(a-=Nc*Lc(t)*Lc(e)),[a/r,i-Lc(r)*Bc(t*t+e*e)]},a}Id.invert=Dd(function(t){return t}),Pd.invert=function(t,n){return[t,2*Fc(Pc(n))-Ec]},jd.invert=jd;var Bd=1.340264,$d=-.081106,Ud=893e-6,Hd=.003796,Yd=Bc(3)/2;function Gd(t,n){var e=Hc(Yd*jc(n)),r=e*e,i=r*r*r;return[t*zc(e)/(Yd*(Bd+3*$d*r+i*(7*Ud+9*Hd*r))),e*(Bd+$d*r+i*(Ud+Hd*r))]}function Wd(t,n){var e=zc(n),r=zc(t)*e;return[e*jc(t)/r,jc(n)/r]}function Xd(t,n){var e=n*n,r=e*e;return[t*(.8707-.131979*e+r*(r*(.003971*e-.001529*r)-.013791)),n*(1.007226+e*(.015085+r*(.028874*e-.044475-.005916*r)))]}function Qd(t,n){return[zc(n)*jc(t),jc(n)]}function Kd(t,n){var e=zc(n),r=1+zc(t)*e;return[e*jc(t)/r,jc(n)/r]}function Zd(t,n){return[Oc($c((Ec+n)/2)),-t]}function Jd(t,n){return t.parent===n.parent?1:2}function tp(t,n){return t+n.x}function np(t,n){return Math.max(t,n.y)}function ep(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function rp(t,n){t instanceof Map?(t=[void 0,t],void 0===n&&(n=ap)):void 0===n&&(n=ip);for(var e,r,i,a,o,u=new sp(t),s=[u];e=s.pop();)if((i=n(e.data))&&(o=(i=Array.from(i)).length))for(e.children=i,a=o-1;a>=0;--a)s.push(r=i[a]=new sp(i[a])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(up)}function ip(t){return t.children}function ap(t){return Array.isArray(t)?t[1]:null}function op(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function up(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function sp(t){this.data=t,this.depth=this.height=0,this.parent=null}function cp(t){return null==t?null:lp(t)}function lp(t){if("function"!=typeof t)throw new Error;return t}function fp(){return 0}function hp(t){return function(){return t}}Gd.invert=function(t,n){for(var e,r=n,i=r*r,a=i*i*i,o=0;o<12&&(a=(i=(r-=e=(r*(Bd+$d*i+a*(Ud+Hd*i))-n)/(Bd+3*$d*i+a*(7*Ud+9*Hd*i)))*r)*i*i,!(qc(e)<Sc));++o);return[Yd*t*(Bd+3*$d*i+a*(7*Ud+9*Hd*i))/zc(r),Hc(jc(r)/Yd)]},Wd.invert=Dd(Fc),Xd.invert=function(t,n){var e,r=n,i=25;do{var a=r*r,o=a*a;r-=e=(r*(1.007226+a*(.015085+o*(.028874*a-.044475-.005916*o)))-n)/(1.007226+a*(.045255+o*(.259866*a-.311325-.005916*11*o)))}while(qc(e)>Mc&&--i>0);return[t/(.8707+(a=r*r)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),r]},Qd.invert=Dd(Hc),Kd.invert=Dd(function(t){return 2*Fc(t)}),Zd.invert=function(t,n){return[-n,2*Fc(Pc(t))-Ec]},sp.prototype=rp.prototype={constructor:sp,count:function(){return this.eachAfter(ep)},each:function(t,n){let e=-1;for(const r of this)t.call(n,r,++e,this);return this},eachAfter:function(t,n){for(var e,r,i,a=this,o=[a],u=[],s=-1;a=o.pop();)if(u.push(a),e=a.children)for(r=0,i=e.length;r<i;++r)o.push(e[r]);for(;a=u.pop();)t.call(n,a,++s,this);return this},eachBefore:function(t,n){for(var e,r,i=this,a=[i],o=-1;i=a.pop();)if(t.call(n,i,++o,this),e=i.children)for(r=e.length-1;r>=0;--r)a.push(e[r]);return this},find:function(t,n){let e=-1;for(const r of this)if(t.call(n,r,++e,this))return r},sum:function(t){return this.eachAfter(function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e})},sort:function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;for(t=e.pop(),n=r.pop();t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)r.push(n=n.parent);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t},links:function(){var t=this,n=[];return t.each(function(e){e!==t&&n.push({source:e.parent,target:e})}),n},copy:function(){return rp(this).eachBefore(op)},[Symbol.iterator]:function*(){var t,n,e,r,i=this,a=[i];do{for(t=a.reverse(),a=[];i=t.pop();)if(yield i,n=i.children)for(e=0,r=n.length;e<r;++e)a.push(n[e])}while(a.length)}};const dp=4294967296;function pp(){let t=1;return()=>(t=(1664525*t+1013904223)%dp)/dp}function mp(t,n){for(var e,r,i=0,a=(t=function(t,n){let e,r,i=t.length;for(;i;)r=n()*i--|0,e=t[i],t[i]=t[r],t[r]=e;return t}(Array.from(t),n)).length,o=[];i<a;)e=t[i],r&&yp(r,e)?++i:(r=wp(o=gp(o,e)),i=0);return r}function gp(t,n){var e,r;if(bp(n,t))return[n];for(e=0;e<t.length;++e)if(vp(n,t[e])&&bp(xp(t[e],n),t))return[t[e],n];for(e=0;e<t.length-1;++e)for(r=e+1;r<t.length;++r)if(vp(xp(t[e],t[r]),n)&&vp(xp(t[e],n),t[r])&&vp(xp(t[r],n),t[e])&&bp(_p(t[e],t[r],n),t))return[t[e],t[r],n];throw new Error}function vp(t,n){var e=t.r-n.r,r=n.x-t.x,i=n.y-t.y;return e<0||e*e<r*r+i*i}function yp(t,n){var e=t.r-n.r+1e-9*Math.max(t.r,n.r,1),r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function bp(t,n){for(var e=0;e<n.length;++e)if(!yp(t,n[e]))return!1;return!0}function wp(t){switch(t.length){case 1:return function(t){return{x:t.x,y:t.y,r:t.r}}(t[0]);case 2:return xp(t[0],t[1]);case 3:return _p(t[0],t[1],t[2])}}function xp(t,n){var e=t.x,r=t.y,i=t.r,a=n.x,o=n.y,u=n.r,s=a-e,c=o-r,l=u-i,f=Math.sqrt(s*s+c*c);return{x:(e+a+s/f*l)/2,y:(r+o+c/f*l)/2,r:(f+i+u)/2}}function _p(t,n,e){var r=t.x,i=t.y,a=t.r,o=n.x,u=n.y,s=n.r,c=e.x,l=e.y,f=e.r,h=r-o,d=r-c,p=i-u,m=i-l,g=s-a,v=f-a,y=r*r+i*i-a*a,b=y-o*o-u*u+s*s,w=y-c*c-l*l+f*f,x=d*p-h*m,_=(p*w-m*b)/(2*x)-r,M=(m*g-p*v)/x,S=(d*b-h*w)/(2*x)-i,N=(h*v-d*g)/x,E=M*M+N*N-1,A=2*(a+_*M+S*N),T=_*_+S*S-a*a,C=-(Math.abs(E)>1e-6?(A+Math.sqrt(A*A-4*E*T))/(2*E):T/A);return{x:r+_+M*C,y:i+S+N*C,r:C}}function Mp(t,n,e){var r,i,a,o,u=t.x-n.x,s=t.y-n.y,c=u*u+s*s;c?(i=n.r+e.r,o=t.r+e.r,(i*=i)>(o*=o)?(r=(c+o-i)/(2*c),a=Math.sqrt(Math.max(0,o/c-r*r)),e.x=t.x-r*u-a*s,e.y=t.y-r*s+a*u):(r=(c+i-o)/(2*c),a=Math.sqrt(Math.max(0,i/c-r*r)),e.x=n.x+r*u-a*s,e.y=n.y+r*s+a*u)):(e.x=n.x+e.r,e.y=n.y)}function Sp(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function Np(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,a=(n.y*e.r+e.y*n.r)/r;return i*i+a*a}function Ep(t){this._=t,this.next=null,this.previous=null}function Ap(t,n){if(!(a=(t=function(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}(t)).length))return 0;var e,r,i,a,o,u,s,c,l,f,h;if((e=t[0]).x=0,e.y=0,!(a>1))return e.r;if(e.x=-(r=t[1]).r,r.x=e.r,r.y=0,!(a>2))return e.r+r.r;Mp(r,e,i=t[2]),e=new Ep(e),r=new Ep(r),i=new Ep(i),e.next=i.previous=r,r.next=e.previous=i,i.next=r.previous=e;t:for(s=3;s<a;++s){Mp(e._,r._,i=t[s]),i=new Ep(i),c=r.next,l=e.previous,f=r._.r,h=e._.r;do{if(f<=h){if(Sp(c._,i._)){e.next=r=c,r.previous=e,--s;continue t}f+=c._.r,c=c.next}else{if(Sp(l._,i._)){(e=l).next=r,r.previous=e,--s;continue t}h+=l._.r,l=l.previous}}while(c!==l.next);for(i.previous=e,i.next=r,e.next=r.previous=r=i,o=Np(e);(i=i.next)!==r;)(u=Np(i))<o&&(e=i,o=u);r=e.next}for(e=[r._],i=r;(i=i.next)!==r;)e.push(i._);for(i=mp(e,n),s=0;s<a;++s)(e=t[s]).x-=i.x,e.y-=i.y;return i.r}function Tp(t){return Math.sqrt(t.value)}function Cp(t){return function(n){n.children||(n.r=Math.max(0,+t(n)||0))}}function kp(t,n,e){return function(r){if(i=r.children){var i,a,o,u=i.length,s=t(r)*n||0;if(s)for(a=0;a<u;++a)i[a].r+=s;if(o=Ap(i,e),s)for(a=0;a<u;++a)i[a].r-=s;r.r=o+s}}}function qp(t){return function(n){var e=n.parent;n.r*=t,e&&(n.x=e.x+t*n.x,n.y=e.y+t*n.y)}}function Fp(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function Dp(t,n,e,r,i){for(var a,o=t.children,u=-1,s=o.length,c=t.value&&(r-n)/t.value;++u<s;)(a=o[u]).y0=e,a.y1=i,a.x0=n,a.x1=n+=a.value*c}var zp={depth:-1},Ip={},Pp={};function Rp(t){return t.id}function Op(t){return t.parentId}function Vp(t){let n=t.length;if(n<2)return"";for(;--n>1&&!jp(t,n););return t.slice(0,n)}function jp(t,n){if("/"===t[n]){let e=0;for(;n>0&&"\\"===t[--n];)++e;if(!(1&e))return!0}return!1}function Lp(t,n){return t.parent===n.parent?1:2}function Bp(t){var n=t.children;return n?n[0]:t.t}function $p(t){var n=t.children;return n?n[n.length-1]:t.t}function Up(t,n,e){var r=e/(n.i-t.i);n.c-=r,n.s+=e,t.c+=r,n.z+=e,n.m+=e}function Hp(t,n,e){return t.a.parent===n.parent?t.a:e}function Yp(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function Gp(t,n,e,r,i){for(var a,o=t.children,u=-1,s=o.length,c=t.value&&(i-e)/t.value;++u<s;)(a=o[u]).x0=n,a.x1=r,a.y0=e,a.y1=e+=a.value*c}Yp.prototype=Object.create(sp.prototype);var Wp=(1+Math.sqrt(5))/2;function Xp(t,n,e,r,i,a){for(var o,u,s,c,l,f,h,d,p,m,g,v=[],y=n.children,b=0,w=0,x=y.length,_=n.value;b<x;){s=i-e,c=a-r;do{l=y[w++].value}while(!l&&w<x);for(f=h=l,g=l*l*(m=Math.max(c/s,s/c)/(_*t)),p=Math.max(h/g,g/f);w<x;++w){if(l+=u=y[w].value,u<f&&(f=u),u>h&&(h=u),g=l*l*m,(d=Math.max(h/g,g/f))>p){l-=u;break}p=d}v.push(o={value:l,dice:s<c,children:y.slice(b,w)}),o.dice?Dp(o,e,r,i,_?r+=c*l/_:a):Gp(o,e,r,_?e+=s*l/_:i,a),_-=l,b=w}return v}var Qp=function t(n){function e(t,e,r,i,a){Xp(n,t,e,r,i,a)}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(Wp),Kp=function t(n){function e(t,e,r,i,a){if((o=t._squarify)&&o.ratio===n)for(var o,u,s,c,l,f=-1,h=o.length,d=t.value;++f<h;){for(s=(u=o[f]).children,c=u.value=0,l=s.length;c<l;++c)u.value+=s[c].value;u.dice?Dp(u,e,r,i,d?r+=(a-r)*u.value/d:a):Gp(u,e,r,d?e+=(i-e)*u.value/d:i,a),d-=u.value}else t._squarify=o=Xp(n,t,e,r,i,a),o.ratio=n}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(Wp);function Zp(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])}function Jp(t,n){return t[0]-n[0]||t[1]-n[1]}function tm(t){const n=t.length,e=[0,1];let r,i=2;for(r=2;r<n;++r){for(;i>1&&Zp(t[e[i-2]],t[e[i-1]],t[r])<=0;)--i;e[i++]=r}return e.slice(0,i)}var nm=Math.random,em=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(nm),rm=function t(n){function e(t,e){return arguments.length<2&&(e=t,t=0),t=Math.floor(t),e=Math.floor(e)-t,function(){return Math.floor(n()*e+t)}}return e.source=t,e}(nm),im=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var a;if(null!=r)a=r,r=null;else do{r=2*n()-1,a=2*n()-1,i=r*r+a*a}while(!i||i>1);return t+e*a*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(nm),am=function t(n){var e=im.source(n);function r(){var t=e.apply(this,arguments);return function(){return Math.exp(t())}}return r.source=t,r}(nm),om=function t(n){function e(t){return(t=+t)<=0?()=>0:function(){for(var e=0,r=t;r>1;--r)e+=n();return e+r*n()}}return e.source=t,e}(nm),um=function t(n){var e=om.source(n);function r(t){if(0===(t=+t))return n;var r=e(t);return function(){return r()/t}}return r.source=t,r}(nm),sm=function t(n){function e(t){return function(){return-Math.log1p(-n())/t}}return e.source=t,e}(nm),cm=function t(n){function e(t){if((t=+t)<0)throw new RangeError("invalid alpha");return t=1/-t,function(){return Math.pow(1-n(),t)}}return e.source=t,e}(nm),lm=function t(n){function e(t){if((t=+t)<0||t>1)throw new RangeError("invalid p");return function(){return Math.floor(n()+t)}}return e.source=t,e}(nm),fm=function t(n){function e(t){if((t=+t)<0||t>1)throw new RangeError("invalid p");return 0===t?()=>Infinity:1===t?()=>1:(t=Math.log1p(-t),function(){return 1+Math.floor(Math.log1p(-n())/t)})}return e.source=t,e}(nm),hm=function t(n){var e=im.source(n)();function r(t,r){if((t=+t)<0)throw new RangeError("invalid k");if(0===t)return()=>0;if(r=null==r?1:+r,1===t)return()=>-Math.log1p(-n())*r;var i=(t<1?t+1:t)-1/3,a=1/(3*Math.sqrt(i)),o=t<1?()=>Math.pow(n(),1/t):()=>1;return function(){do{do{var t=e(),u=1+a*t}while(u<=0);u*=u*u;var s=1-n()}while(s>=1-.0331*t*t*t*t&&Math.log(s)>=.5*t*t+i*(1-u+Math.log(u)));return i*u*o()*r}}return r.source=t,r}(nm),dm=function t(n){var e=hm.source(n);function r(t,n){var r=e(t),i=e(n);return function(){var t=r();return 0===t?0:t/(t+i())}}return r.source=t,r}(nm),pm=function t(n){var e=fm.source(n),r=dm.source(n);function i(t,n){return t=+t,(n=+n)>=1?()=>t:n<=0?()=>0:function(){for(var i=0,a=t,o=n;a*o>16&&a*(1-o)>16;){var u=Math.floor((a+1)*o),s=r(u,a-u+1)();s<=o?(i+=u,a-=u,o=(o-s)/(1-s)):(a=u-1,o/=s)}for(var c=o<.5,l=e(c?o:1-o),f=l(),h=0;f<=a;++h)f+=l();return i+(c?h:a-h)}}return i.source=t,i}(nm),mm=function t(n){function e(t,e,r){var i;return 0===(t=+t)?i=t=>-Math.log(t):(t=1/t,i=n=>Math.pow(n,t)),e=null==e?0:+e,r=null==r?1:+r,function(){return e+r*i(-Math.log1p(-n()))}}return e.source=t,e}(nm),gm=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,function(){return t+e*Math.tan(Math.PI*n())}}return e.source=t,e}(nm),vm=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,function(){var r=n();return t+e*Math.log(r/(1-r))}}return e.source=t,e}(nm),ym=function t(n){var e=hm.source(n),r=pm.source(n);function i(t){return function(){for(var i=0,a=t;a>16;){var o=Math.floor(.875*a),u=e(o)();if(u>a)return i+r(o-1,a/u)();i+=o,a-=u}for(var s=-Math.log1p(-n()),c=0;s<=a;++c)s-=Math.log1p(-n());return i+c}}return i.source=t,i}(nm);const bm=1/4294967296;function wm(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function xm(t,n){switch(arguments.length){case 0:break;case 1:"function"==typeof t?this.interpolator(t):this.range(t);break;default:this.domain(t),"function"==typeof n?this.interpolator(n):this.range(n)}return this}const _m=Symbol("implicit");function Mm(){var t=new tt,n=[],e=[],r=_m;function i(i){let a=t.get(i);if(void 0===a){if(r!==_m)return r;t.set(i,a=n.push(i)-1)}return e[a%e.length]}return i.domain=function(e){if(!arguments.length)return n.slice();n=[],t=new tt;for(const r of e)t.has(r)||t.set(r,n.push(r)-1);return i},i.range=function(t){return arguments.length?(e=Array.from(t),i):e.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return Mm(n,e).unknown(r)},wm.apply(i,arguments),i}function Sm(){var t,n,e=Mm().unknown(void 0),r=e.domain,i=e.range,a=0,o=1,u=!1,s=0,c=0,l=.5;function f(){var e=r().length,f=o<a,h=f?o:a,d=f?a:o;t=(d-h)/Math.max(1,e-s+2*c),u&&(t=Math.floor(t)),h+=(d-h-t*(e-s))*l,n=t*(1-s),u&&(h=Math.round(h),n=Math.round(n));var p=$t(e).map(function(n){return h+t*n});return i(f?p.reverse():p)}return delete e.unknown,e.domain=function(t){return arguments.length?(r(t),f()):r()},e.range=function(t){return arguments.length?([a,o]=t,a=+a,o=+o,f()):[a,o]},e.rangeRound=function(t){return[a,o]=t,a=+a,o=+o,u=!0,f()},e.bandwidth=function(){return n},e.step=function(){return t},e.round=function(t){return arguments.length?(u=!!t,f()):u},e.padding=function(t){return arguments.length?(s=Math.min(1,c=+t),f()):s},e.paddingInner=function(t){return arguments.length?(s=Math.min(1,t),f()):s},e.paddingOuter=function(t){return arguments.length?(c=+t,f()):c},e.align=function(t){return arguments.length?(l=Math.max(0,Math.min(1,t)),f()):l},e.copy=function(){return Sm(r(),[a,o]).round(u).paddingInner(s).paddingOuter(c).align(l)},wm.apply(f(),arguments)}function Nm(t){var n=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,delete t.paddingOuter,t.copy=function(){return Nm(n())},t}function Em(){return Nm(Sm.apply(null,arguments).paddingInner(1))}function Am(t){return+t}var Tm=[0,1];function Cm(t){return t}function km(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:function(t){return function(){return t}}(isNaN(n)?NaN:.5)}function qm(t,n,e){var r=t[0],i=t[1],a=n[0],o=n[1];return i<r?(r=km(i,r),a=e(o,a)):(r=km(r,i),a=e(a,o)),function(t){return a(r(t))}}function Fm(t,n,e){var r=Math.min(t.length,n.length)-1,i=new Array(r),a=new Array(r),o=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());++o<r;)i[o]=km(t[o],t[o+1]),a[o]=e(n[o],n[o+1]);return function(n){var e=V(t,n,1,r)-1;return a[e](i[e](n))}}function Dm(t,n){return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function zm(){var t,n,e,r,i,a,o=Tm,u=Tm,s=_i,c=Cm;function l(){var t=Math.min(o.length,u.length);return c!==Cm&&(c=function(t,n){var e;return t>n&&(e=t,t=n,n=e),function(e){return Math.max(t,Math.min(n,e))}}(o[0],o[t-1])),r=t>2?Fm:qm,i=a=null,f}function f(n){return null==n||isNaN(n=+n)?e:(i||(i=r(o.map(t),u,s)))(t(c(n)))}return f.invert=function(e){return c(n((a||(a=r(u,o.map(t),vi)))(e)))},f.domain=function(t){return arguments.length?(o=Array.from(t,Am),l()):o.slice()},f.range=function(t){return arguments.length?(u=Array.from(t),l()):u.slice()},f.rangeRound=function(t){return u=Array.from(t),s=Mi,l()},f.clamp=function(t){return arguments.length?(c=!!t||Cm,l()):c!==Cm},f.interpolate=function(t){return arguments.length?(s=t,l()):s},f.unknown=function(t){return arguments.length?(e=t,f):e},function(e,r){return t=e,n=r,l()}}function Im(){return zm()(Cm,Cm)}function Pm(t,n,e,r){var i,a=Et(t,n,e);switch((r=sc(null==r?",f":r)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(n));return null!=r.precision||isNaN(i=xc(a,o))||(r.precision=i),mc(r,o);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=_c(a,Math.max(Math.abs(t),Math.abs(n))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=wc(a))||(r.precision=i-2*("%"===r.type))}return pc(r)}function Rm(t){var n=t.domain;return t.ticks=function(t){var e=n();return St(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return Pm(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i,a=n(),o=0,u=a.length-1,s=a[o],c=a[u],l=10;for(c<s&&(i=s,s=c,c=i,i=o,o=u,u=i);l-- >0;){if((i=Nt(s,c,e))===r)return a[o]=s,a[u]=c,n(a);if(i>0)s=Math.floor(s/i)*i,c=Math.ceil(c/i)*i;else{if(!(i<0))break;s=Math.ceil(s*i)/i,c=Math.floor(c*i)/i}r=i}return t},t}function Om(){var t=Im();return t.copy=function(){return Dm(t,Om())},wm.apply(t,arguments),Rm(t)}function Vm(t,n){var e,r=0,i=(t=t.slice()).length-1,a=t[r],o=t[i];return o<a&&(e=r,r=i,i=e,e=a,a=o,o=e),t[r]=n.floor(a),t[i]=n.ceil(o),t}function jm(t){return Math.log(t)}function Lm(t){return Math.exp(t)}function Bm(t){return-Math.log(-t)}function $m(t){return-Math.exp(-t)}function Um(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Hm(t){return(n,e)=>-t(-n,e)}function Ym(t){const n=t(jm,Lm),e=n.domain;let r,i,a=10;function o(){return r=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),n=>Math.log(n)/t)}(a),i=function(t){return 10===t?Um:t===Math.E?Math.exp:n=>Math.pow(t,n)}(a),e()[0]<0?(r=Hm(r),i=Hm(i),t(Bm,$m)):t(jm,Lm),n}return n.base=function(t){return arguments.length?(a=+t,o()):a},n.domain=function(t){return arguments.length?(e(t),o()):e()},n.ticks=t=>{const n=e();let o=n[0],u=n[n.length-1];const s=u<o;s&&([o,u]=[u,o]);let c,l,f=r(o),h=r(u);const d=null==t?10:+t;let p=[];if(!(a%1)&&h-f<d){if(f=Math.floor(f),h=Math.ceil(h),o>0){for(;f<=h;++f)for(c=1;c<a;++c)if(l=f<0?c/i(-f):c*i(f),!(l<o)){if(l>u)break;p.push(l)}}else for(;f<=h;++f)for(c=a-1;c>=1;--c)if(l=f>0?c/i(-f):c*i(f),!(l<o)){if(l>u)break;p.push(l)}2*p.length<d&&(p=St(o,u,d))}else p=St(f,h,Math.min(h-f,d)).map(i);return s?p.reverse():p},n.tickFormat=(t,e)=>{if(null==t&&(t=10),null==e&&(e=10===a?"s":","),"function"!=typeof e&&(a%1||null!=(e=sc(e)).precision||(e.trim=!0),e=pc(e)),Infinity===t)return e;const o=Math.max(1,a*t/n.ticks().length);return t=>{let n=t/i(Math.round(r(t)));return n*a<a-.5&&(n*=a),n<=o?e(t):""}},n.nice=()=>e(Vm(e(),{floor:t=>i(Math.floor(r(t))),ceil:t=>i(Math.ceil(r(t)))})),n}function Gm(t){return function(n){return Math.sign(n)*Math.log1p(Math.abs(n/t))}}function Wm(t){return function(n){return Math.sign(n)*Math.expm1(Math.abs(n))*t}}function Xm(t){var n=1,e=t(Gm(n),Wm(n));return e.constant=function(e){return arguments.length?t(Gm(n=+e),Wm(n)):n},Rm(e)}function Qm(t){return function(n){return n<0?-Math.pow(-n,t):Math.pow(n,t)}}function Km(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Zm(t){return t<0?-t*t:t*t}function Jm(t){var n=t(Cm,Cm),e=1;return n.exponent=function(n){return arguments.length?1===(e=+n)?t(Cm,Cm):.5===e?t(Km,Zm):t(Qm(e),Qm(1/e)):e},Rm(n)}function tg(){var t=Jm(zm());return t.copy=function(){return Dm(t,tg()).exponent(t.exponent())},wm.apply(t,arguments),t}function ng(t){return Math.sign(t)*t*t}const eg=new Date,rg=new Date;function ig(t,n,e,r){function i(n){return t(n=0===arguments.length?new Date:new Date(+n)),n}return i.floor=n=>(t(n=new Date(+n)),n),i.ceil=e=>(t(e=new Date(e-1)),n(e,1),t(e),e),i.round=t=>{const n=i(t),e=i.ceil(t);return t-n<e-t?n:e},i.offset=(t,e)=>(n(t=new Date(+t),null==e?1:Math.floor(e)),t),i.range=(e,r,a)=>{const o=[];if(e=i.ceil(e),a=null==a?1:Math.floor(a),!(e<r&&a>0))return o;let u;do{o.push(u=new Date(+e)),n(e,a),t(e)}while(u<e&&e<r);return o},i.filter=e=>ig(n=>{if(n>=n)for(;t(n),!e(n);)n.setTime(n-1)},(t,r)=>{if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););}),e&&(i.count=(n,r)=>(eg.setTime(+n),rg.setTime(+r),t(eg),t(rg),Math.floor(e(eg,rg))),i.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?n=>r(n)%t===0:n=>i.count(0,n)%t===0):i:null)),i}const ag=ig(()=>{},(t,n)=>{t.setTime(+t+n)},(t,n)=>n-t);ag.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?ig(n=>{n.setTime(Math.floor(n/t)*t)},(n,e)=>{n.setTime(+n+e*t)},(n,e)=>(e-n)/t):ag:null);const og=ag.range,ug=1e3,sg=6e4,cg=36e5,lg=864e5,fg=6048e5,hg=31536e6,dg=ig(t=>{t.setTime(t-t.getMilliseconds())},(t,n)=>{t.setTime(+t+n*ug)},(t,n)=>(n-t)/ug,t=>t.getUTCSeconds()),pg=dg.range,mg=ig(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*ug)},(t,n)=>{t.setTime(+t+n*sg)},(t,n)=>(n-t)/sg,t=>t.getMinutes()),gg=mg.range,vg=ig(t=>{t.setUTCSeconds(0,0)},(t,n)=>{t.setTime(+t+n*sg)},(t,n)=>(n-t)/sg,t=>t.getUTCMinutes()),yg=vg.range,bg=ig(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*ug-t.getMinutes()*sg)},(t,n)=>{t.setTime(+t+n*cg)},(t,n)=>(n-t)/cg,t=>t.getHours()),wg=bg.range,xg=ig(t=>{t.setUTCMinutes(0,0,0)},(t,n)=>{t.setTime(+t+n*cg)},(t,n)=>(n-t)/cg,t=>t.getUTCHours()),_g=xg.range,Mg=ig(t=>t.setHours(0,0,0,0),(t,n)=>t.setDate(t.getDate()+n),(t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*sg)/lg,t=>t.getDate()-1),Sg=Mg.range,Ng=ig(t=>{t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCDate(t.getUTCDate()+n)},(t,n)=>(n-t)/lg,t=>t.getUTCDate()-1),Eg=Ng.range,Ag=ig(t=>{t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCDate(t.getUTCDate()+n)},(t,n)=>(n-t)/lg,t=>Math.floor(t/lg)),Tg=Ag.range;function Cg(t){return ig(n=>{n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)},(t,n)=>{t.setDate(t.getDate()+7*n)},(t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*sg)/fg)}const kg=Cg(0),qg=Cg(1),Fg=Cg(2),Dg=Cg(3),zg=Cg(4),Ig=Cg(5),Pg=Cg(6),Rg=kg.range,Og=qg.range,Vg=Fg.range,jg=Dg.range,Lg=zg.range,Bg=Ig.range,$g=Pg.range;function Ug(t){return ig(n=>{n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCDate(t.getUTCDate()+7*n)},(t,n)=>(n-t)/fg)}const Hg=Ug(0),Yg=Ug(1),Gg=Ug(2),Wg=Ug(3),Xg=Ug(4),Qg=Ug(5),Kg=Ug(6),Zg=Hg.range,Jg=Yg.range,tv=Gg.range,nv=Wg.range,ev=Xg.range,rv=Qg.range,iv=Kg.range,av=ig(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,n)=>{t.setMonth(t.getMonth()+n)},(t,n)=>n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear()),t=>t.getMonth()),ov=av.range,uv=ig(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCMonth(t.getUTCMonth()+n)},(t,n)=>n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear()),t=>t.getUTCMonth()),sv=uv.range,cv=ig(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n)},(t,n)=>n.getFullYear()-t.getFullYear(),t=>t.getFullYear());cv.every=t=>isFinite(t=Math.floor(t))&&t>0?ig(n=>{n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},(n,e)=>{n.setFullYear(n.getFullYear()+e*t)}):null;const lv=cv.range,fv=ig(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n)},(t,n)=>n.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());fv.every=t=>isFinite(t=Math.floor(t))&&t>0?ig(n=>{n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},(n,e)=>{n.setUTCFullYear(n.getUTCFullYear()+e*t)}):null;const hv=fv.range;function dv(t,n,e,r,i,a){const o=[[dg,1,ug],[dg,5,5e3],[dg,15,15e3],[dg,30,3e4],[a,1,sg],[a,5,3e5],[a,15,9e5],[a,30,18e5],[i,1,cg],[i,3,108e5],[i,6,216e5],[i,12,432e5],[r,1,lg],[r,2,1728e5],[e,1,fg],[n,1,2592e6],[n,3,7776e6],[t,1,hg]];function u(n,e,r){const i=Math.abs(e-n)/r,a=F(([,,t])=>t).right(o,i);if(a===o.length)return t.every(Et(n/hg,e/hg,r));if(0===a)return ag.every(Math.max(Et(n,e,r),1));const[u,s]=o[i/o[a-1][2]<o[a][2]/i?a-1:a];return u.every(s)}return[function(t,n,e){const r=n<t;r&&([t,n]=[n,t]);const i=e&&"function"==typeof e.range?e:u(t,n,e),a=i?i.range(t,+n+1):[];return r?a.reverse():a},u]}const[pv,mv]=dv(fv,uv,Hg,Ag,xg,vg),[gv,vv]=dv(cv,av,kg,Mg,bg,mg);function yv(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function bv(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function wv(t,n,e){return{y:t,m:n,d:e,H:0,M:0,S:0,L:0}}function xv(t){var n=t.dateTime,e=t.date,r=t.time,i=t.periods,a=t.days,o=t.shortDays,u=t.months,s=t.shortMonths,c=Dv(i),l=zv(i),f=Dv(a),h=zv(a),d=Dv(o),p=zv(o),m=Dv(u),g=zv(u),v=Dv(s),y=zv(s),b={a:function(t){return o[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return s[t.getMonth()]},B:function(t){return u[t.getMonth()]},c:null,d:ny,e:ny,f:oy,g:vy,G:by,H:ey,I:ry,j:iy,L:ay,m:uy,M:sy,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:By,s:$y,S:cy,u:ly,U:fy,V:dy,w:py,W:my,x:null,X:null,y:gy,Y:yy,Z:wy,"%":Ly},w={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return s[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:xy,e:xy,f:Ey,g:Ry,G:Vy,H:_y,I:My,j:Sy,L:Ny,m:Ay,M:Ty,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:By,s:$y,S:Cy,u:ky,U:qy,V:Dy,w:zy,W:Iy,x:null,X:null,y:Py,Y:Oy,Z:jy,"%":Ly},x={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p.get(r[0].toLowerCase()),e+r[0].length):-1},A:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.w=h.get(r[0].toLowerCase()),e+r[0].length):-1},b:function(t,n,e){var r=v.exec(n.slice(e));return r?(t.m=y.get(r[0].toLowerCase()),e+r[0].length):-1},B:function(t,n,e){var r=m.exec(n.slice(e));return r?(t.m=g.get(r[0].toLowerCase()),e+r[0].length):-1},c:function(t,e,r){return S(t,n,e,r)},d:Hv,e:Hv,f:Kv,g:Lv,G:jv,H:Gv,I:Gv,j:Yv,L:Qv,m:Uv,M:Wv,p:function(t,n,e){var r=c.exec(n.slice(e));return r?(t.p=l.get(r[0].toLowerCase()),e+r[0].length):-1},q:$v,Q:Jv,s:ty,S:Xv,u:Pv,U:Rv,V:Ov,w:Iv,W:Vv,x:function(t,n,r){return S(t,e,n,r)},X:function(t,n,e){return S(t,r,n,e)},y:Lv,Y:jv,Z:Bv,"%":Zv};function _(t,n){return function(e){var r,i,a,o=[],u=-1,s=0,c=t.length;for(e instanceof Date||(e=new Date(+e));++u<c;)37===t.charCodeAt(u)&&(o.push(t.slice(s,u)),null!=(i=Av[r=t.charAt(++u)])?r=t.charAt(++u):i="e"===r?" ":"0",(a=n[r])&&(r=a(e,i)),o.push(r),s=u+1);return o.push(t.slice(s,u)),o.join("")}}function M(t,n){return function(e){var r,i,a=wv(1900,void 0,1);if(S(a,t,e+="",0)!=e.length)return null;if("Q"in a)return new Date(a.Q);if("s"in a)return new Date(1e3*a.s+("L"in a?a.L:0));if(n&&!("Z"in a)&&(a.Z=0),"p"in a&&(a.H=a.H%12+12*a.p),void 0===a.m&&(a.m="q"in a?a.q:0),"V"in a){if(a.V<1||a.V>53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=bv(wv(a.y,0,1))).getUTCDay(),r=i>4||0===i?Yg.ceil(r):Yg(r),r=Ng.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=yv(wv(a.y,0,1))).getDay(),r=i>4||0===i?qg.ceil(r):qg(r),r=Mg.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?bv(wv(a.y,0,1)).getUTCDay():yv(wv(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,bv(a)):yv(a)}}function S(t,n,e,r){for(var i,a,o=0,u=n.length,s=e.length;o<u;){if(r>=s)return-1;if(37===(i=n.charCodeAt(o++))){if(i=n.charAt(o++),!(a=x[i in Av?n.charAt(o++):i])||(r=a(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return b.x=_(e,b),b.X=_(r,b),b.c=_(n,b),w.x=_(e,w),w.X=_(r,w),w.c=_(n,w),{format:function(t){var n=_(t+="",b);return n.toString=function(){return t},n},parse:function(t){var n=M(t+="",!1);return n.toString=function(){return t},n},utcFormat:function(t){var n=_(t+="",w);return n.toString=function(){return t},n},utcParse:function(t){var n=M(t+="",!0);return n.toString=function(){return t},n}}}var _v,Mv,Sv,Nv,Ev,Av={"-":"",_:" ",0:"0"},Tv=/^\s*\d+/,Cv=/^%/,kv=/[\\^$*+?|[\]().{}]/g;function qv(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",a=i.length;return r+(a<e?new Array(e-a+1).join(n)+i:i)}function Fv(t){return t.replace(kv,"\\$&")}function Dv(t){return new RegExp("^(?:"+t.map(Fv).join("|")+")","i")}function zv(t){return new Map(t.map((t,n)=>[t.toLowerCase(),n]))}function Iv(t,n,e){var r=Tv.exec(n.slice(e,e+1));return r?(t.w=+r[0],e+r[0].length):-1}function Pv(t,n,e){var r=Tv.exec(n.slice(e,e+1));return r?(t.u=+r[0],e+r[0].length):-1}function Rv(t,n,e){var r=Tv.exec(n.slice(e,e+2));return r?(t.U=+r[0],e+r[0].length):-1}function Ov(t,n,e){var r=Tv.exec(n.slice(e,e+2));return r?(t.V=+r[0],e+r[0].length):-1}function Vv(t,n,e){var r=Tv.exec(n.slice(e,e+2));return r?(t.W=+r[0],e+r[0].length):-1}function jv(t,n,e){var r=Tv.exec(n.slice(e,e+4));return r?(t.y=+r[0],e+r[0].length):-1}function Lv(t,n,e){var r=Tv.exec(n.slice(e,e+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function Bv(t,n,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function $v(t,n,e){var r=Tv.exec(n.slice(e,e+1));return r?(t.q=3*r[0]-3,e+r[0].length):-1}function Uv(t,n,e){var r=Tv.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function Hv(t,n,e){var r=Tv.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function Yv(t,n,e){var r=Tv.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Gv(t,n,e){var r=Tv.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Wv(t,n,e){var r=Tv.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Xv(t,n,e){var r=Tv.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function Qv(t,n,e){var r=Tv.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function Kv(t,n,e){var r=Tv.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function Zv(t,n,e){var r=Cv.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function Jv(t,n,e){var r=Tv.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function ty(t,n,e){var r=Tv.exec(n.slice(e));return r?(t.s=+r[0],e+r[0].length):-1}function ny(t,n){return qv(t.getDate(),n,2)}function ey(t,n){return qv(t.getHours(),n,2)}function ry(t,n){return qv(t.getHours()%12||12,n,2)}function iy(t,n){return qv(1+Mg.count(cv(t),t),n,3)}function ay(t,n){return qv(t.getMilliseconds(),n,3)}function oy(t,n){return ay(t,n)+"000"}function uy(t,n){return qv(t.getMonth()+1,n,2)}function sy(t,n){return qv(t.getMinutes(),n,2)}function cy(t,n){return qv(t.getSeconds(),n,2)}function ly(t){var n=t.getDay();return 0===n?7:n}function fy(t,n){return qv(kg.count(cv(t)-1,t),n,2)}function hy(t){var n=t.getDay();return n>=4||0===n?zg(t):zg.ceil(t)}function dy(t,n){return t=hy(t),qv(zg.count(cv(t),t)+(4===cv(t).getDay()),n,2)}function py(t){return t.getDay()}function my(t,n){return qv(qg.count(cv(t)-1,t),n,2)}function gy(t,n){return qv(t.getFullYear()%100,n,2)}function vy(t,n){return qv((t=hy(t)).getFullYear()%100,n,2)}function yy(t,n){return qv(t.getFullYear()%1e4,n,4)}function by(t,n){var e=t.getDay();return qv((t=e>=4||0===e?zg(t):zg.ceil(t)).getFullYear()%1e4,n,4)}function wy(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+qv(n/60|0,"0",2)+qv(n%60,"0",2)}function xy(t,n){return qv(t.getUTCDate(),n,2)}function _y(t,n){return qv(t.getUTCHours(),n,2)}function My(t,n){return qv(t.getUTCHours()%12||12,n,2)}function Sy(t,n){return qv(1+Ng.count(fv(t),t),n,3)}function Ny(t,n){return qv(t.getUTCMilliseconds(),n,3)}function Ey(t,n){return Ny(t,n)+"000"}function Ay(t,n){return qv(t.getUTCMonth()+1,n,2)}function Ty(t,n){return qv(t.getUTCMinutes(),n,2)}function Cy(t,n){return qv(t.getUTCSeconds(),n,2)}function ky(t){var n=t.getUTCDay();return 0===n?7:n}function qy(t,n){return qv(Hg.count(fv(t)-1,t),n,2)}function Fy(t){var n=t.getUTCDay();return n>=4||0===n?Xg(t):Xg.ceil(t)}function Dy(t,n){return t=Fy(t),qv(Xg.count(fv(t),t)+(4===fv(t).getUTCDay()),n,2)}function zy(t){return t.getUTCDay()}function Iy(t,n){return qv(Yg.count(fv(t)-1,t),n,2)}function Py(t,n){return qv(t.getUTCFullYear()%100,n,2)}function Ry(t,n){return qv((t=Fy(t)).getUTCFullYear()%100,n,2)}function Oy(t,n){return qv(t.getUTCFullYear()%1e4,n,4)}function Vy(t,n){var e=t.getUTCDay();return qv((t=e>=4||0===e?Xg(t):Xg.ceil(t)).getUTCFullYear()%1e4,n,4)}function jy(){return"+0000"}function Ly(){return"%"}function By(t){return+t}function $y(t){return Math.floor(+t/1e3)}function Uy(t){return _v=xv(t),Mv=_v.format,Sv=_v.parse,Nv=_v.utcFormat,Ev=_v.utcParse,_v}Uy({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var Hy="%Y-%m-%dT%H:%M:%S.%LZ",Yy=Date.prototype.toISOString?function(t){return t.toISOString()}:Nv(Hy),Gy=Yy,Wy=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:Ev(Hy),Xy=Wy;function Qy(t){return new Date(t)}function Ky(t){return t instanceof Date?+t:+new Date(+t)}function Zy(t,n,e,r,i,a,o,u,s,c){var l=Im(),f=l.invert,h=l.domain,d=c(".%L"),p=c(":%S"),m=c("%I:%M"),g=c("%I %p"),v=c("%a %d"),y=c("%b %d"),b=c("%B"),w=c("%Y");function x(t){return(s(t)<t?d:u(t)<t?p:o(t)<t?m:a(t)<t?g:r(t)<t?i(t)<t?v:y:e(t)<t?b:w)(t)}return l.invert=function(t){return new Date(f(t))},l.domain=function(t){return arguments.length?h(Array.from(t,Ky)):h().map(Qy)},l.ticks=function(n){var e=h();return t(e[0],e[e.length-1],null==n?10:n)},l.tickFormat=function(t,n){return null==n?x:c(n)},l.nice=function(t){var e=h();return t&&"function"==typeof t.range||(t=n(e[0],e[e.length-1],null==t?10:t)),t?h(Vm(e,t)):l},l.copy=function(){return Dm(l,Zy(t,n,e,r,i,a,o,u,s,c))},l}function Jy(){var t,n,e,r,i,a=0,o=1,u=Cm,s=!1;function c(n){return null==n||isNaN(n=+n)?i:u(0===e?.5:(n=(r(n)-t)*e,s?Math.max(0,Math.min(1,n)):n))}function l(t){return function(n){var e,r;return arguments.length?([e,r]=n,u=t(e,r),c):[u(0),u(1)]}}return c.domain=function(i){return arguments.length?([a,o]=i,t=r(a=+a),n=r(o=+o),e=t===n?0:1/(n-t),c):[a,o]},c.clamp=function(t){return arguments.length?(s=!!t,c):s},c.interpolator=function(t){return arguments.length?(u=t,c):u},c.range=l(_i),c.rangeRound=l(Mi),c.unknown=function(t){return arguments.length?(i=t,c):i},function(i){return r=i,t=i(a),n=i(o),e=t===n?0:1/(n-t),c}}function tb(t,n){return n.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function nb(){var t=Rm(Jy()(Cm));return t.copy=function(){return tb(t,nb())},xm.apply(t,arguments)}function eb(){var t=Jm(Jy());return t.copy=function(){return tb(t,eb()).exponent(t.exponent())},xm.apply(t,arguments)}function rb(){var t,n,e,r,i,a,o,u=0,s=.5,c=1,l=1,f=Cm,h=!1;function d(t){return isNaN(t=+t)?o:(t=.5+((t=+a(t))-n)*(l*t<l*n?r:i),f(h?Math.max(0,Math.min(1,t)):t))}function p(t){return function(n){var e,r,i;return arguments.length?([e,r,i]=n,f=Bi(t,[e,r,i]),d):[f(0),f(.5),f(1)]}}return d.domain=function(o){return arguments.length?([u,s,c]=o,t=a(u=+u),n=a(s=+s),e=a(c=+c),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),l=n<t?-1:1,d):[u,s,c]},d.clamp=function(t){return arguments.length?(h=!!t,d):h},d.interpolator=function(t){return arguments.length?(f=t,d):f},d.range=p(_i),d.rangeRound=p(Mi),d.unknown=function(t){return arguments.length?(o=t,d):o},function(o){return a=o,t=o(u),n=o(s),e=o(c),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),l=n<t?-1:1,d}}function ib(){var t=Jm(rb());return t.copy=function(){return tb(t,ib()).exponent(t.exponent())},xm.apply(t,arguments)}function ab(t){for(var n=t.length/6|0,e=new Array(n),r=0;r<n;)e[r]="#"+t.slice(6*r,6*++r);return e}var ob=ab("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),ub=ab("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),sb=ab("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),cb=ab("4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0"),lb=ab("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),fb=ab("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),hb=ab("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),db=ab("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),pb=ab("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),mb=ab("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"),gb=ab("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"),vb=t=>fi(t[t.length-1]),yb=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(ab),bb=vb(yb),wb=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(ab),xb=vb(wb),_b=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(ab),Mb=vb(_b),Sb=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(ab),Nb=vb(Sb),Eb=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(ab),Ab=vb(Eb),Tb=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(ab),Cb=vb(Tb),kb=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(ab),qb=vb(kb),Fb=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(ab),Db=vb(Fb),zb=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(ab),Ib=vb(zb),Pb=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(ab),Rb=vb(Pb),Ob=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(ab),Vb=vb(Ob),jb=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(ab),Lb=vb(jb),Bb=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(ab),$b=vb(Bb),Ub=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(ab),Hb=vb(Ub),Yb=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(ab),Gb=vb(Yb),Wb=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(ab),Xb=vb(Wb),Qb=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(ab),Kb=vb(Qb),Zb=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(ab),Jb=vb(Zb),tw=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(ab),nw=vb(tw),ew=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(ab),rw=vb(ew),iw=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(ab),aw=vb(iw),ow=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(ab),uw=vb(ow),sw=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(ab),cw=vb(sw),lw=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(ab),fw=vb(lw),hw=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(ab),dw=vb(hw),pw=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(ab),mw=vb(pw),gw=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(ab),vw=vb(gw),yw=Li(ti(300,.5,0),ti(-240,.5,1)),bw=Li(ti(-100,.75,.35),ti(80,1.5,.8)),ww=Li(ti(260,.75,.35),ti(80,1.5,.8)),xw=ti(),_w=dr(),Mw=Math.PI/3,Sw=2*Math.PI/3;function Nw(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}}var Ew=Nw(ab("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),Aw=Nw(ab("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),Tw=Nw(ab("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),Cw=Nw(ab("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function kw(t){return function(){return t}}const qw=Math.abs,Fw=Math.atan2,Dw=Math.cos,zw=Math.max,Iw=Math.min,Pw=Math.sin,Rw=Math.sqrt,Ow=1e-12,Vw=Math.PI,jw=Vw/2,Lw=2*Vw;function Bw(t){return t>=1?jw:t<=-1?-jw:Math.asin(t)}function $w(t){let n=3;return t.digits=function(e){if(!arguments.length)return n;if(null==e)n=null;else{const t=Math.floor(e);if(!(t>=0))throw new RangeError(`invalid digits: ${e}`);n=t}return t},()=>new eu(n)}function Uw(t){return t.innerRadius}function Hw(t){return t.outerRadius}function Yw(t){return t.startAngle}function Gw(t){return t.endAngle}function Ww(t){return t&&t.padAngle}function Xw(t,n,e,r,i,a,o){var u=t-e,s=n-r,c=(o?a:-a)/Rw(u*u+s*s),l=c*s,f=-c*u,h=t+l,d=n+f,p=e+l,m=r+f,g=(h+p)/2,v=(d+m)/2,y=p-h,b=m-d,w=y*y+b*b,x=i-a,_=h*m-p*d,M=(b<0?-1:1)*Rw(zw(0,x*x*w-_*_)),S=(_*b-y*M)/w,N=(-_*y-b*M)/w,E=(_*b+y*M)/w,A=(-_*y+b*M)/w,T=S-g,C=N-v,k=E-g,q=A-v;return T*T+C*C>k*k+q*q&&(S=E,N=A),{cx:S,cy:N,x01:-l,y01:-f,x11:S*(i/x-1),y11:N*(i/x-1)}}function Qw(){var t=Uw,n=Hw,e=kw(0),r=null,i=Yw,a=Gw,o=Ww,u=null,s=$w(c);function c(){var c,l,f=+t.apply(this,arguments),h=+n.apply(this,arguments),d=i.apply(this,arguments)-jw,p=a.apply(this,arguments)-jw,m=qw(p-d),g=p>d;if(u||(u=c=s()),h<f&&(l=h,h=f,f=l),h>Ow)if(m>Lw-Ow)u.moveTo(h*Dw(d),h*Pw(d)),u.arc(0,0,h,d,p,!g),f>Ow&&(u.moveTo(f*Dw(p),f*Pw(p)),u.arc(0,0,f,p,d,g));else{var v,y,b=d,w=p,x=d,_=p,M=m,S=m,N=o.apply(this,arguments)/2,E=N>Ow&&(r?+r.apply(this,arguments):Rw(f*f+h*h)),A=Iw(qw(h-f)/2,+e.apply(this,arguments)),T=A,C=A;if(E>Ow){var k=Bw(E/f*Pw(N)),q=Bw(E/h*Pw(N));(M-=2*k)>Ow?(x+=k*=g?1:-1,_-=k):(M=0,x=_=(d+p)/2),(S-=2*q)>Ow?(b+=q*=g?1:-1,w-=q):(S=0,b=w=(d+p)/2)}var F=h*Dw(b),D=h*Pw(b),z=f*Dw(_),I=f*Pw(_);if(A>Ow){var P,R=h*Dw(w),O=h*Pw(w),V=f*Dw(x),j=f*Pw(x);if(m<Vw)if(P=function(t,n,e,r,i,a,o,u){var s=e-t,c=r-n,l=o-i,f=u-a,h=f*s-l*c;if(!(h*h<Ow))return[t+(h=(l*(n-a)-f*(t-i))/h)*s,n+h*c]}(F,D,V,j,R,O,z,I)){var L=F-P[0],B=D-P[1],$=R-P[0],U=O-P[1],H=1/Pw(function(t){return t>1?0:t<-1?Vw:Math.acos(t)}((L*$+B*U)/(Rw(L*L+B*B)*Rw($*$+U*U)))/2),Y=Rw(P[0]*P[0]+P[1]*P[1]);T=Iw(A,(f-Y)/(H-1)),C=Iw(A,(h-Y)/(H+1))}else T=C=0}S>Ow?C>Ow?(v=Xw(V,j,F,D,h,C,g),y=Xw(R,O,z,I,h,C,g),u.moveTo(v.cx+v.x01,v.cy+v.y01),C<A?u.arc(v.cx,v.cy,C,Fw(v.y01,v.x01),Fw(y.y01,y.x01),!g):(u.arc(v.cx,v.cy,C,Fw(v.y01,v.x01),Fw(v.y11,v.x11),!g),u.arc(0,0,h,Fw(v.cy+v.y11,v.cx+v.x11),Fw(y.cy+y.y11,y.cx+y.x11),!g),u.arc(y.cx,y.cy,C,Fw(y.y11,y.x11),Fw(y.y01,y.x01),!g))):(u.moveTo(F,D),u.arc(0,0,h,b,w,!g)):u.moveTo(F,D),f>Ow&&M>Ow?T>Ow?(v=Xw(z,I,R,O,f,-T,g),y=Xw(F,D,V,j,f,-T,g),u.lineTo(v.cx+v.x01,v.cy+v.y01),T<A?u.arc(v.cx,v.cy,T,Fw(v.y01,v.x01),Fw(y.y01,y.x01),!g):(u.arc(v.cx,v.cy,T,Fw(v.y01,v.x01),Fw(v.y11,v.x11),!g),u.arc(0,0,f,Fw(v.cy+v.y11,v.cx+v.x11),Fw(y.cy+y.y11,y.cx+y.x11),g),u.arc(y.cx,y.cy,T,Fw(y.y11,y.x11),Fw(y.y01,y.x01),!g))):u.arc(0,0,f,_,x,g):u.lineTo(z,I)}else u.moveTo(0,0);if(u.closePath(),c)return u=null,c+""||null}return c.centroid=function(){var e=(+t.apply(this,arguments)+ +n.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +a.apply(this,arguments))/2-Vw/2;return[Dw(r)*e,Pw(r)*e]},c.innerRadius=function(n){return arguments.length?(t="function"==typeof n?n:kw(+n),c):t},c.outerRadius=function(t){return arguments.length?(n="function"==typeof t?t:kw(+t),c):n},c.cornerRadius=function(t){return arguments.length?(e="function"==typeof t?t:kw(+t),c):e},c.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:kw(+t),c):r},c.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:kw(+t),c):i},c.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:kw(+t),c):a},c.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:kw(+t),c):o},c.context=function(t){return arguments.length?(u=null==t?null:t,c):u},c}var Kw=Array.prototype.slice;function Zw(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function Jw(t){this._context=t}function tx(t){return new Jw(t)}function nx(t){return t[0]}function ex(t){return t[1]}function rx(t,n){var e=kw(!0),r=null,i=tx,a=null,o=$w(u);function u(u){var s,c,l,f=(u=Zw(u)).length,h=!1;for(null==r&&(a=i(l=o())),s=0;s<=f;++s)!(s<f&&e(c=u[s],s,u))===h&&((h=!h)?a.lineStart():a.lineEnd()),h&&a.point(+t(c,s,u),+n(c,s,u));if(l)return a=null,l+""||null}return t="function"==typeof t?t:void 0===t?nx:kw(t),n="function"==typeof n?n:void 0===n?ex:kw(n),u.x=function(n){return arguments.length?(t="function"==typeof n?n:kw(+n),u):t},u.y=function(t){return arguments.length?(n="function"==typeof t?t:kw(+t),u):n},u.defined=function(t){return arguments.length?(e="function"==typeof t?t:kw(!!t),u):e},u.curve=function(t){return arguments.length?(i=t,null!=r&&(a=i(r)),u):i},u.context=function(t){return arguments.length?(null==t?r=a=null:a=i(r=t),u):r},u}function ix(t,n,e){var r=null,i=kw(!0),a=null,o=tx,u=null,s=$w(c);function c(c){var l,f,h,d,p,m=(c=Zw(c)).length,g=!1,v=new Array(m),y=new Array(m);for(null==a&&(u=o(p=s())),l=0;l<=m;++l){if(!(l<m&&i(d=c[l],l,c))===g)if(g=!g)f=l,u.areaStart(),u.lineStart();else{for(u.lineEnd(),u.lineStart(),h=l-1;h>=f;--h)u.point(v[h],y[h]);u.lineEnd(),u.areaEnd()}g&&(v[l]=+t(d,l,c),y[l]=+n(d,l,c),u.point(r?+r(d,l,c):v[l],e?+e(d,l,c):y[l]))}if(p)return u=null,p+""||null}function l(){return rx().defined(i).curve(o).context(a)}return t="function"==typeof t?t:void 0===t?nx:kw(+t),n="function"==typeof n?n:kw(void 0===n?0:+n),e="function"==typeof e?e:void 0===e?ex:kw(+e),c.x=function(n){return arguments.length?(t="function"==typeof n?n:kw(+n),r=null,c):t},c.x0=function(n){return arguments.length?(t="function"==typeof n?n:kw(+n),c):t},c.x1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:kw(+t),c):r},c.y=function(t){return arguments.length?(n="function"==typeof t?t:kw(+t),e=null,c):n},c.y0=function(t){return arguments.length?(n="function"==typeof t?t:kw(+t),c):n},c.y1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:kw(+t),c):e},c.lineX0=c.lineY0=function(){return l().x(t).y(n)},c.lineY1=function(){return l().x(t).y(e)},c.lineX1=function(){return l().x(r).y(n)},c.defined=function(t){return arguments.length?(i="function"==typeof t?t:kw(!!t),c):i},c.curve=function(t){return arguments.length?(o=t,null!=a&&(u=o(a)),c):o},c.context=function(t){return arguments.length?(null==t?a=u=null:u=o(a=t),c):a},c}function ax(t,n){return n<t?-1:n>t?1:n>=t?0:NaN}function ox(t){return t}function ux(){var t=ox,n=ax,e=null,r=kw(0),i=kw(Lw),a=kw(0);function o(o){var u,s,c,l,f,h=(o=Zw(o)).length,d=0,p=new Array(h),m=new Array(h),g=+r.apply(this,arguments),v=Math.min(Lw,Math.max(-Lw,i.apply(this,arguments)-g)),y=Math.min(Math.abs(v)/h,a.apply(this,arguments)),b=y*(v<0?-1:1);for(u=0;u<h;++u)(f=m[p[u]=u]=+t(o[u],u,o))>0&&(d+=f);for(null!=n?p.sort(function(t,e){return n(m[t],m[e])}):null!=e&&p.sort(function(t,n){return e(o[t],o[n])}),u=0,c=d?(v-h*b)/d:0;u<h;++u,g=l)m[s=p[u]]={data:o[s],index:u,value:f=m[s],startAngle:g,endAngle:l=g+(f>0?f*c:0)+b,padAngle:y};return m}return o.value=function(n){return arguments.length?(t="function"==typeof n?n:kw(+n),o):t},o.sortValues=function(t){return arguments.length?(n=t,e=null,o):n},o.sort=function(t){return arguments.length?(e=t,n=null,o):e},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:kw(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:kw(+t),o):i},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:kw(+t),o):a},o}Jw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var sx=lx(tx);function cx(t){this._curve=t}function lx(t){function n(n){return new cx(t(n))}return n._curve=t,n}function fx(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(lx(t)):n()._curve},t}function hx(){return fx(rx().curve(sx))}function dx(){var t=ix().curve(sx),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return fx(e())},delete t.lineX0,t.lineEndAngle=function(){return fx(r())},delete t.lineX1,t.lineInnerRadius=function(){return fx(i())},delete t.lineY0,t.lineOuterRadius=function(){return fx(a())},delete t.lineY1,t.curve=function(t){return arguments.length?n(lx(t)):n()._curve},t}function px(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}cx.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};class mx{constructor(t,n){this._context=t,this._x=n}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,n,t,n):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+n)/2,t,this._y0,t,n)}this._x0=t,this._y0=n}}class gx{constructor(t){this._context=t}lineStart(){this._point=0}lineEnd(){}point(t,n){if(t=+t,n=+n,0===this._point)this._point=1;else{const e=px(this._x0,this._y0),r=px(this._x0,this._y0=(this._y0+n)/2),i=px(t,this._y0),a=px(t,n);this._context.moveTo(...e),this._context.bezierCurveTo(...r,...i,...a)}this._x0=t,this._y0=n}}function vx(t){return new mx(t,!0)}function yx(t){return new mx(t,!1)}function bx(t){return new gx(t)}function wx(t){return t.source}function xx(t){return t.target}function _x(t){let n=wx,e=xx,r=nx,i=ex,a=null,o=null,u=$w(s);function s(){let s;const c=Kw.call(arguments),l=n.apply(this,c),f=e.apply(this,c);if(null==a&&(o=t(s=u())),o.lineStart(),c[0]=l,o.point(+r.apply(this,c),+i.apply(this,c)),c[0]=f,o.point(+r.apply(this,c),+i.apply(this,c)),o.lineEnd(),s)return o=null,s+""||null}return s.source=function(t){return arguments.length?(n=t,s):n},s.target=function(t){return arguments.length?(e=t,s):e},s.x=function(t){return arguments.length?(r="function"==typeof t?t:kw(+t),s):r},s.y=function(t){return arguments.length?(i="function"==typeof t?t:kw(+t),s):i},s.context=function(n){return arguments.length?(null==n?a=o=null:o=t(a=n),s):a},s}const Mx=Rw(3);var Sx={draw(t,n){const e=.59436*Rw(n+Iw(n/28,.75)),r=e/2,i=r*Mx;t.moveTo(0,e),t.lineTo(0,-e),t.moveTo(-i,-r),t.lineTo(i,r),t.moveTo(-i,r),t.lineTo(i,-r)}},Nx={draw(t,n){const e=Rw(n/Vw);t.moveTo(e,0),t.arc(0,0,e,0,Lw)}},Ex={draw(t,n){const e=Rw(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}};const Ax=Rw(1/3),Tx=2*Ax;var Cx={draw(t,n){const e=Rw(n/Tx),r=e*Ax;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},kx={draw(t,n){const e=.62625*Rw(n);t.moveTo(0,-e),t.lineTo(e,0),t.lineTo(0,e),t.lineTo(-e,0),t.closePath()}},qx={draw(t,n){const e=.87559*Rw(n-Iw(n/7,2));t.moveTo(-e,0),t.lineTo(e,0),t.moveTo(0,e),t.lineTo(0,-e)}},Fx={draw(t,n){const e=Rw(n),r=-e/2;t.rect(r,r,e,e)}},Dx={draw(t,n){const e=.4431*Rw(n);t.moveTo(e,e),t.lineTo(e,-e),t.lineTo(-e,-e),t.lineTo(-e,e),t.closePath()}};const zx=Pw(Vw/10)/Pw(7*Vw/10),Ix=Pw(Lw/10)*zx,Px=-Dw(Lw/10)*zx;var Rx={draw(t,n){const e=Rw(.8908130915292852*n),r=Ix*e,i=Px*e;t.moveTo(0,-e),t.lineTo(r,i);for(let n=1;n<5;++n){const a=Lw*n/5,o=Dw(a),u=Pw(a);t.lineTo(u*e,-o*e),t.lineTo(o*r-u*i,u*r+o*i)}t.closePath()}};const Ox=Rw(3);var Vx={draw(t,n){const e=-Rw(n/(3*Ox));t.moveTo(0,2*e),t.lineTo(-Ox*e,-e),t.lineTo(Ox*e,-e),t.closePath()}};const jx=Rw(3);var Lx={draw(t,n){const e=.6824*Rw(n),r=e/2,i=e*jx/2;t.moveTo(0,-e),t.lineTo(i,r),t.lineTo(-i,r),t.closePath()}};const Bx=-.5,$x=Rw(3)/2,Ux=1/Rw(12),Hx=3*(Ux/2+1);var Yx={draw(t,n){const e=Rw(n/Hx),r=e/2,i=e*Ux,a=r,o=e*Ux+e,u=-a,s=o;t.moveTo(r,i),t.lineTo(a,o),t.lineTo(u,s),t.lineTo(Bx*r-$x*i,$x*r+Bx*i),t.lineTo(Bx*a-$x*o,$x*a+Bx*o),t.lineTo(Bx*u-$x*s,$x*u+Bx*s),t.lineTo(Bx*r+$x*i,Bx*i-$x*r),t.lineTo(Bx*a+$x*o,Bx*o-$x*a),t.lineTo(Bx*u+$x*s,Bx*s-$x*u),t.closePath()}},Gx={draw(t,n){const e=.6189*Rw(n-Iw(n/6,1.7));t.moveTo(-e,-e),t.lineTo(e,e),t.moveTo(-e,e),t.lineTo(e,-e)}};const Wx=[Nx,Ex,Cx,Fx,Rx,Vx,Yx],Xx=[Nx,qx,Gx,Lx,Sx,Dx,kx];function Qx(){}function Kx(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function Zx(t){this._context=t}function Jx(t){return new Zx(t)}function t_(t){this._context=t}function n_(t){this._context=t}function e_(t,n){this._basis=new Zx(t),this._beta=n}Zx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Kx(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Kx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},t_.prototype={areaStart:Qx,areaEnd:Qx,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:Kx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},n_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:Kx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},e_.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],a=n[0],o=t[e]-i,u=n[e]-a,s=-1;++s<=e;)this._basis.point(this._beta*t[s]+(1-this._beta)*(i+(r=s/e)*o),this._beta*n[s]+(1-this._beta)*(a+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var r_=function t(n){function e(t){return 1===n?new Zx(t):new e_(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function i_(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function a_(t,n){this._context=t,this._k=(1-n)/6}a_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:i_(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:i_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var o_=function t(n){function e(t){return new a_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function u_(t,n){this._context=t,this._k=(1-n)/6}u_.prototype={areaStart:Qx,areaEnd:Qx,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:i_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var s_=function t(n){function e(t){return new u_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function c_(t,n){this._context=t,this._k=(1-n)/6}c_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:i_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var l_=function t(n){function e(t){return new c_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function f_(t,n,e){var r=t._x1,i=t._y1,a=t._x2,o=t._y2;if(t._l01_a>Ow){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,s=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/s,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/s}if(t._l23_a>Ow){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,l=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-n*t._l12_2a)/l,o=(o*c+t._y1*t._l23_2a-e*t._l12_2a)/l}t._context.bezierCurveTo(r,i,a,o,t._x2,t._y2)}function h_(t,n){this._context=t,this._alpha=n}h_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:f_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var d_=function t(n){function e(t){return n?new h_(t,n):new a_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function p_(t,n){this._context=t,this._alpha=n}p_.prototype={areaStart:Qx,areaEnd:Qx,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:f_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var m_=function t(n){function e(t){return n?new p_(t,n):new u_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function g_(t,n){this._context=t,this._alpha=n}g_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:f_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var v_=function t(n){function e(t){return n?new g_(t,n):new c_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function y_(t){this._context=t}function b_(t){return t<0?-1:1}function w_(t,n,e){var r=t._x1-t._x0,i=n-t._x1,a=(t._y1-t._y0)/(r||i<0&&-0),o=(e-t._y1)/(i||r<0&&-0),u=(a*i+o*r)/(r+i);return(b_(a)+b_(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(u))||0}function x_(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function __(t,n,e){var r=t._x0,i=t._x1,a=t._y1,o=(i-r)/3;t._context.bezierCurveTo(r+o,t._y0+o*n,i-o,a-o*e,i,a)}function M_(t){this._context=t}function S_(t){this._context=new N_(t)}function N_(t){this._context=t}function E_(t){this._context=t}function A_(t){var n,e,r=t.length-1,i=new Array(r),a=new Array(r),o=new Array(r);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],n=1;n<r-1;++n)i[n]=1,a[n]=4,o[n]=4*t[n]+2*t[n+1];for(i[r-1]=2,a[r-1]=7,o[r-1]=8*t[r-1]+t[r],n=1;n<r;++n)a[n]-=e=i[n]/a[n-1],o[n]-=e*o[n-1];for(i[r-1]=o[r-1]/a[r-1],n=r-2;n>=0;--n)i[n]=(o[n]-i[n+1])/a[n];for(a[r-1]=(t[r]+i[r-1])/2,n=0;n<r-1;++n)a[n]=2*t[n+1]-i[n+1];return[i,a]}function T_(t,n){this._context=t,this._t=n}function C_(t,n){if((i=t.length)>1)for(var e,r,i,a=1,o=t[n[0]],u=o.length;a<i;++a)for(r=o,o=t[n[a]],e=0;e<u;++e)o[e][1]+=o[e][0]=isNaN(r[e][1])?r[e][0]:r[e][1]}function k_(t){for(var n=t.length,e=new Array(n);--n>=0;)e[n]=n;return e}function q_(t,n){return t[n]}function F_(t){const n=[];return n.key=t,n}function D_(t){var n=t.map(z_);return k_(t).sort(function(t,e){return n[t]-n[e]})}function z_(t){for(var n,e=-1,r=0,i=t.length,a=-Infinity;++e<i;)(n=+t[e][1])>a&&(a=n,r=e);return r}function I_(t){var n=t.map(P_);return k_(t).sort(function(t,e){return n[t]-n[e]})}function P_(t){for(var n,e=0,r=-1,i=t.length;++r<i;)(n=+t[r][1])&&(e+=n);return e}y_.prototype={areaStart:Qx,areaEnd:Qx,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,n){t=+t,n=+n,this._point?this._context.lineTo(t,n):(this._point=1,this._context.moveTo(t,n))}},M_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:__(this,this._t0,x_(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var e=NaN;if(n=+n,(t=+t)!==this._x1||n!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,__(this,x_(this,e=w_(this,t,n)),e);break;default:__(this,this._t0,e=w_(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=e}}},(S_.prototype=Object.create(M_.prototype)).point=function(t,n){M_.prototype.point.call(this,n,t)},N_.prototype={moveTo:function(t,n){this._context.moveTo(n,t)},closePath:function(){this._context.closePath()},lineTo:function(t,n){this._context.lineTo(n,t)},bezierCurveTo:function(t,n,e,r,i,a){this._context.bezierCurveTo(n,t,r,e,a,i)}},E_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,n=this._y,e=t.length;if(e)if(this._line?this._context.lineTo(t[0],n[0]):this._context.moveTo(t[0],n[0]),2===e)this._context.lineTo(t[1],n[1]);else for(var r=A_(t),i=A_(n),a=0,o=1;o<e;++a,++o)this._context.bezierCurveTo(r[0][a],i[0][a],r[1][a],i[1][a],t[o],n[o]);(this._line||0!==this._line&&1===e)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,n){this._x.push(+t),this._y.push(+n)}},T_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}};var R_=t=>()=>t;function O_(t,{sourceEvent:n,target:e,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function V_(t,n,e){this.k=t,this.x=n,this.y=e}V_.prototype={constructor:V_,scale:function(t){return 1===t?this:new V_(this.k*t,this.x,this.y)},translate:function(t,n){return 0===t&0===n?this:new V_(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var j_=new V_(1,0,0);function L_(t){for(;!t.__zoom;)if(!(t=t.parentNode))return j_;return t.__zoom}function B_(t){t.stopImmediatePropagation()}function $_(t){t.preventDefault(),t.stopImmediatePropagation()}function U_(t){return!(t.ctrlKey&&"wheel"!==t.type||t.button)}function H_(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function Y_(){return this.__zoom||j_}function G_(t){return-t.deltaY*(1===t.deltaMode?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function W_(){return navigator.maxTouchPoints||"ontouchstart"in this}function X_(t,n,e){var r=t.invertX(n[0][0])-e[0][0],i=t.invertX(n[1][0])-e[1][0],a=t.invertY(n[0][1])-e[0][1],o=t.invertY(n[1][1])-e[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}L_.prototype=V_.prototype;var Q_={__proto__:null,bisect:V,bisectRight:P,bisectLeft:R,bisectCenter:O,ascending:k,bisector:F,blur:function(t,n){if(!((n=+n)>=0))throw new RangeError("invalid r");let e=t.length;if(!((e=Math.floor(e))>=0))throw new RangeError("invalid length");if(!e||!n)return t;const r=H(n),i=t.slice();return r(t,i,0,e,1),r(i,t,0,e,1),r(t,i,0,e,1),t},blur2:j,blurImage:L,count:Y,cross:function(...t){const n="function"==typeof t[t.length-1]&&function(t){return n=>t(...n)}(t.pop()),e=(t=t.map(X)).map(G),r=t.length-1,i=new Array(r+1).fill(0),a=[];if(r<0||e.some(W))return a;for(;;){a.push(i.map((n,e)=>t[e][n]));let o=r;for(;++i[o]===e[o];){if(0===o)return n?a.map(n):a;i[o--]=0}}},cumsum:function(t,n){var e=0,r=0;return Float64Array.from(t,void 0===n?t=>e+=+t||0:i=>e+=+n(i,r++,t)||0)},descending:q,deviation:K,extent:Z,Adder:J,fsum:function(t,n){const e=new J;if(void 0===n)for(let n of t)(n=+n)&&e.add(n);else{let r=-1;for(let i of t)(i=+n(i,++r,t))&&e.add(i)}return+e},fcumsum:function(t,n){const e=new J;let r=-1;return Float64Array.from(t,void 0===n?t=>e.add(+t||0):i=>e.add(+n(i,++r,t)||0))},group:ut,flatGroup:function(t,...n){return ct(st(t,...n),n)},flatRollup:function(t,n,...e){return ct(ft(t,n,...e),e)},groups:st,index:function(t,...n){return dt(t,ot,ht,n)},indexes:function(t,...n){return dt(t,Array.from,ht,n)},rollup:lt,rollups:ft,groupSort:function(t,n,e){return(2!==n.length?mt(lt(t,n,e),([t,n],[e,r])=>k(n,r)||k(t,e)):mt(ut(t,e),([t,e],[r,i])=>n(e,i)||k(t,r))).map(([t])=>t)},bin:Ct,histogram:Ct,thresholdFreedmanDiaconis:function(t,n,e){const r=Y(t),i=Rt(t,.75)-Rt(t,.25);return r&&i?Math.ceil((e-n)/(2*i*Math.pow(r,-1/3))):1},thresholdScott:function(t,n,e){const r=Y(t),i=K(t);return r&&i?Math.ceil((e-n)*Math.cbrt(r)/(3.49*i)):1},thresholdSturges:Tt,max:kt,maxIndex:qt,mean:jt,median:function(t,n){return Rt(t,.5,n)},medianIndex:function(t,n){return Vt(t,.5,n)},merge:Lt,min:Ft,minIndex:Dt,mode:function(t,n){const e=new tt;if(void 0===n)for(let n of t)null!=n&&n>=n&&e.set(n,(e.get(n)||0)+1);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&i>=i&&e.set(i,(e.get(i)||0)+1)}let r,i=0;for(const[t,n]of e)n>i&&(i=n,r=t);return r},nice:At,pairs:function(t,n=Bt){const e=[];let r,i=!1;for(const a of t)i&&e.push(n(r,a)),r=a,i=!0;return e},permute:pt,quantile:Rt,quantileIndex:Vt,quantileSorted:Ot,quickselect:zt,range:$t,rank:function(t,n=k){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");let e=Array.from(t);const r=new Float64Array(e.length);2!==n.length&&(e=e.map(n),n=k);const i=(t,r)=>n(e[t],e[r]);let a,o;return(t=Uint32Array.from(e,(t,n)=>n)).sort(n===k?(t,n)=>vt(e[t],e[n]):gt(i)),t.forEach((t,n)=>{const e=i(t,void 0===a?t:a);e>=0?((void 0===a||e>0)&&(a=t,o=n),r[t]=o):r[t]=NaN}),r},least:function(t,n=k){let e,r=!1;if(1===n.length){let i;for(const a of t){const t=n(a);(r?k(t,i)<0:0===k(t,t))&&(e=a,i=t,r=!0)}}else for(const i of t)(r?n(i,e)<0:0===n(i,i))&&(e=i,r=!0);return e},leastIndex:Ut,greatest:Pt,greatestIndex:function(t,n=k){if(1===n.length)return qt(t,n);let e,r=-1,i=-1;for(const a of t)++i,(r<0?0===n(a,a):n(a,e)>0)&&(e=a,r=i);return r},scan:function(t,n){const e=Ut(t,n);return e<0?void 0:e},shuffle:Ht,shuffler:Yt,sum:Gt,ticks:St,tickIncrement:Nt,tickStep:Et,transpose:Wt,variance:Q,zip:function(){return Wt(arguments)},every:function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");let e=-1;for(const r of t)if(!n(r,++e,t))return!1;return!0},some:function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");let e=-1;for(const r of t)if(n(r,++e,t))return!0;return!1},filter:function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");const e=[];let r=-1;for(const i of t)n(i,++r,t)&&e.push(i);return e},map:function(t,n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");if("function"!=typeof n)throw new TypeError("mapper is not a function");return Array.from(t,(e,r)=>n(e,r,t))},reduce:function(t,n,e){if("function"!=typeof n)throw new TypeError("reducer is not a function");const r=t[Symbol.iterator]();let i,a,o=-1;if(arguments.length<3){if(({done:i,value:e}=r.next()),i)return;++o}for(;({done:i,value:a}=r.next()),!i;)e=n(e,a,++o,t);return e},reverse:function(t){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");return Array.from(t).reverse()},sort:mt,difference:function(t,...n){t=new nt(t);for(const e of n)for(const n of e)t.delete(n);return t},disjoint:function(t,n){const e=n[Symbol.iterator](),r=new nt;for(const n of t){if(r.has(n))return!1;let t,i;for(;({value:t,done:i}=e.next())&&!i;){if(Object.is(n,t))return!1;r.add(t)}}return!0},intersection:function(t,...n){t=new nt(t),n=n.map(Qt);t:for(const e of t)for(const r of n)if(!r.has(e)){t.delete(e);continue t}return t},subset:function(t,n){return Kt(n,t)},superset:Kt,union:function(...t){const n=new nt;for(const e of t)for(const t of e)n.add(t);return n},InternMap:tt,InternSet:nt,axisTop:function(t){return un(1,t)},axisRight:function(t){return un(2,t)},axisBottom:sn,axisLeft:cn,brush:function(){return jo(Co)},brushX:function(){return jo(Ao)},brushY:function(){return jo(To)},brushSelection:function(t){var n=t.__brush;return n?n.dim.output(n.selection):null},chord:function(){return Qo(!1,!1)},chordTranspose:function(){return Qo(!1,!0)},chordDirected:function(){return Qo(!0,!1)},ribbon:function(){return du()},ribbonArrow:function(){return du(hu)},color:cr,rgb:dr,hsl:_r,lab:Pr,hcl:$r,lch:function(t,n,e,r){return 1===arguments.length?Br(t):new Ur(e,n,t,null==r?1:r)},gray:function(t,n){return new Rr(t,0,0,null==n?1:n)},cubehelix:ti,contours:_u,contourDensity:function(){var t=Au,n=Tu,e=Cu,r=960,i=500,a=20,o=2,u=3*a,s=r+2*u>>o,c=i+2*u>>o,l=gu(20);function f(r){var i=new Float32Array(s*c),l=Math.pow(2,-o),f=-1;for(const a of r){var h=(t(a,++f,r)+u)*l,d=(n(a,f,r)+u)*l,p=+e(a,f,r);if(p&&h>=0&&h<s&&d>=0&&d<c){var m=Math.floor(h),g=Math.floor(d),v=h-m-.5,y=d-g-.5;i[m+g*s]+=(1-v)*(1-y)*p,i[m+1+g*s]+=v*(1-y)*p,i[m+1+(g+1)*s]+=v*y*p,i[m+(g+1)*s]+=(1-v)*y*p}}return j({data:i,width:s,height:c},a*l),i}function h(t){var n=f(t),e=l(n),r=Math.pow(2,2*o);return Array.isArray(e)||(e=St(Number.MIN_VALUE,kt(n)/r,e)),_u().size([s,c]).thresholds(e.map(t=>t*r))(n).map((t,n)=>(t.value=+e[n],d(t)))}function d(t){return t.coordinates.forEach(p),t}function p(t){t.forEach(m)}function m(t){t.forEach(g)}function g(t){t[0]=t[0]*Math.pow(2,o)-u,t[1]=t[1]*Math.pow(2,o)-u}function v(){return s=r+2*(u=3*a)>>o,c=i+2*u>>o,h}return h.contours=function(t){var n=f(t),e=_u().size([s,c]),r=Math.pow(2,2*o),i=t=>{var i=d(e.contour(n,(t=+t)*r));return i.value=t,i};return Object.defineProperty(i,"max",{get:()=>kt(n)/r}),i},h.x=function(n){return arguments.length?(t="function"==typeof n?n:gu(+n),h):t},h.y=function(t){return arguments.length?(n="function"==typeof t?t:gu(+t),h):n},h.weight=function(t){return arguments.length?(e="function"==typeof t?t:gu(+t),h):e},h.size=function(t){if(!arguments.length)return[r,i];var n=+t[0],e=+t[1];if(!(n>=0&&e>=0))throw new Error("invalid size");return r=n,i=e,v()},h.cellSize=function(t){if(!arguments.length)return 1<<o;if(!((t=+t)>=1))throw new Error("invalid cell size");return o=Math.floor(Math.log(t)/Math.LN2),v()},h.thresholds=function(t){return arguments.length?(l="function"==typeof t?t:Array.isArray(t)?gu(pu.call(t)):gu(t),h):l},h.bandwidth=function(t){if(!arguments.length)return Math.sqrt(a*(a+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return a=(Math.sqrt(4*t*t+1)-1)/2,v()},h},Delaunay:is,Voronoi:Zu,dispatch:fn,drag:function(){var t,n,e,r,i=Le,a=Be,o=$e,u=Ue,s={},c=fn("start","drag","end"),l=0,f=0;function h(t){t.on("mousedown.drag",d).filter(u).on("touchstart.drag",g).on("touchmove.drag",v,De).on("touchend.drag touchcancel.drag",y).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(o,u){if(!r&&i.call(this,o,u)){var s=b(this,a.call(this,o,u),o,u,"mouse");s&&(Ae(o.view).on("mousemove.drag",p,ze).on("mouseup.drag",m,ze),Re(o.view),Ie(o),e=!1,t=o.clientX,n=o.clientY,s("start",o))}}function p(r){if(Pe(r),!e){var i=r.clientX-t,a=r.clientY-n;e=i*i+a*a>f}s.mouse("drag",r)}function m(t){Ae(t.view).on("mousemove.drag mouseup.drag",null),Oe(t.view,e),Pe(t),s.mouse("end",t)}function g(t,n){if(i.call(this,t,n)){var e,r,o=t.changedTouches,u=a.call(this,t,n),s=o.length;for(e=0;e<s;++e)(r=b(this,u,t,n,o[e].identifier,o[e]))&&(Ie(t),r("start",t,o[e]))}}function v(t){var n,e,r=t.changedTouches,i=r.length;for(n=0;n<i;++n)(e=s[r[n].identifier])&&(Pe(t),e("drag",t,r[n]))}function y(t){var n,e,i=t.changedTouches,a=i.length;for(r&&clearTimeout(r),r=setTimeout(function(){r=null},500),n=0;n<a;++n)(e=s[i[n].identifier])&&(Ie(t),e("end",t,i[n]))}function b(t,n,e,r,i,a){var u,f,d,p=c.copy(),m=Fe(a||e,n);if(null!=(d=o.call(t,new je("beforestart",{sourceEvent:e,target:h,identifier:i,active:l,x:m[0],y:m[1],dx:0,dy:0,dispatch:p}),r)))return u=d.x-m[0]||0,f=d.y-m[1]||0,function e(a,o,c){var g,v=m;switch(a){case"start":s[i]=e,g=l++;break;case"end":delete s[i],--l;case"drag":m=Fe(c||o,n),g=l}p.call(a,t,new je(a,{sourceEvent:o,subject:d,target:h,identifier:i,active:g,x:m[0]+u,y:m[1]+f,dx:m[0]-v[0],dy:m[1]-v[1],dispatch:p}),r)}}return h.filter=function(t){return arguments.length?(i="function"==typeof t?t:Ve(!!t),h):i},h.container=function(t){return arguments.length?(a="function"==typeof t?t:Ve(t),h):a},h.subject=function(t){return arguments.length?(o="function"==typeof t?t:Ve(t),h):o},h.touchable=function(t){return arguments.length?(u="function"==typeof t?t:Ve(!!t),h):u},h.on=function(){var t=c.on.apply(c,arguments);return t===c?h:t},h.clickDistance=function(t){return arguments.length?(f=(t=+t)*t,h):Math.sqrt(f)},h},dragDisable:Re,dragEnable:Oe,dsvFormat:ls,csvParse:hs,csvParseRows:ds,csvFormat:ps,csvFormatBody:ms,csvFormatRows:gs,csvFormatRow:vs,csvFormatValue:ys,tsvParse:ws,tsvParseRows:xs,tsvFormat:_s,tsvFormatBody:Ms,tsvFormatRows:Ss,tsvFormatRow:Ns,tsvFormatValue:Es,autoType:function(t){for(var n in t){var e,r,i=t[n].trim();if(i)if("true"===i)i=!0;else if("false"===i)i=!1;else if("NaN"===i)i=NaN;else if(isNaN(e=+i)){if(!(r=i.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)))continue;As&&r[4]&&!r[7]&&(i=i.replace(/-/g,"/").replace(/T/," ")),i=new Date(i)}else i=e;else i=null;t[n]=i}return t},easeLinear:t=>+t,easeQuad:Oa,easeQuadIn:function(t){return t*t},easeQuadOut:function(t){return t*(2-t)},easeQuadInOut:Oa,easeCubic:Va,easeCubicIn:function(t){return t*t*t},easeCubicOut:function(t){return--t*t*t+1},easeCubicInOut:Va,easePoly:Ba,easePolyIn:ja,easePolyOut:La,easePolyInOut:Ba,easeSin:Ha,easeSinIn:function(t){return 1===+t?1:1-Math.cos(t*Ua)},easeSinOut:function(t){return Math.sin(t*Ua)},easeSinInOut:Ha,easeExp:Ga,easeExpIn:function(t){return Ya(1-+t)},easeExpOut:function(t){return 1-Ya(t)},easeExpInOut:Ga,easeCircle:Wa,easeCircleIn:function(t){return 1-Math.sqrt(1-t*t)},easeCircleOut:function(t){return Math.sqrt(1- --t*t)},easeCircleInOut:Wa,easeBounce:eo,easeBounceIn:function(t){return 1-eo(1-t)},easeBounceOut:eo,easeBounceInOut:function(t){return((t*=2)<=1?1-eo(1-t):eo(t-1)+1)/2},easeBack:oo,easeBackIn:io,easeBackOut:ao,easeBackInOut:oo,easeElastic:co,easeElasticIn:so,easeElasticOut:co,easeElasticInOut:lo,blob:function(t,n){return fetch(t,n).then(Ts)},buffer:function(t,n){return fetch(t,n).then(Cs)},dsv:function(t,n,e,r){3===arguments.length&&"function"==typeof e&&(r=e,e=void 0);var i=ls(t);return qs(n,e).then(function(t){return i.parse(t,r)})},csv:Ds,tsv:zs,image:function(t,n){return new Promise(function(e,r){var i=new Image;for(var a in n)i[a]=n[a];i.onerror=r,i.onload=function(){e(i)},i.src=t})},json:function(t,n){return fetch(t,n).then(Is)},text:qs,xml:Rs,html:Os,svg:Vs,forceCenter:function(t,n){var e,r=1;function i(){var i,a,o=e.length,u=0,s=0;for(i=0;i<o;++i)u+=(a=e[i]).x,s+=a.y;for(u=(u/o-t)*r,s=(s/o-n)*r,i=0;i<o;++i)(a=e[i]).x-=u,a.y-=s}return null==t&&(t=0),null==n&&(n=0),i.initialize=function(t){e=t},i.x=function(n){return arguments.length?(t=+n,i):t},i.y=function(t){return arguments.length?(n=+t,i):n},i.strength=function(t){return arguments.length?(r=+t,i):r},i},forceCollide:function(t){var n,e,r,i=1,a=1;function o(){for(var t,o,s,c,l,f,h,d=n.length,p=0;p<a;++p)for(o=Us(n,Qs,Ks).visitAfter(u),t=0;t<d;++t)h=(f=e[(s=n[t]).index])*f,c=s.x+s.vx,l=s.y+s.vy,o.visit(m);function m(t,n,e,a,o){var u=t.data,d=t.r,p=f+d;if(!u)return n>c+p||a<c-p||e>l+p||o<l-p;if(u.index>s.index){var m=c-u.x-u.vx,g=l-u.y-u.vy,v=m*m+g*g;v<p*p&&(0===m&&(v+=(m=Xs(r))*m),0===g&&(v+=(g=Xs(r))*g),v=(p-(v=Math.sqrt(v)))/v*i,s.vx+=(m*=v)*(p=(d*=d)/(h+d)),s.vy+=(g*=v)*p,u.vx-=m*(p=1-p),u.vy-=g*p)}}}function u(t){if(t.data)return t.r=e[t.data.index];for(var n=t.r=0;n<4;++n)t[n]&&t[n].r>t.r&&(t.r=t[n].r)}function s(){if(n){var r,i,a=n.length;for(e=new Array(a),r=0;r<a;++r)e[(i=n[r]).index]=+t(i,r,n)}}return"function"!=typeof t&&(t=Ws(null==t?1:+t)),o.initialize=function(t,e){n=t,r=e,s()},o.iterations=function(t){return arguments.length?(a=+t,o):a},o.strength=function(t){return arguments.length?(i=+t,o):i},o.radius=function(n){return arguments.length?(t="function"==typeof n?n:Ws(+n),s(),o):t},o},forceLink:function(t){var n,e,r,i,a,o,u=Zs,s=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},c=Ws(30),l=1;function f(r){for(var i=0,u=t.length;i<l;++i)for(var s,c,f,h,d,p,m,g=0;g<u;++g)h=(f=(s=t[g]).target).x+f.vx-(c=s.source).x-c.vx||Xs(o),d=f.y+f.vy-c.y-c.vy||Xs(o),d*=p=((p=Math.sqrt(h*h+d*d))-e[g])/p*r*n[g],f.vx-=(h*=p)*(m=a[g]),f.vy-=d*m,c.vx+=h*(m=1-m),c.vy+=d*m}function h(){if(r){var o,s,c=r.length,l=t.length,f=new Map(r.map((t,n)=>[u(t,n,r),t]));for(o=0,i=new Array(c);o<l;++o)(s=t[o]).index=o,"object"!=typeof s.source&&(s.source=Js(f,s.source)),"object"!=typeof s.target&&(s.target=Js(f,s.target)),i[s.source.index]=(i[s.source.index]||0)+1,i[s.target.index]=(i[s.target.index]||0)+1;for(o=0,a=new Array(l);o<l;++o)a[o]=i[(s=t[o]).source.index]/(i[s.source.index]+i[s.target.index]);n=new Array(l),d(),e=new Array(l),p()}}function d(){if(r)for(var e=0,i=t.length;e<i;++e)n[e]=+s(t[e],e,t)}function p(){if(r)for(var n=0,i=t.length;n<i;++n)e[n]=+c(t[n],n,t)}return null==t&&(t=[]),f.initialize=function(t,n){r=t,o=n,h()},f.links=function(n){return arguments.length?(t=n,h(),f):t},f.id=function(t){return arguments.length?(u=t,f):u},f.iterations=function(t){return arguments.length?(l=+t,f):l},f.strength=function(t){return arguments.length?(s="function"==typeof t?t:Ws(+t),d(),f):s},f.distance=function(t){return arguments.length?(c="function"==typeof t?t:Ws(+t),p(),f):c},f},forceManyBody:function(){var t,n,e,r,i,a=Ws(-30),o=1,u=Infinity,s=.81;function c(e){var i,a=t.length,o=Us(t,nc,ec).visitAfter(f);for(r=e,i=0;i<a;++i)n=t[i],o.visit(h)}function l(){if(t){var n,e,r=t.length;for(i=new Array(r),n=0;n<r;++n)i[(e=t[n]).index]=+a(e,n,t)}}function f(t){var n,e,r,a,o,u=0,s=0;if(t.length){for(r=a=o=0;o<4;++o)(n=t[o])&&(e=Math.abs(n.value))&&(u+=n.value,s+=e,r+=e*n.x,a+=e*n.y);t.x=r/s,t.y=a/s}else{(n=t).x=n.data.x,n.y=n.data.y;do{u+=i[n.data.index]}while(n=n.next)}t.value=u}function h(t,a,c,l){if(!t.value)return!0;var f=t.x-n.x,h=t.y-n.y,d=l-a,p=f*f+h*h;if(d*d/s<p)return p<u&&(0===f&&(p+=(f=Xs(e))*f),0===h&&(p+=(h=Xs(e))*h),p<o&&(p=Math.sqrt(o*p)),n.vx+=f*t.value*r/p,n.vy+=h*t.value*r/p),!0;if(!(t.length||p>=u)){(t.data!==n||t.next)&&(0===f&&(p+=(f=Xs(e))*f),0===h&&(p+=(h=Xs(e))*h),p<o&&(p=Math.sqrt(o*p)));do{t.data!==n&&(n.vx+=f*(d=i[t.data.index]*r/p),n.vy+=h*d)}while(t=t.next)}}return c.initialize=function(n,r){t=n,e=r,l()},c.strength=function(t){return arguments.length?(a="function"==typeof t?t:Ws(+t),l(),c):a},c.distanceMin=function(t){return arguments.length?(o=t*t,c):Math.sqrt(o)},c.distanceMax=function(t){return arguments.length?(u=t*t,c):Math.sqrt(u)},c.theta=function(t){return arguments.length?(s=t*t,c):Math.sqrt(s)},c},forceRadial:function(t,n,e){var r,i,a,o=Ws(.1);function u(t){for(var o=0,u=r.length;o<u;++o){var s=r[o],c=s.x-n||1e-6,l=s.y-e||1e-6,f=Math.sqrt(c*c+l*l),h=(a[o]-f)*i[o]*t/f;s.vx+=c*h,s.vy+=l*h}}function s(){if(r){var n,e=r.length;for(i=new Array(e),a=new Array(e),n=0;n<e;++n)a[n]=+t(r[n],n,r),i[n]=isNaN(a[n])?0:+o(r[n],n,r)}}return"function"!=typeof t&&(t=Ws(+t)),null==n&&(n=0),null==e&&(e=0),u.initialize=function(t){r=t,s()},u.strength=function(t){return arguments.length?(o="function"==typeof t?t:Ws(+t),s(),u):o},u.radius=function(n){return arguments.length?(t="function"==typeof n?n:Ws(+n),s(),u):t},u.x=function(t){return arguments.length?(n=+t,u):n},u.y=function(t){return arguments.length?(e=+t,u):e},u},forceSimulation:function(t){var n,e=1,r=.001,i=1-Math.pow(r,1/300),a=0,o=.6,u=new Map,s=ea(f),c=fn("tick","end"),l=function(){let t=1;return()=>(t=(1664525*t+1013904223)%tc)/tc}();function f(){h(),c.call("tick",n),e<r&&(s.stop(),c.call("end",n))}function h(r){var s,c,l=t.length;void 0===r&&(r=1);for(var f=0;f<r;++f)for(e+=(a-e)*i,u.forEach(function(t){t(e)}),s=0;s<l;++s)null==(c=t[s]).fx?c.x+=c.vx*=o:(c.x=c.fx,c.vx=0),null==c.fy?c.y+=c.vy*=o:(c.y=c.fy,c.vy=0);return n}function d(){for(var n,e=0,r=t.length;e<r;++e){if((n=t[e]).index=e,null!=n.fx&&(n.x=n.fx),null!=n.fy&&(n.y=n.fy),isNaN(n.x)||isNaN(n.y)){var i=10*Math.sqrt(.5+e),a=e*rc;n.x=i*Math.cos(a),n.y=i*Math.sin(a)}(isNaN(n.vx)||isNaN(n.vy))&&(n.vx=n.vy=0)}}function p(n){return n.initialize&&n.initialize(t,l),n}return null==t&&(t=[]),d(),n={tick:h,restart:function(){return s.restart(f),n},stop:function(){return s.stop(),n},nodes:function(e){return arguments.length?(t=e,d(),u.forEach(p),n):t},alpha:function(t){return arguments.length?(e=+t,n):e},alphaMin:function(t){return arguments.length?(r=+t,n):r},alphaDecay:function(t){return arguments.length?(i=+t,n):+i},alphaTarget:function(t){return arguments.length?(a=+t,n):a},velocityDecay:function(t){return arguments.length?(o=1-t,n):1-o},randomSource:function(t){return arguments.length?(l=t,u.forEach(p),n):l},force:function(t,e){return arguments.length>1?(null==e?u.delete(t):u.set(t,p(e)),n):u.get(t)},find:function(n,e,r){var i,a,o,u,s,c=0,l=t.length;for(null==r?r=Infinity:r*=r,c=0;c<l;++c)(o=(i=n-(u=t[c]).x)*i+(a=e-u.y)*a)<r&&(s=u,r=o);return s},on:function(t,e){return arguments.length>1?(c.on(t,e),n):c.on(t)}}},forceX:function(t){var n,e,r,i=Ws(.1);function a(t){for(var i,a=0,o=n.length;a<o;++a)(i=n[a]).vx+=(r[a]-i.x)*e[a]*t}function o(){if(n){var a,o=n.length;for(e=new Array(o),r=new Array(o),a=0;a<o;++a)e[a]=isNaN(r[a]=+t(n[a],a,n))?0:+i(n[a],a,n)}}return"function"!=typeof t&&(t=Ws(null==t?0:+t)),a.initialize=function(t){n=t,o()},a.strength=function(t){return arguments.length?(i="function"==typeof t?t:Ws(+t),o(),a):i},a.x=function(n){return arguments.length?(t="function"==typeof n?n:Ws(+n),o(),a):t},a},forceY:function(t){var n,e,r,i=Ws(.1);function a(t){for(var i,a=0,o=n.length;a<o;++a)(i=n[a]).vy+=(r[a]-i.y)*e[a]*t}function o(){if(n){var a,o=n.length;for(e=new Array(o),r=new Array(o),a=0;a<o;++a)e[a]=isNaN(r[a]=+t(n[a],a,n))?0:+i(n[a],a,n)}}return"function"!=typeof t&&(t=Ws(null==t?0:+t)),a.initialize=function(t){n=t,o()},a.strength=function(t){return arguments.length?(i="function"==typeof t?t:Ws(+t),o(),a):i},a.y=function(n){return arguments.length?(t="function"==typeof n?n:Ws(+n),o(),a):t},a},formatDefaultLocale:bc,get format(){return pc},get formatPrefix(){return mc},formatLocale:yc,formatSpecifier:sc,FormatSpecifier:cc,precisionFixed:wc,precisionPrefix:xc,precisionRound:_c,geoArea:function(t){return vl=new J,Jc(t,yl),2*vl},geoBounds:function(t){var n,e,r,i,a,o,u;if(sl=ul=-(al=ol=Infinity),pl=[],Jc(t,Yl),e=pl.length){for(pl.sort(nf),n=1,a=[r=pl[0]];n<e;++n)ef(r,(i=pl[n])[0])||ef(r,i[1])?(tf(r[0],i[1])>tf(r[0],r[1])&&(r[1]=i[1]),tf(i[0],r[1])>tf(r[0],r[1])&&(r[0]=i[0])):a.push(r=i);for(o=-Infinity,n=0,r=a[e=a.length-1];n<=e;r=i,++n)(u=tf(r[1],(i=a[n])[0]))>o&&(o=u,al=i[0],ul=r[1])}return pl=ml=null,Infinity===al||Infinity===ol?[[NaN,NaN],[NaN,NaN]]:[[al,ol],[ul,sl]]},geoCentroid:function(t){kl=ql=Fl=Dl=zl=Il=Pl=Rl=0,Ol=new J,Vl=new J,jl=new J,Jc(t,rf);var n=+Ol,e=+Vl,r=+jl,i=Rc(n,e,r);return i<Sc&&(n=Il,e=Pl,r=Rl,ql<Mc&&(n=Fl,e=Dl,r=zl),(i=Rc(n,e,r))<Sc)?[NaN,NaN]:[Dc(e,n)*Cc,Hc(r/i)*Cc]},geoCircle:function(){var t,n,e=mf([0,0]),r=mf(90),i=mf(2),a={point:function(e,r){t.push(e=n(e,r)),e[0]*=Cc,e[1]*=Cc}};function o(){var o=e.apply(this,arguments),u=r.apply(this,arguments)*kc,s=i.apply(this,arguments)*kc;return t=[],n=yf(-o[0]*kc,-o[1]*kc,0).invert,Mf(a,u,s,1),o={type:"Polygon",coordinates:[t]},t=n=null,o}return o.center=function(t){return arguments.length?(e="function"==typeof t?t:mf([+t[0],+t[1]]),o):e},o.radius=function(t){return arguments.length?(r="function"==typeof t?t:mf(+t),o):r},o.precision=function(t){return arguments.length?(i="function"==typeof t?t:mf(+t),o):i},o},geoClipAntimeridian:If,geoClipCircle:Pf,geoClipExtent:function(){var t,n,e,r=0,i=0,a=960,o=500;return e={stream:function(e){return t&&n===e?t:t=$f(r,i,a,o)(n=e)},extent:function(u){return arguments.length?(r=+u[0][0],i=+u[0][1],a=+u[1][0],o=+u[1][1],t=n=null,e):[[r,i],[a,o]]}}},geoClipRectangle:$f,geoContains:function(t,n){return(t&&Zf.hasOwnProperty(t.type)?Zf[t.type]:th)(t,n)},geoDistance:Kf,geoGraticule:sh,geoGraticule10:function(){return sh()()},geoInterpolate:function(t,n){var e=t[0]*kc,r=t[1]*kc,i=n[0]*kc,a=n[1]*kc,o=zc(r),u=jc(r),s=zc(a),c=jc(a),l=o*zc(e),f=o*jc(e),h=s*zc(i),d=s*jc(i),p=2*Hc(Bc(Yc(a-r)+o*s*Yc(i-e))),m=jc(p),g=p?function(t){var n=jc(t*=p)/m,e=jc(p-t)/m,r=e*l+n*h,i=e*f+n*d,a=e*u+n*c;return[Dc(i,r)*Cc,Dc(a,Bc(r*r+i*i))*Cc]}:function(){return[e*Cc,r*Cc]};return g.distance=p,g},geoLength:Wf,geoPath:function(t,n){let e,r,i=3,a=4.5;function o(t){return t&&("function"==typeof a&&r.pointRadius(+a.apply(this,arguments)),Jc(t,e(r))),r.result()}return o.area=function(t){return Jc(t,e(Nh)),Nh.result()},o.measure=function(t){return Jc(t,e(sd)),sd.result()},o.bounds=function(t){return Jc(t,e(qh)),qh.result()},o.centroid=function(t){return Jc(t,e(Kh)),Kh.result()},o.projection=function(n){return arguments.length?(e=null==n?(t=null,dh):(t=n).stream,o):t},o.context=function(t){return arguments.length?(r=null==t?(n=null,new dd(i)):new Zh(n=t),"function"!=typeof a&&r.pointRadius(a),o):n},o.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(r.pointRadius(+t),+t),o):a},o.digits=function(t){if(!arguments.length)return i;if(null==t)i=null;else{const n=Math.floor(t);if(!(n>=0))throw new RangeError(`invalid digits: ${t}`);i=n}return null===n&&(r=new dd(i)),o},o.projection(t).digits(i).context(n)},geoAlbers:qd,geoAlbersUsa:function(){var t,n,e,r,i,a,o=qd(),u=kd().rotate([154,0]).center([-2,58.5]).parallels([55,65]),s=kd().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(t,n){a=[t,n]}};function l(t){var n=t[0],o=t[1];return a=null,e.point(n,o),a||(r.point(n,o),a)||(i.point(n,o),a)}function f(){return t=n=null,l}return l.invert=function(t){var n=o.scale(),e=o.translate(),r=(t[0]-e[0])/n,i=(t[1]-e[1])/n;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?s:o).invert(t)},l.stream=function(e){return t&&n===e?t:(r=[o.stream(n=e),u.stream(e),s.stream(e)],i=r.length,t={point:function(t,n){for(var e=-1;++e<i;)r[e].point(t,n)},sphere:function(){for(var t=-1;++t<i;)r[t].sphere()},lineStart:function(){for(var t=-1;++t<i;)r[t].lineStart()},lineEnd:function(){for(var t=-1;++t<i;)r[t].lineEnd()},polygonStart:function(){for(var t=-1;++t<i;)r[t].polygonStart()},polygonEnd:function(){for(var t=-1;++t<i;)r[t].polygonEnd()}});var r,i},l.precision=function(t){return arguments.length?(o.precision(t),u.precision(t),s.precision(t),f()):o.precision()},l.scale=function(t){return arguments.length?(o.scale(t),u.scale(.35*t),s.scale(t),l.translate(o.translate())):o.scale()},l.translate=function(t){if(!arguments.length)return o.translate();var n=o.scale(),a=+t[0],l=+t[1];return e=o.translate(t).clipExtent([[a-.455*n,l-.238*n],[a+.455*n,l+.238*n]]).stream(c),r=u.translate([a-.307*n,l+.201*n]).clipExtent([[a-.425*n+Mc,l+.12*n+Mc],[a-.214*n-Mc,l+.234*n-Mc]]).stream(c),i=s.translate([a-.205*n,l+.212*n]).clipExtent([[a-.214*n+Mc,l+.166*n+Mc],[a-.115*n-Mc,l+.234*n-Mc]]).stream(c),f()},l.fitExtent=function(t,n){return yd(l,t,n)},l.fitSize=function(t,n){return bd(l,t,n)},l.fitWidth=function(t,n){return wd(l,t,n)},l.fitHeight=function(t,n){return xd(l,t,n)},l.scale(1070)},geoAzimuthalEqualArea:function(){return Ed(zd).scale(124.75).clipAngle(179.999)},geoAzimuthalEqualAreaRaw:zd,geoAzimuthalEquidistant:function(){return Ed(Id).scale(79.4188).clipAngle(179.999)},geoAzimuthalEquidistantRaw:Id,geoConicConformal:function(){return Td(Vd).scale(109.5).parallels([30,30])},geoConicConformalRaw:Vd,geoConicEqualArea:kd,geoConicEqualAreaRaw:Cd,geoConicEquidistant:function(){return Td(Ld).scale(131.154).center([0,13.9389])},geoConicEquidistantRaw:Ld,geoEqualEarth:function(){return Ed(Gd).scale(177.158)},geoEqualEarthRaw:Gd,geoEquirectangular:function(){return Ed(jd).scale(152.63)},geoEquirectangularRaw:jd,geoGnomonic:function(){return Ed(Wd).scale(144.049).clipAngle(60)},geoGnomonicRaw:Wd,geoIdentity:function(){var t,n,e,r,i,a,o,u=1,s=0,c=0,l=1,f=1,h=0,d=null,p=1,m=1,g=md({point:function(t,n){var e=b([t,n]);this.stream.point(e[0],e[1])}}),v=dh;function y(){return p=u*l,m=u*f,a=o=null,b}function b(e){var r=e[0]*p,i=e[1]*m;if(h){var a=i*t-r*n;r=r*t+i*n,i=a}return[r+s,i+c]}return b.invert=function(e){var r=e[0]-s,i=e[1]-c;if(h){var a=i*t+r*n;r=r*t-i*n,i=a}return[r/p,i/m]},b.stream=function(t){return a&&o===t?a:a=g(v(o=t))},b.postclip=function(t){return arguments.length?(v=t,d=e=r=i=null,y()):v},b.clipExtent=function(t){return arguments.length?(v=null==t?(d=e=r=i=null,dh):$f(d=+t[0][0],e=+t[0][1],r=+t[1][0],i=+t[1][1]),y()):null==d?null:[[d,e],[r,i]]},b.scale=function(t){return arguments.length?(u=+t,y()):u},b.translate=function(t){return arguments.length?(s=+t[0],c=+t[1],y()):[s,c]},b.angle=function(e){return arguments.length?(n=jc(h=e%360*kc),t=zc(h),y()):h*Cc},b.reflectX=function(t){return arguments.length?(l=t?-1:1,y()):l<0},b.reflectY=function(t){return arguments.length?(f=t?-1:1,y()):f<0},b.fitExtent=function(t,n){return yd(b,t,n)},b.fitSize=function(t,n){return bd(b,t,n)},b.fitWidth=function(t,n){return wd(b,t,n)},b.fitHeight=function(t,n){return xd(b,t,n)},b},geoProjection:Ed,geoProjectionMutator:Ad,geoMercator:function(){return Rd(Pd).scale(961/Tc)},geoMercatorRaw:Pd,geoNaturalEarth1:function(){return Ed(Xd).scale(175.295)},geoNaturalEarth1Raw:Xd,geoOrthographic:function(){return Ed(Qd).scale(249.5).clipAngle(90.000001)},geoOrthographicRaw:Qd,geoStereographic:function(){return Ed(Kd).scale(250).clipAngle(142)},geoStereographicRaw:Kd,geoTransverseMercator:function(){var t=Rd(Zd),n=t.center,e=t.rotate;return t.center=function(t){return arguments.length?n([-t[1],t[0]]):[(t=n())[1],-t[0]]},t.rotate=function(t){return arguments.length?e([t[0],t[1],t.length>2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)},geoTransverseMercatorRaw:Zd,geoRotation:_f,geoStream:Jc,geoTransform:function(t){return{stream:md(t)}},cluster:function(){var t=Jd,n=1,e=1,r=!1;function i(i){var a,o=0;i.eachAfter(function(n){var e=n.children;e?(n.x=function(t){return t.reduce(tp,0)/t.length}(e),n.y=function(t){return 1+t.reduce(np,0)}(e)):(n.x=a?o+=t(n,a):0,n.y=0,a=n)});var u=function(t){for(var n;n=t.children;)t=n[0];return t}(i),s=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(i),c=u.x-t(u,s)/2,l=s.x+t(s,u)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*n,t.y=(i.y-t.y)*e}:function(t){t.x=(t.x-c)/(l-c)*n,t.y=(1-(i.y?t.y/i.y:1))*e})}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},hierarchy:rp,Node:sp,pack:function(){var t=null,n=1,e=1,r=fp;function i(i){const a=pp();return i.x=n/2,i.y=e/2,t?i.eachBefore(Cp(t)).eachAfter(kp(r,.5,a)).eachBefore(qp(1)):i.eachBefore(Cp(Tp)).eachAfter(kp(fp,1,a)).eachAfter(kp(r,i.r/Math.min(n,e),a)).eachBefore(qp(Math.min(n,e)/(2*i.r))),i}return i.radius=function(n){return arguments.length?(t=cp(n),i):t},i.size=function(t){return arguments.length?(n=+t[0],e=+t[1],i):[n,e]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:hp(+t),i):r},i},packSiblings:function(t){return Ap(t,pp()),t},packEnclose:function(t){return mp(t,pp())},partition:function(){var t=1,n=1,e=0,r=!1;function i(i){var a=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/a,i.eachBefore(function(t,n){return function(r){r.children&&Dp(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,a=r.y0,o=r.x1-e,u=r.y1-e;o<i&&(i=o=(i+o)/2),u<a&&(a=u=(a+u)/2),r.x0=i,r.y0=a,r.x1=o,r.y1=u}}(n,a)),r&&i.eachBefore(Fp),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(e){return arguments.length?(t=+e[0],n=+e[1],i):[t,n]},i.padding=function(t){return arguments.length?(e=+t,i):e},i},stratify:function(){var t,n=Rp,e=Op;function r(r){var i,a,o,u,s,c,l,f,h=Array.from(r),d=n,p=e,m=new Map;if(null!=t){const n=h.map((n,e)=>function(t){let n=(t=`${t}`).length;return jp(t,n-1)&&!jp(t,n-2)&&(t=t.slice(0,-1)),"/"===t[0]?t:`/${t}`}(t(n,e,r))),e=n.map(Vp),i=new Set(n).add("");for(const t of e)i.has(t)||(i.add(t),n.push(t),e.push(Vp(t)),h.push(Pp));d=(t,e)=>n[e],p=(t,n)=>e[n]}for(o=0,i=h.length;o<i;++o)c=h[o]=new sp(a=h[o]),null!=(l=d(a,o,r))&&(l+="")&&(f=c.id=l,m.set(f,m.has(f)?Ip:c)),null!=(l=p(a,o,r))&&(l+="")&&(c.parent=l);for(o=0;o<i;++o)if(l=(c=h[o]).parent){if(!(s=m.get(l)))throw new Error("missing: "+l);if(s===Ip)throw new Error("ambiguous: "+l);s.children?s.children.push(c):s.children=[c],c.parent=s}else{if(u)throw new Error("multiple roots");u=c}if(!u)throw new Error("no root");if(null!=t){for(;u.data===Pp&&1===u.children.length;)u=u.children[0],--i;for(let t=h.length-1;t>=0&&(c=h[t]).data===Pp;--t)c.data=null}if(u.parent=zp,u.eachBefore(function(t){t.depth=t.parent.depth+1,--i}).eachBefore(up),u.parent=null,i>0)throw new Error("cycle");return u}return r.id=function(t){return arguments.length?(n=cp(t),r):n},r.parentId=function(t){return arguments.length?(e=cp(t),r):e},r.path=function(n){return arguments.length?(t=cp(n),r):t},r},tree:function(){var t=Lp,n=1,e=1,r=null;function i(i){var s=function(t){for(var n,e,r,i,a,o=new Yp(t,0),u=[o];n=u.pop();)if(r=n._.children)for(n.children=new Array(a=r.length),i=a-1;i>=0;--i)u.push(e=n.children[i]=new Yp(r[i],i)),e.parent=n;return(o.parent=new Yp(null,0)).children=[o],o}(i);if(s.eachAfter(a),s.parent.m=-s.z,s.eachBefore(o),r)i.eachBefore(u);else{var c=i,l=i,f=i;i.eachBefore(function(t){t.x<c.x&&(c=t),t.x>l.x&&(l=t),t.depth>f.depth&&(f=t)});var h=c===l?1:t(c,l)/2,d=h-c.x,p=n/(l.x+h+d),m=e/(f.depth||1);i.eachBefore(function(t){t.x=(t.x+d)*p,t.y=t.depth*m})}return i}function a(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!function(t){for(var n,e=0,r=0,i=t.children,a=i.length;--a>=0;)(n=i[a]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(n);var a=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-a):n.z=a}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,a=n,o=n,u=e,s=a.parent.children[0],c=a.m,l=o.m,f=u.m,h=s.m;u=$p(u),a=Bp(a),u&&a;)s=Bp(s),(o=$p(o)).a=n,(i=u.z+f-a.z-c+t(u._,a._))>0&&(Up(Hp(u,n,r),n,i),c+=i,l+=i),f+=u.m,c+=a.m,h+=s.m,l+=o.m;u&&!$p(o)&&(o.t=u,o.m+=f-l),a&&!Bp(s)&&(s.t=a,s.m+=c-h,r=n)}return r}(n,i,n.parent.A||r[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},treemap:function(){var t=Qp,n=!1,e=1,r=1,i=[0],a=fp,o=fp,u=fp,s=fp,c=fp;function l(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(f),i=[0],n&&t.eachBefore(Fp),t}function f(n){var e=i[n.depth],r=n.x0+e,l=n.y0+e,f=n.x1-e,h=n.y1-e;f<r&&(r=f=(r+f)/2),h<l&&(l=h=(l+h)/2),n.x0=r,n.y0=l,n.x1=f,n.y1=h,n.children&&(e=i[n.depth+1]=a(n)/2,r+=c(n)-e,l+=o(n)-e,(f-=u(n)-e)<r&&(r=f=(r+f)/2),(h-=s(n)-e)<l&&(l=h=(l+h)/2),t(n,r,l,f,h))}return l.round=function(t){return arguments.length?(n=!!t,l):n},l.size=function(t){return arguments.length?(e=+t[0],r=+t[1],l):[e,r]},l.tile=function(n){return arguments.length?(t=lp(n),l):t},l.padding=function(t){return arguments.length?l.paddingInner(t).paddingOuter(t):l.paddingInner()},l.paddingInner=function(t){return arguments.length?(a="function"==typeof t?t:hp(+t),l):a},l.paddingOuter=function(t){return arguments.length?l.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):l.paddingTop()},l.paddingTop=function(t){return arguments.length?(o="function"==typeof t?t:hp(+t),l):o},l.paddingRight=function(t){return arguments.length?(u="function"==typeof t?t:hp(+t),l):u},l.paddingBottom=function(t){return arguments.length?(s="function"==typeof t?t:hp(+t),l):s},l.paddingLeft=function(t){return arguments.length?(c="function"==typeof t?t:hp(+t),l):c},l},treemapBinary:function(t,n,e,r,i){var a,o,u=t.children,s=u.length,c=new Array(s+1);for(c[0]=o=a=0;a<s;++a)c[a+1]=o+=u[a].value;!function t(n,e,r,i,a,o,s){if(n>=e-1){var l=u[n];return l.x0=i,l.y0=a,l.x1=o,void(l.y1=s)}for(var f=c[n],h=r/2+f,d=n+1,p=e-1;d<p;){var m=d+p>>>1;c[m]<h?d=m+1:p=m}h-c[d-1]<c[d]-h&&n+1<d&&--d;var g=c[d]-f,v=r-g;if(o-i>s-a){var y=r?(i*v+o*g)/r:o;t(n,d,g,i,a,y,s),t(d,e,v,y,a,o,s)}else{var b=r?(a*v+s*g)/r:s;t(n,d,g,i,a,o,b),t(d,e,v,i,b,o,s)}}(0,s,t.value,n,e,r,i)},treemapDice:Dp,treemapSlice:Gp,treemapSliceDice:function(t,n,e,r,i){(1&t.depth?Gp:Dp)(t,n,e,r,i)},treemapSquarify:Qp,treemapResquarify:Kp,interpolate:_i,interpolateArray:function(t,n){return(pi(n)?di:mi)(t,n)},interpolateBasis:ri,interpolateBasisClosed:ii,interpolateDate:gi,interpolateDiscrete:function(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}},interpolateHue:function(t,n){var e=ui(+t,+n);return function(t){var n=e(t);return n-360*Math.floor(n/360)}},interpolateNumber:vi,interpolateNumberArray:di,interpolateObject:yi,interpolateRound:Mi,interpolateString:xi,interpolateTransformCss:Ci,interpolateTransformSvg:ki,interpolateZoom:Fi,interpolateRgb:ci,interpolateRgbBasis:fi,interpolateRgbBasisClosed:hi,interpolateHsl:zi,interpolateHslLong:Ii,interpolateLab:function(t,n){var e=si((t=Pr(t)).l,(n=Pr(n)).l),r=si(t.a,n.a),i=si(t.b,n.b),a=si(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=a(n),t+""}},interpolateHcl:Ri,interpolateHclLong:Oi,interpolateCubehelix:ji,interpolateCubehelixLong:Li,piecewise:Bi,quantize:function(t,n){for(var e=new Array(n),r=0;r<n;++r)e[r]=t(r/(n-1));return e},Path:eu,path:ru,pathRound:function(t=3){return new eu(+t)},polygonArea:function(t){for(var n,e=-1,r=t.length,i=t[r-1],a=0;++e<r;)a+=(n=i)[1]*(i=t[e])[0]-n[0]*i[1];return a/2},polygonCentroid:function(t){for(var n,e,r=-1,i=t.length,a=0,o=0,u=t[i-1],s=0;++r<i;)s+=e=(n=u)[0]*(u=t[r])[1]-u[0]*n[1],a+=(n[0]+u[0])*e,o+=(n[1]+u[1])*e;return[a/(s*=3),o/s]},polygonHull:function(t){if((e=t.length)<3)return null;var n,e,r=new Array(e),i=new Array(e);for(n=0;n<e;++n)r[n]=[+t[n][0],+t[n][1],n];for(r.sort(Jp),n=0;n<e;++n)i[n]=[r[n][0],-r[n][1]];var a=tm(r),o=tm(i),u=o[0]===a[0],s=o[o.length-1]===a[a.length-1],c=[];for(n=a.length-1;n>=0;--n)c.push(t[r[a[n]][2]]);for(n=+u;n<o.length-s;++n)c.push(t[r[o[n]][2]]);return c},polygonContains:function(t,n){for(var e,r,i=t.length,a=t[i-1],o=n[0],u=n[1],s=a[0],c=a[1],l=!1,f=0;f<i;++f)e=(a=t[f])[0],(r=a[1])>u!=c>u&&o<(s-e)*(u-r)/(c-r)+e&&(l=!l),s=e,c=r;return l},polygonLength:function(t){for(var n,e,r=-1,i=t.length,a=t[i-1],o=a[0],u=a[1],s=0;++r<i;)n=o,e=u,n-=o=(a=t[r])[0],e-=u=a[1],s+=Math.hypot(n,e);return s},quadtree:Us,randomUniform:em,randomInt:rm,randomNormal:im,randomLogNormal:am,randomBates:um,randomIrwinHall:om,randomExponential:sm,randomPareto:cm,randomBernoulli:lm,randomGeometric:fm,randomBinomial:pm,randomGamma:hm,randomBeta:dm,randomWeibull:mm,randomCauchy:gm,randomLogistic:vm,randomPoisson:ym,randomLcg:function(t=Math.random()){let n=0|(0<=t&&t<1?t/bm:Math.abs(t));return()=>(n=1664525*n+1013904223|0,bm*(n>>>0))},scaleBand:Sm,scalePoint:Em,scaleIdentity:function t(n){var e;function r(t){return null==t||isNaN(t=+t)?e:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(n=Array.from(t,Am),r):n.slice()},r.unknown=function(t){return arguments.length?(e=t,r):e},r.copy=function(){return t(n).unknown(e)},n=arguments.length?Array.from(n,Am):[0,1],Rm(r)},scaleLinear:Om,scaleLog:function t(){const n=Ym(zm()).domain([1,10]);return n.copy=()=>Dm(n,t()).base(n.base()),wm.apply(n,arguments),n},scaleSymlog:function t(){var n=Xm(zm());return n.copy=function(){return Dm(n,t()).constant(n.constant())},wm.apply(n,arguments)},scaleOrdinal:Mm,scaleImplicit:_m,scalePow:tg,scaleSqrt:function(){return tg.apply(null,arguments).exponent(.5)},scaleRadial:function t(){var n,e=Im(),r=[0,1],i=!1;function a(t){var r=function(t){return Math.sign(t)*Math.sqrt(Math.abs(t))}(e(t));return isNaN(r)?n:i?Math.round(r):r}return a.invert=function(t){return e.invert(ng(t))},a.domain=function(t){return arguments.length?(e.domain(t),a):e.domain()},a.range=function(t){return arguments.length?(e.range((r=Array.from(t,Am)).map(ng)),a):r.slice()},a.rangeRound=function(t){return a.range(t).round(!0)},a.round=function(t){return arguments.length?(i=!!t,a):i},a.clamp=function(t){return arguments.length?(e.clamp(t),a):e.clamp()},a.unknown=function(t){return arguments.length?(n=t,a):n},a.copy=function(){return t(e.domain(),r).round(i).clamp(e.clamp()).unknown(n)},wm.apply(a,arguments),Rm(a)},scaleQuantile:function t(){var n,e=[],r=[],i=[];function a(){var t=0,n=Math.max(1,r.length);for(i=new Array(n-1);++t<n;)i[t-1]=Ot(e,t/n);return o}function o(t){return null==t||isNaN(t=+t)?n:r[V(i,t)]}return o.invertExtent=function(t){var n=r.indexOf(t);return n<0?[NaN,NaN]:[n>0?i[n-1]:e[0],n<i.length?i[n]:e[e.length-1]]},o.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)null==n||isNaN(n=+n)||e.push(n);return e.sort(k),a()},o.range=function(t){return arguments.length?(r=Array.from(t),a()):r.slice()},o.unknown=function(t){return arguments.length?(n=t,o):n},o.quantiles=function(){return i.slice()},o.copy=function(){return t().domain(e).range(r).unknown(n)},wm.apply(o,arguments)},scaleQuantize:function t(){var n,e=0,r=1,i=1,a=[.5],o=[0,1];function u(t){return null!=t&&t<=t?o[V(a,t,0,i)]:n}function s(){var t=-1;for(a=new Array(i);++t<i;)a[t]=((t+1)*r-(t-i)*e)/(i+1);return u}return u.domain=function(t){return arguments.length?([e,r]=t,e=+e,r=+r,s()):[e,r]},u.range=function(t){return arguments.length?(i=(o=Array.from(t)).length-1,s()):o.slice()},u.invertExtent=function(t){var n=o.indexOf(t);return n<0?[NaN,NaN]:n<1?[e,a[0]]:n>=i?[a[i-1],r]:[a[n-1],a[n]]},u.unknown=function(t){return arguments.length?(n=t,u):u},u.thresholds=function(){return a.slice()},u.copy=function(){return t().domain([e,r]).range(o).unknown(n)},wm.apply(Rm(u),arguments)},scaleThreshold:function t(){var n,e=[.5],r=[0,1],i=1;function a(t){return null!=t&&t<=t?r[V(e,t,0,i)]:n}return a.domain=function(t){return arguments.length?(e=Array.from(t),i=Math.min(e.length,r.length-1),a):e.slice()},a.range=function(t){return arguments.length?(r=Array.from(t),i=Math.min(e.length,r.length-1),a):r.slice()},a.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},a.unknown=function(t){return arguments.length?(n=t,a):n},a.copy=function(){return t().domain(e).range(r).unknown(n)},wm.apply(a,arguments)},scaleTime:function(){return wm.apply(Zy(gv,vv,cv,av,kg,Mg,bg,mg,dg,Mv).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},scaleUtc:function(){return wm.apply(Zy(pv,mv,fv,uv,Hg,Ng,xg,vg,dg,Nv).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},scaleSequential:nb,scaleSequentialLog:function t(){var n=Ym(Jy()).domain([1,10]);return n.copy=function(){return tb(n,t()).base(n.base())},xm.apply(n,arguments)},scaleSequentialPow:eb,scaleSequentialSqrt:function(){return eb.apply(null,arguments).exponent(.5)},scaleSequentialSymlog:function t(){var n=Xm(Jy());return n.copy=function(){return tb(n,t()).constant(n.constant())},xm.apply(n,arguments)},scaleSequentialQuantile:function t(){var n=[],e=Cm;function r(t){if(null!=t&&!isNaN(t=+t))return e((V(n,t,1)-1)/(n.length-1))}return r.domain=function(t){if(!arguments.length)return n.slice();n=[];for(let e of t)null==e||isNaN(e=+e)||n.push(e);return n.sort(k),r},r.interpolator=function(t){return arguments.length?(e=t,r):e},r.range=function(){return n.map((t,r)=>e(r/(n.length-1)))},r.quantiles=function(t){return Array.from({length:t+1},(e,r)=>Rt(n,r/t))},r.copy=function(){return t(e).domain(n)},xm.apply(r,arguments)},scaleDiverging:function t(){var n=Rm(rb()(Cm));return n.copy=function(){return tb(n,t())},xm.apply(n,arguments)},scaleDivergingLog:function t(){var n=Ym(rb()).domain([.1,1,10]);return n.copy=function(){return tb(n,t()).base(n.base())},xm.apply(n,arguments)},scaleDivergingPow:ib,scaleDivergingSqrt:function(){return ib.apply(null,arguments).exponent(.5)},scaleDivergingSymlog:function t(){var n=Xm(rb());return n.copy=function(){return tb(n,t()).constant(n.constant())},xm.apply(n,arguments)},tickFormat:Pm,schemeCategory10:ob,schemeAccent:ub,schemeDark2:sb,schemeObservable10:cb,schemePaired:lb,schemePastel1:fb,schemePastel2:hb,schemeSet1:db,schemeSet2:pb,schemeSet3:mb,schemeTableau10:gb,interpolateBrBG:bb,schemeBrBG:yb,interpolatePRGn:xb,schemePRGn:wb,interpolatePiYG:Mb,schemePiYG:_b,interpolatePuOr:Nb,schemePuOr:Sb,interpolateRdBu:Ab,schemeRdBu:Eb,interpolateRdGy:Cb,schemeRdGy:Tb,interpolateRdYlBu:qb,schemeRdYlBu:kb,interpolateRdYlGn:Db,schemeRdYlGn:Fb,interpolateSpectral:Ib,schemeSpectral:zb,interpolateBuGn:Rb,schemeBuGn:Pb,interpolateBuPu:Vb,schemeBuPu:Ob,interpolateGnBu:Lb,schemeGnBu:jb,interpolateOrRd:$b,schemeOrRd:Bb,interpolatePuBuGn:Hb,schemePuBuGn:Ub,interpolatePuBu:Gb,schemePuBu:Yb,interpolatePuRd:Xb,schemePuRd:Wb,interpolateRdPu:Kb,schemeRdPu:Qb,interpolateYlGnBu:Jb,schemeYlGnBu:Zb,interpolateYlGn:nw,schemeYlGn:tw,interpolateYlOrBr:rw,schemeYlOrBr:ew,interpolateYlOrRd:aw,schemeYlOrRd:iw,interpolateBlues:uw,schemeBlues:ow,interpolateGreens:cw,schemeGreens:sw,interpolateGreys:fw,schemeGreys:lw,interpolatePurples:dw,schemePurples:hw,interpolateReds:mw,schemeReds:pw,interpolateOranges:vw,schemeOranges:gw,interpolateCividis:function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-t*(35.34-t*(2381.73-t*(6402.7-t*(7024.72-2710.57*t)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+t*(170.73+t*(52.82-t*(131.46-t*(176.58-67.37*t)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+t*(442.36-t*(2482.43-t*(6167.24-t*(6614.94-2475.67*t)))))))+")"},interpolateCubehelixDefault:yw,interpolateRainbow:function(t){(t<0||t>1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return xw.h=360*t-100,xw.s=1.5-1.5*n,xw.l=.8-.9*n,xw+""},interpolateWarm:bw,interpolateCool:ww,interpolateSinebow:function(t){var n;return t=(.5-t)*Math.PI,_w.r=255*(n=Math.sin(t))*n,_w.g=255*(n=Math.sin(t+Mw))*n,_w.b=255*(n=Math.sin(t+Sw))*n,_w+""},interpolateTurbo:function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"},interpolateViridis:Ew,interpolateMagma:Aw,interpolateInferno:Tw,interpolatePlasma:Cw,create:function(t){return Ae(wn(t).call(document.documentElement))},creator:wn,local:Ce,matcher:En,namespace:vn,namespaces:gn,pointer:Fe,pointers:function(t,n){return t.target&&(t=qe(t),void 0===n&&(n=t.currentTarget),t=t.touches||[t]),Array.from(t,t=>Fe(t,n))},select:Ae,selectAll:function(t){return"string"==typeof t?new Ne([document.querySelectorAll(t)],[document.documentElement]):new Ne([Mn(t)],Se)},selection:Ee,selector:_n,selectorAll:Nn,style:Xn,window:Hn,arc:Qw,area:ix,line:rx,pie:ux,areaRadial:dx,radialArea:dx,lineRadial:hx,radialLine:hx,pointRadial:px,link:_x,linkHorizontal:function(){return _x(vx)},linkVertical:function(){return _x(yx)},linkRadial:function(){const t=_x(bx);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},symbol:function(t,n){let e=null,r=$w(i);function i(){let i;if(e||(e=i=r()),t.apply(this,arguments).draw(e,+n.apply(this,arguments)),i)return e=null,i+""||null}return t="function"==typeof t?t:kw(t||Nx),n="function"==typeof n?n:kw(void 0===n?64:+n),i.type=function(n){return arguments.length?(t="function"==typeof n?n:kw(n),i):t},i.size=function(t){return arguments.length?(n="function"==typeof t?t:kw(+t),i):n},i.context=function(t){return arguments.length?(e=null==t?null:t,i):e},i},symbolsStroke:Xx,symbolsFill:Wx,symbols:Wx,symbolAsterisk:Sx,symbolCircle:Nx,symbolCross:Ex,symbolDiamond:Cx,symbolDiamond2:kx,symbolPlus:qx,symbolSquare:Fx,symbolSquare2:Dx,symbolStar:Rx,symbolTriangle:Vx,symbolTriangle2:Lx,symbolWye:Yx,symbolTimes:Gx,symbolX:Gx,curveBasisClosed:function(t){return new t_(t)},curveBasisOpen:function(t){return new n_(t)},curveBasis:Jx,curveBumpX:vx,curveBumpY:yx,curveBundle:r_,curveCardinalClosed:s_,curveCardinalOpen:l_,curveCardinal:o_,curveCatmullRomClosed:m_,curveCatmullRomOpen:v_,curveCatmullRom:d_,curveLinearClosed:function(t){return new y_(t)},curveLinear:tx,curveMonotoneX:function(t){return new M_(t)},curveMonotoneY:function(t){return new S_(t)},curveNatural:function(t){return new E_(t)},curveStep:function(t){return new T_(t,.5)},curveStepAfter:function(t){return new T_(t,1)},curveStepBefore:function(t){return new T_(t,0)},stack:function(){var t=kw([]),n=k_,e=C_,r=q_;function i(i){var a,o,u=Array.from(t.apply(this,arguments),F_),s=u.length,c=-1;for(const t of i)for(a=0,++c;a<s;++a)(u[a][c]=[0,+r(t,u[a].key,c,i)]).data=t;for(a=0,o=Zw(n(u));a<s;++a)u[o[a]].index=a;return e(u,o),u}return i.keys=function(n){return arguments.length?(t="function"==typeof n?n:kw(Array.from(n)),i):t},i.value=function(t){return arguments.length?(r="function"==typeof t?t:kw(+t),i):r},i.order=function(t){return arguments.length?(n=null==t?k_:"function"==typeof t?t:kw(Array.from(t)),i):n},i.offset=function(t){return arguments.length?(e=null==t?C_:t,i):e},i},stackOffsetExpand:function(t,n){if((r=t.length)>0){for(var e,r,i,a=0,o=t[0].length;a<o;++a){for(i=e=0;e<r;++e)i+=t[e][a][1]||0;if(i)for(e=0;e<r;++e)t[e][a][1]/=i}C_(t,n)}},stackOffsetDiverging:function(t,n){if((u=t.length)>0)for(var e,r,i,a,o,u,s=0,c=t[n[0]].length;s<c;++s)for(a=o=0,e=0;e<u;++e)(i=(r=t[n[e]][s])[1]-r[0])>0?(r[0]=a,r[1]=a+=i):i<0?(r[1]=o,r[0]=o+=i):(r[0]=0,r[1]=i)},stackOffsetNone:C_,stackOffsetSilhouette:function(t,n){if((e=t.length)>0){for(var e,r=0,i=t[n[0]],a=i.length;r<a;++r){for(var o=0,u=0;o<e;++o)u+=t[o][r][1]||0;i[r][1]+=i[r][0]=-u/2}C_(t,n)}},stackOffsetWiggle:function(t,n){if((i=t.length)>0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,a=0,o=1;o<r;++o){for(var u=0,s=0,c=0;u<i;++u){for(var l=t[n[u]],f=l[o][1]||0,h=(f-(l[o-1][1]||0))/2,d=0;d<u;++d){var p=t[n[d]];h+=(p[o][1]||0)-(p[o-1][1]||0)}s+=f,c+=h*f}e[o-1][1]+=e[o-1][0]=a,s&&(a-=c/s)}e[o-1][1]+=e[o-1][0]=a,C_(t,n)}},stackOrderAppearance:D_,stackOrderAscending:I_,stackOrderDescending:function(t){return I_(t).reverse()},stackOrderInsideOut:function(t){var n,e,r=t.length,i=t.map(P_),a=D_(t),o=0,u=0,s=[],c=[];for(n=0;n<r;++n)e=a[n],o<u?(o+=i[e],s.push(e)):(u+=i[e],c.push(e));return c.reverse().concat(s)},stackOrderNone:k_,stackOrderReverse:function(t){return k_(t).reverse()},timeInterval:ig,utcMillisecond:ag,utcMilliseconds:og,timeMillisecond:ag,timeMilliseconds:og,utcSecond:dg,utcSeconds:pg,timeSecond:dg,timeSeconds:pg,timeMinute:mg,timeMinutes:gg,utcMinute:vg,utcMinutes:yg,timeHour:bg,timeHours:wg,utcHour:xg,utcHours:_g,timeDay:Mg,timeDays:Sg,utcDay:Ng,utcDays:Eg,unixDay:Ag,unixDays:Tg,timeWeek:kg,timeWeeks:Rg,timeSunday:kg,timeSundays:Rg,timeMonday:qg,timeMondays:Og,timeTuesday:Fg,timeTuesdays:Vg,timeWednesday:Dg,timeWednesdays:jg,timeThursday:zg,timeThursdays:Lg,timeFriday:Ig,timeFridays:Bg,timeSaturday:Pg,timeSaturdays:$g,utcWeek:Hg,utcWeeks:Zg,utcSunday:Hg,utcSundays:Zg,utcMonday:Yg,utcMondays:Jg,utcTuesday:Gg,utcTuesdays:tv,utcWednesday:Wg,utcWednesdays:nv,utcThursday:Xg,utcThursdays:ev,utcFriday:Qg,utcFridays:rv,utcSaturday:Kg,utcSaturdays:iv,timeMonth:av,timeMonths:ov,utcMonth:uv,utcMonths:sv,timeYear:cv,timeYears:lv,utcYear:fv,utcYears:hv,utcTicks:pv,utcTickInterval:mv,timeTicks:gv,timeTickInterval:vv,timeFormatDefaultLocale:Uy,get timeFormat(){return Mv},get timeParse(){return Sv},get utcFormat(){return Nv},get utcParse(){return Ev},timeFormatLocale:xv,isoFormat:Gy,isoParse:Xy,now:Ji,timer:ea,timerFlush:ra,timeout:ua,interval:function(t,n,e){var r=new na,i=n;return null==n?(r.restart(t,n,e),r):(r._restart=r.restart,r.restart=function(t,n,e){n=+n,e=null==e?Ji():+e,r._restart(function a(o){o+=i,r._restart(a,i+=n,e),t(o)},n,e)},r.restart(t,n,e),r)},transition:Ia,active:function(t,n){var e,r,i=t.__transition;if(i)for(r in n=null==n?null:n+"",i)if((e=i[r]).state>1&&e.name===n)return new za([[t]],po,n,+r);return null},interrupt:pa,zoom:function(){var t,n,e,r=U_,i=H_,a=X_,o=G_,u=W_,s=[0,Infinity],c=[[-Infinity,-Infinity],[Infinity,Infinity]],l=250,f=Fi,h=fn("start","zoom","end"),d=0,p=10;function m(t){t.property("__zoom",Y_).on("wheel.zoom",_,{passive:!1}).on("mousedown.zoom",M).on("dblclick.zoom",S).filter(u).on("touchstart.zoom",N).on("touchmove.zoom",E).on("touchend.zoom touchcancel.zoom",A).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function g(t,n){return(n=Math.max(s[0],Math.min(s[1],n)))===t.k?t:new V_(n,t.x,t.y)}function v(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new V_(t.k,r,i)}function y(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function b(t,n,e,r){t.on("start.zoom",function(){w(this,arguments).event(r).start()}).on("interrupt.zoom end.zoom",function(){w(this,arguments).event(r).end()}).tween("zoom",function(){var t=this,a=arguments,o=w(t,a).event(r),u=i.apply(t,a),s=null==e?y(u):"function"==typeof e?e.apply(t,a):e,c=Math.max(u[1][0]-u[0][0],u[1][1]-u[0][1]),l=t.__zoom,h="function"==typeof n?n.apply(t,a):n,d=f(l.invert(s).concat(c/l.k),h.invert(s).concat(c/h.k));return function(t){if(1===t)t=h;else{var n=d(t),e=c/n[2];t=new V_(e,s[0]-n[0]*e,s[1]-n[1]*e)}o.zoom(null,t)}})}function w(t,n,e){return!e&&t.__zooming||new x(t,n)}function x(t,n){this.that=t,this.args=n,this.active=0,this.sourceEvent=null,this.extent=i.apply(t,n),this.taps=0}function _(t,...n){if(r.apply(this,arguments)){var e=w(this,n).event(t),i=this.__zoom,u=Math.max(s[0],Math.min(s[1],i.k*Math.pow(2,o.apply(this,arguments)))),l=Fe(t);if(e.wheel)e.mouse[0][0]===l[0]&&e.mouse[0][1]===l[1]||(e.mouse[1]=i.invert(e.mouse[0]=l)),clearTimeout(e.wheel);else{if(i.k===u)return;e.mouse=[l,i.invert(l)],pa(this),e.start()}$_(t),e.wheel=setTimeout(function(){e.wheel=null,e.end()},150),e.zoom("mouse",a(v(g(i,u),e.mouse[0],e.mouse[1]),e.extent,c))}}function M(t,...n){if(!e&&r.apply(this,arguments)){var i=t.currentTarget,o=w(this,n,!0).event(t),u=Ae(t.view).on("mousemove.zoom",function(t){if($_(t),!o.moved){var n=t.clientX-l,e=t.clientY-f;o.moved=n*n+e*e>d}o.event(t).zoom("mouse",a(v(o.that.__zoom,o.mouse[0]=Fe(t,i),o.mouse[1]),o.extent,c))},!0).on("mouseup.zoom",function(t){u.on("mousemove.zoom mouseup.zoom",null),Oe(t.view,o.moved),$_(t),o.event(t).end()},!0),s=Fe(t,i),l=t.clientX,f=t.clientY;Re(t.view),B_(t),o.mouse=[s,this.__zoom.invert(s)],pa(this),o.start()}}function S(t,...n){if(r.apply(this,arguments)){var e=this.__zoom,o=Fe(t.changedTouches?t.changedTouches[0]:t,this),u=e.invert(o),s=a(v(g(e,e.k*(t.shiftKey?.5:2)),o,u),i.apply(this,n),c);$_(t),l>0?Ae(this).transition().duration(l).call(b,s,o,t):Ae(this).call(m.transform,s,o,t)}}function N(e,...i){if(r.apply(this,arguments)){var a,o,u,s,c=e.touches,l=c.length,f=w(this,i,e.changedTouches.length===l).event(e);for(B_(e),o=0;o<l;++o)s=[s=Fe(u=c[o],this),this.__zoom.invert(s),u.identifier],f.touch0?f.touch1||f.touch0[2]===s[2]||(f.touch1=s,f.taps=0):(f.touch0=s,a=!0,f.taps=1+!!t);t&&(t=clearTimeout(t)),a&&(f.taps<2&&(n=s[0],t=setTimeout(function(){t=null},500)),pa(this),f.start())}}function E(t,...n){if(this.__zooming){var e,r,i,o,u=w(this,n).event(t),s=t.changedTouches,l=s.length;for($_(t),e=0;e<l;++e)i=Fe(r=s[e],this),u.touch0&&u.touch0[2]===r.identifier?u.touch0[0]=i:u.touch1&&u.touch1[2]===r.identifier&&(u.touch1[0]=i);if(r=u.that.__zoom,u.touch1){var f=u.touch0[0],h=u.touch0[1],d=u.touch1[0],p=u.touch1[1],m=(m=d[0]-f[0])*m+(m=d[1]-f[1])*m,y=(y=p[0]-h[0])*y+(y=p[1]-h[1])*y;r=g(r,Math.sqrt(m/y)),i=[(f[0]+d[0])/2,(f[1]+d[1])/2],o=[(h[0]+p[0])/2,(h[1]+p[1])/2]}else{if(!u.touch0)return;i=u.touch0[0],o=u.touch0[1]}u.zoom("touch",a(v(r,i,o),u.extent,c))}}function A(t,...r){if(this.__zooming){var i,a,o=w(this,r).event(t),u=t.changedTouches,s=u.length;for(B_(t),e&&clearTimeout(e),e=setTimeout(function(){e=null},500),i=0;i<s;++i)a=u[i],o.touch0&&o.touch0[2]===a.identifier?delete o.touch0:o.touch1&&o.touch1[2]===a.identifier&&delete o.touch1;if(o.touch1&&!o.touch0&&(o.touch0=o.touch1,delete o.touch1),o.touch0)o.touch0[1]=this.__zoom.invert(o.touch0[0]);else if(o.end(),2===o.taps&&(a=Fe(a,this),Math.hypot(n[0]-a[0],n[1]-a[1])<p)){var c=Ae(this).on("dblclick.zoom");c&&c.apply(this,arguments)}}}return m.transform=function(t,n,e,r){var i=t.selection?t.selection():t;i.property("__zoom",Y_),t!==i?b(t,n,e,r):i.interrupt().each(function(){w(this,arguments).event(r).start().zoom(null,"function"==typeof n?n.apply(this,arguments):n).end()})},m.scaleBy=function(t,n,e,r){m.scaleTo(t,function(){return this.__zoom.k*("function"==typeof n?n.apply(this,arguments):n)},e,r)},m.scaleTo=function(t,n,e,r){m.transform(t,function(){var t=i.apply(this,arguments),r=this.__zoom,o=null==e?y(t):"function"==typeof e?e.apply(this,arguments):e,u=r.invert(o),s="function"==typeof n?n.apply(this,arguments):n;return a(v(g(r,s),o,u),t,c)},e,r)},m.translateBy=function(t,n,e,r){m.transform(t,function(){return a(this.__zoom.translate("function"==typeof n?n.apply(this,arguments):n,"function"==typeof e?e.apply(this,arguments):e),i.apply(this,arguments),c)},null,r)},m.translateTo=function(t,n,e,r,o){m.transform(t,function(){var t=i.apply(this,arguments),o=this.__zoom,u=null==r?y(t):"function"==typeof r?r.apply(this,arguments):r;return a(j_.translate(u[0],u[1]).scale(o.k).translate("function"==typeof n?-n.apply(this,arguments):-n,"function"==typeof e?-e.apply(this,arguments):-e),t,c)},r,o)},x.prototype={event:function(t){return t&&(this.sourceEvent=t),this},start:function(){return 1===++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(t,n){return this.mouse&&"mouse"!==t&&(this.mouse[1]=n.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=n.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=n.invert(this.touch1[0])),this.that.__zoom=n,this.emit("zoom"),this},end:function(){return 0===--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(t){var n=Ae(this.that).datum();h.call(t,this.that,new O_(t,{sourceEvent:this.sourceEvent,target:m,type:t,transform:this.that.__zoom,dispatch:h}),n)}},m.wheelDelta=function(t){return arguments.length?(o="function"==typeof t?t:R_(+t),m):o},m.filter=function(t){return arguments.length?(r="function"==typeof t?t:R_(!!t),m):r},m.touchable=function(t){return arguments.length?(u="function"==typeof t?t:R_(!!t),m):u},m.extent=function(t){return arguments.length?(i="function"==typeof t?t:R_([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),m):i},m.scaleExtent=function(t){return arguments.length?(s[0]=+t[0],s[1]=+t[1],m):[s[0],s[1]]},m.translateExtent=function(t){return arguments.length?(c[0][0]=+t[0][0],c[1][0]=+t[1][0],c[0][1]=+t[0][1],c[1][1]=+t[1][1],m):[[c[0][0],c[0][1]],[c[1][0],c[1][1]]]},m.constrain=function(t){return arguments.length?(a=t,m):a},m.duration=function(t){return arguments.length?(l=+t,m):l},m.interpolate=function(t){return arguments.length?(f=t,m):f},m.on=function(){var t=h.on.apply(h,arguments);return t===h?m:t},m.clickDistance=function(t){return arguments.length?(d=(t=+t)*t,m):Math.sqrt(d)},m.tapDistance=function(t){return arguments.length?(p=+t,m):p},m},zoomTransform:L_,zoomIdentity:j_,ZoomTransform:V_},K_=/*#__PURE__*/function(){function t(t){void 0===t&&(t="dataviz-container"),this.containerId=t,this.defaultWidth=800,this.defaultHeight=600,this.defaultMargin={top:40,right:40,bottom:60,left:60},this.colors=ob}var n=t.prototype;return n.createContainer=function(t,n){void 0===t&&(t=this.defaultWidth),void 0===n&&(n=this.defaultHeight);var e=Ae("#"+this.containerId);e.empty()&&(e=Ae("body").append("div").attr("id",this.containerId).style("margin","20px")),e.selectAll("*").remove();var r=e.append("svg").attr("width",t).attr("height",n).style("background","#fff").style("border","1px solid #ddd").style("border-radius","8px");return{container:e,svg:r}},n.histogram=function(t,n){void 0===n&&(n={});var e=n.title,r=void 0===e?"Histogram":e,i=n.xlabel,a=void 0===i?"Value":i,o=n.ylabel,u=void 0===o?"Frequency":o,s=n.bins,c=void 0===s?30:s,l=n.color,f=void 0===l?"#4299e1":l,h=n.width,d=void 0===h?this.defaultWidth:h,p=n.height,m=void 0===p?this.defaultHeight:p,g=this.createContainer(d,m).svg,v=this.defaultMargin,y=d-v.left-v.right,b=m-v.top-v.bottom,w=g.append("g").attr("transform","translate("+v.left+","+v.top+")"),x=Om().domain(Z(t)).range([0,y]),_=Ct().domain(x.domain()).thresholds(x.ticks(c))(t),M=Om().domain([0,kt(_,function(t){return t.length})]).range([b,0]);return w.selectAll("rect").data(_).join("rect").attr("x",function(t){return x(t.x0)+1}).attr("width",function(t){return Math.max(0,x(t.x1)-x(t.x0)-2)}).attr("y",function(t){return M(t.length)}).attr("height",function(t){return b-M(t.length)}).attr("fill",f).attr("opacity",.8).on("mouseover",function(){Ae(this).attr("opacity",1)}).on("mouseout",function(){Ae(this).attr("opacity",.8)}),w.append("g").attr("transform","translate(0,"+b+")").call(sn(x)).append("text").attr("x",y/2).attr("y",40).attr("fill","#000").attr("text-anchor","middle").text(a),w.append("g").call(cn(M)).append("text").attr("transform","rotate(-90)").attr("x",-b/2).attr("y",-40).attr("fill","#000").attr("text-anchor","middle").text(u),g.append("text").attr("x",d/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(r),this},n.boxplot=function(t,n){void 0===n&&(n={});var e=n.title,r=void 0===e?"Box Plot":e,i=n.xlabel,a=void 0===i?"Category":i,o=n.ylabel,u=void 0===o?"Value":o,s=n.labels,c=void 0===s?null:s,l=n.color,f=void 0===l?"#4299e1":l,h=n.width,d=void 0===h?this.defaultWidth:h,p=n.height,m=void 0===p?this.defaultHeight:p,g=this.createContainer(d,m).svg,v=this.defaultMargin,y=d-v.left-v.right,b=m-v.top-v.bottom,w=g.append("g").attr("transform","translate("+v.left+","+v.top+")"),x=Array.isArray(t[0])?t:[t],_=c||x.map(function(t,n){return"Group "+(n+1)}),M=x.map(function(t,n){var e=[].concat(t).sort(function(t,n){return t-n}),r=Rt(e,.25),i=Rt(e,.5),a=Rt(e,.75),o=a-r,u=Math.max(Ft(e),r-1.5*o),s=Math.min(kt(e),a+1.5*o),c=e.filter(function(t){return t<u||t>s});return{label:_[n],q1:r,median:i,q3:a,min:u,max:s,outliers:c}}),S=Sm().domain(_).range([0,y]).padding(.3),N=Om().domain([Ft(M,function(t){return t.min}),kt(M,function(t){return t.max})]).nice().range([b,0]);return M.forEach(function(t,n){var e=S(t.label)+S.bandwidth()/2,r=S.bandwidth();w.append("line").attr("x1",e).attr("x2",e).attr("y1",N(t.min)).attr("y2",N(t.max)).attr("stroke","#000").attr("stroke-width",1),w.append("rect").attr("x",S(t.label)).attr("y",N(t.q3)).attr("width",r).attr("height",N(t.q1)-N(t.q3)).attr("fill",f).attr("stroke","#000").attr("opacity",.7),w.append("line").attr("x1",S(t.label)).attr("x2",S(t.label)+r).attr("y1",N(t.median)).attr("y2",N(t.median)).attr("stroke","#000").attr("stroke-width",2),[t.min,t.max].forEach(function(t){w.append("line").attr("x1",e-r/4).attr("x2",e+r/4).attr("y1",N(t)).attr("y2",N(t)).attr("stroke","#000").attr("stroke-width",1)}),t.outliers.forEach(function(t){w.append("circle").attr("cx",e).attr("cy",N(t)).attr("r",3).attr("fill","red").attr("opacity",.6)})}),w.append("g").attr("transform","translate(0,"+b+")").call(sn(S)).append("text").attr("x",y/2).attr("y",40).attr("fill","#000").attr("text-anchor","middle").text(a),w.append("g").call(cn(N)).append("text").attr("transform","rotate(-90)").attr("x",-b/2).attr("y",-40).attr("fill","#000").attr("text-anchor","middle").text(u),g.append("text").attr("x",d/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(r),this},n.scatter=function(t,n,e){void 0===e&&(e={});var r=e.title,i=void 0===r?"Scatter Plot":r,a=e.xlabel,o=void 0===a?"X":a,u=e.ylabel,s=void 0===u?"Y":u,c=e.color,l=void 0===c?"#4299e1":c,f=e.size,h=void 0===f?5:f,d=e.labels,p=void 0===d?null:d,m=e.width,g=void 0===m?this.defaultWidth:m,v=e.height,y=void 0===v?this.defaultHeight:v,b=this.createContainer(g,y).svg,w=this.defaultMargin,x=g-w.left-w.right,_=y-w.top-w.bottom,M=b.append("g").attr("transform","translate("+w.left+","+w.top+")"),S=t.map(function(t,e){return{x:t,y:n[e],label:p?p[e]:null}}),N=Om().domain(Z(t)).nice().range([0,x]),E=Om().domain(Z(n)).nice().range([_,0]),A=Ae("body").append("div").style("position","absolute").style("background","rgba(0,0,0,0.8)").style("color","#fff").style("padding","8px").style("border-radius","4px").style("font-size","12px").style("pointer-events","none").style("opacity",0);return M.selectAll("circle").data(S).join("circle").attr("cx",function(t){return N(t.x)}).attr("cy",function(t){return E(t.y)}).attr("r",h).attr("fill",l).attr("opacity",.7).on("mouseover",function(t,n){Ae(this).attr("r",1.5*h).attr("opacity",1),A.style("opacity",1).html("X: "+n.x.toFixed(2)+"<br>Y: "+n.y.toFixed(2)+(n.label?"<br>"+n.label:"")).style("left",t.pageX+10+"px").style("top",t.pageY-10+"px")}).on("mouseout",function(){Ae(this).attr("r",h).attr("opacity",.7),A.style("opacity",0)}),M.append("g").attr("transform","translate(0,"+_+")").call(sn(N)).append("text").attr("x",x/2).attr("y",40).attr("fill","#000").attr("text-anchor","middle").text(o),M.append("g").call(cn(E)).append("text").attr("transform","rotate(-90)").attr("x",-_/2).attr("y",-40).attr("fill","#000").attr("text-anchor","middle").text(s),b.append("text").attr("x",g/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(i),this},n.line=function(t,n,e){void 0===e&&(e={});var r=e.title,i=void 0===r?"Line Chart":r,a=e.xlabel,o=void 0===a?"X":a,u=e.ylabel,s=void 0===u?"Y":u,c=e.color,l=void 0===c?"#4299e1":c,f=e.lineWidth,h=void 0===f?2:f,d=e.showPoints,p=void 0===d||d,m=e.width,g=void 0===m?this.defaultWidth:m,v=e.height,y=void 0===v?this.defaultHeight:v,b=this.createContainer(g,y).svg,w=this.defaultMargin,x=g-w.left-w.right,_=y-w.top-w.bottom,M=b.append("g").attr("transform","translate("+w.left+","+w.top+")"),S=t.map(function(t,e){return{x:t,y:n[e]}}),N=Om().domain(Z(t)).range([0,x]),E=Om().domain(Z(n)).nice().range([_,0]),A=rx().x(function(t){return N(t.x)}).y(function(t){return E(t.y)});return M.append("path").datum(S).attr("fill","none").attr("stroke",l).attr("stroke-width",h).attr("d",A),p&&M.selectAll("circle").data(S).join("circle").attr("cx",function(t){return N(t.x)}).attr("cy",function(t){return E(t.y)}).attr("r",4).attr("fill",l),M.append("g").attr("transform","translate(0,"+_+")").call(sn(N)).append("text").attr("x",x/2).attr("y",40).attr("fill","#000").attr("text-anchor","middle").text(o),M.append("g").call(cn(E)).append("text").attr("transform","rotate(-90)").attr("x",-_/2).attr("y",-40).attr("fill","#000").attr("text-anchor","middle").text(s),b.append("text").attr("x",g/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(i),this},n.bar=function(t,n,e){void 0===e&&(e={});var r=e.title,i=void 0===r?"Bar Chart":r,a=e.xlabel,o=void 0===a?"Category":a,u=e.ylabel,s=void 0===u?"Value":u,c=e.color,l=void 0===c?"#4299e1":c,f=e.horizontal,h=void 0!==f&&f,d=e.width,p=void 0===d?this.defaultWidth:d,m=e.height,g=void 0===m?this.defaultHeight:m,v=this.createContainer(p,g).svg,y=this.defaultMargin,b=p-y.left-y.right,w=g-y.top-y.bottom,x=v.append("g").attr("transform","translate("+y.left+","+y.top+")"),_=t.map(function(t,e){return{category:t,value:n[e]}});if(h){var M=Om().domain([0,kt(n)]).nice().range([0,b]),S=Sm().domain(t).range([0,w]).padding(.2);x.selectAll("rect").data(_).join("rect").attr("x",0).attr("y",function(t){return S(t.category)}).attr("width",function(t){return M(t.value)}).attr("height",S.bandwidth()).attr("fill",l).attr("opacity",.8).on("mouseover",function(){Ae(this).attr("opacity",1)}).on("mouseout",function(){Ae(this).attr("opacity",.8)}),x.append("g").attr("transform","translate(0,"+w+")").call(sn(M)),x.append("g").call(cn(S))}else{var N=Sm().domain(t).range([0,b]).padding(.2),E=Om().domain([0,kt(n)]).nice().range([w,0]);x.selectAll("rect").data(_).join("rect").attr("x",function(t){return N(t.category)}).attr("y",function(t){return E(t.value)}).attr("width",N.bandwidth()).attr("height",function(t){return w-E(t.value)}).attr("fill",l).attr("opacity",.8).on("mouseover",function(){Ae(this).attr("opacity",1)}).on("mouseout",function(){Ae(this).attr("opacity",.8)}),x.append("g").attr("transform","translate(0,"+w+")").call(sn(N)).selectAll("text").attr("transform","rotate(-45)").style("text-anchor","end"),x.append("g").call(cn(E))}return v.append("text").attr("x",p/2).attr("y",g-10).attr("text-anchor","middle").text(o),v.append("text").attr("transform","rotate(-90)").attr("x",-g/2).attr("y",15).attr("text-anchor","middle").text(s),v.append("text").attr("x",p/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(i),this},n.pie=function(t,n,e){void 0===e&&(e={});var r=e.title,i=void 0===r?"Pie Chart":r,a=e.width,o=void 0===a?this.defaultWidth:a,u=e.height,s=void 0===u?this.defaultHeight:u,c=e.showLabels,l=void 0===c||c,f=e.showPercentage,h=void 0===f||f,d=this.createContainer(o,s).svg,p=Math.min(o,s)/2-40,m=d.append("g").attr("transform","translate("+o/2+","+s/2+")"),g=t.map(function(t,e){return{label:t,value:n[e]}}),v=Gt(n),y=Mm().domain(t).range(this.colors),b=ux().value(function(t){return t.value}),w=Qw().innerRadius(0).outerRadius(p),x=Qw().innerRadius(.7*p).outerRadius(.7*p),_=m.selectAll("arc").data(b(g)).join("g").attr("class","arc");return _.append("path").attr("d",w).attr("fill",function(t){return y(t.data.label)}).attr("stroke","#fff").attr("stroke-width",2).attr("opacity",.8).on("mouseover",function(){Ae(this).attr("opacity",1)}).on("mouseout",function(){Ae(this).attr("opacity",.8)}),l&&_.append("text").attr("transform",function(t){return"translate("+x.centroid(t)+")"}).attr("text-anchor","middle").style("font-size","12px").style("font-weight","bold").style("fill","#fff").text(function(t){if(h){var n=(t.data.value/v*100).toFixed(1);return t.data.label+"\n"+n+"%"}return t.data.label}),d.append("text").attr("x",o/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(i),this},n.heatmap=function(t,n){void 0===n&&(n={});for(var e=n.title,r=void 0===e?"Heatmap":e,i=n.labels,a=void 0===i?null:i,o=n.colorScheme,u=void 0===o?"RdYlBu":o,s=n.showValues,c=void 0===s||s,l=n.width,f=void 0===l?this.defaultWidth:l,h=n.height,d=void 0===h?this.defaultHeight:h,p=this.createContainer(f,d).svg,m=f-80-40,g=d-80-80,v=p.append("g").attr("transform","translate(80,80)"),y=t.length,b=a||Array.from({length:y},function(t,n){return"Var"+(n+1)}),w=a||Array.from({length:y},function(t,n){return"Var"+(n+1)}),x=[],_=0;_<y;_++)for(var M=0;M<y;M++)x.push({row:_,col:M,value:t[_][M],rowLabel:b[_],colLabel:w[M]});var S=Sm().domain(w).range([0,m]).padding(.05),N=Sm().domain(b).range([0,g]).padding(.05),E=nb().domain([-1,1]).interpolator(Q_["interpolate"+u]);v.selectAll("rect").data(x).join("rect").attr("x",function(t){return S(t.colLabel)}).attr("y",function(t){return N(t.rowLabel)}).attr("width",S.bandwidth()).attr("height",N.bandwidth()).attr("fill",function(t){return E(t.value)}).attr("stroke","#fff").attr("stroke-width",1),c&&v.selectAll("text.value").data(x).join("text").attr("class","value").attr("x",function(t){return S(t.colLabel)+S.bandwidth()/2}).attr("y",function(t){return N(t.rowLabel)+N.bandwidth()/2}).attr("text-anchor","middle").attr("dominant-baseline","middle").style("font-size","10px").style("fill",function(t){return Math.abs(t.value)>.5?"#fff":"#000"}).text(function(t){return t.value.toFixed(2)}),v.append("g").attr("transform","translate(0,"+g+")").call(sn(S)).selectAll("text").attr("transform","rotate(-45)").style("text-anchor","end"),v.append("g").call(cn(N));var A=p.append("g").attr("transform","translate("+(f-40-200)+",40)"),T=Om().domain([-1,1]).range([0,200]),C=sn(T).ticks(5);return A.selectAll("rect").data($t(-1,1,.01)).join("rect").attr("x",function(t){return T(t)}).attr("y",0).attr("width",1).attr("height",20).attr("fill",function(t){return E(t)}),A.append("g").attr("transform","translate(0,20)").call(C),p.append("text").attr("x",f/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(r),this},n.violin=function(t,n){void 0===n&&(n={});var e=n.title,r=void 0===e?"Violin Plot":e,i=n.xlabel,a=void 0===i?"Category":i,o=n.ylabel,u=void 0===o?"Value":o,s=n.labels,c=void 0===s?null:s,l=n.color,f=void 0===l?"#4299e1":l,h=n.width,d=void 0===h?this.defaultWidth:h,p=n.height,m=void 0===p?this.defaultHeight:p,g=this.createContainer(d,m).svg,v=this.defaultMargin,y=d-v.left-v.right,b=m-v.top-v.bottom,w=g.append("g").attr("transform","translate("+v.left+","+v.top+")"),x=Array.isArray(t[0])?t:[t],_=c||x.map(function(t,n){return"Group "+(n+1)}),M=Sm().domain(_).range([0,y]).padding(.3),S=x.flat(),N=Om().domain(Z(S)).nice().range([b,0]);return x.forEach(function(t,n){var e=function(t,n){return void 0===n&&(n=.5),N.ticks(50).map(function(e){var r=jt(t,function(t){return Math.exp(-.5*Math.pow((t-e)/n,2))/(n*Math.sqrt(2*Math.PI))});return[e,r]})}(t),r=kt(e,function(t){return t[1]}),i=Om().domain([0,r]).range([0,M.bandwidth()/2]),a=ix().x0(function(t){return M(_[n])+M.bandwidth()/2-i(t[1])}).x1(function(t){return M(_[n])+M.bandwidth()/2+i(t[1])}).y(function(t){return N(t[0])}).curve(Jx);w.append("path").datum(e).attr("fill",f).attr("opacity",.6).attr("stroke","#000").attr("stroke-width",1).attr("d",a)}),w.append("g").attr("transform","translate(0,"+b+")").call(sn(M)).append("text").attr("x",y/2).attr("y",40).attr("fill","#000").attr("text-anchor","middle").text(a),w.append("g").call(cn(N)).append("text").attr("transform","rotate(-90)").attr("x",-b/2).attr("y",-40).attr("fill","#000").attr("text-anchor","middle").text(u),g.append("text").attr("x",d/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(r),this},n.qqplot=function(t,n){var e=this;void 0===n&&(n={});var r=n.title,i=void 0===r?"Q-Q Plot":r,a=n.xlabel,o=void 0===a?"Theoretical Quantiles":a,u=n.ylabel,s=void 0===u?"Sample Quantiles":u,c=n.color,l=void 0===c?"#4299e1":c,f=n.width,h=void 0===f?this.defaultWidth:f,d=n.height,p=void 0===d?this.defaultHeight:d,m=this.createContainer(h,p).svg,g=this.defaultMargin,v=h-g.left-g.right,y=p-g.top-g.bottom,b=m.append("g").attr("transform","translate("+g.left+","+g.top+")"),w=[].concat(t).sort(function(t,n){return t-n}),x=w.length,_=w.map(function(t,n){return e.invNormalCDF((n+.5)/x)}),M=_.map(function(t,n){return{x:t,y:w[n]}}),S=Om().domain(Z(_)).nice().range([0,v]),N=Om().domain(Z(w)).nice().range([y,0]),E=Math.max(S.domain()[0],N.domain()[0]),A=Math.min(S.domain()[1],N.domain()[1]);return b.append("line").attr("x1",S(E)).attr("y1",N(E)).attr("x2",S(A)).attr("y2",N(A)).attr("stroke","red").attr("stroke-width",2).attr("stroke-dasharray","5,5"),b.selectAll("circle").data(M).join("circle").attr("cx",function(t){return S(t.x)}).attr("cy",function(t){return N(t.y)}).attr("r",4).attr("fill",l).attr("opacity",.7),b.append("g").attr("transform","translate(0,"+y+")").call(sn(S)).append("text").attr("x",v/2).attr("y",40).attr("fill","#000").attr("text-anchor","middle").text(o),b.append("g").call(cn(N)).append("text").attr("transform","rotate(-90)").attr("x",-y/2).attr("y",-40).attr("fill","#000").attr("text-anchor","middle").text(s),m.append("text").attr("x",h/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(i),this},n.invNormalCDF=function(t){var n,e,r=-.00778489400243029,i=-.322396458041136,a=-2.40075827716184,o=-2.54973253934373,u=4.37466414146497,s=2.93816398269878,c=.00778469570904146,l=.32246712907004,f=2.445134137143,h=3.75440866190742;return t<.02425?(((((r*(n=Math.sqrt(-2*Math.log(t)))+i)*n+a)*n+o)*n+u)*n+s)/((((c*n+l)*n+f)*n+h)*n+1):t<=.97575?(((((-39.6968302866538*(e=(n=t-.5)*n)+220.946098424521)*e-275.928510446969)*e+138.357751867269)*e-30.6647980661472)*e+2.50662827745924)*n/(((((-54.4760987982241*e+161.585836858041)*e-155.698979859887)*e+66.8013118877197)*e-13.2806815528857)*e+1):-(((((r*(n=Math.sqrt(-2*Math.log(1-t)))+i)*n+a)*n+o)*n+u)*n+s)/((((c*n+l)*n+f)*n+h)*n+1)},n.density=function(t,n){void 0===n&&(n={});var e=n.title,r=void 0===e?"Density Plot":e,i=n.xlabel,a=void 0===i?"Value":i,o=n.ylabel,u=void 0===o?"Density":o,s=n.color,c=void 0===s?"#4299e1":s,l=n.bandwidth,f=void 0===l?null:l,h=n.width,d=void 0===h?this.defaultWidth:h,p=n.height,m=void 0===p?this.defaultHeight:p,g=this.createContainer(d,m).svg,v=this.defaultMargin,y=d-v.left-v.right,b=m-v.top-v.bottom,w=g.append("g").attr("transform","translate("+v.left+","+v.top+")"),x=f||1.06*K(t)*Math.pow(t.length,-.2),_=Z(t),M=_[1]-_[0],S=$t(_[0]-.1*M,_[1]+.1*M,M/200),N=S.map(function(n){var e=jt(t,function(t){return Math.exp(-.5*Math.pow((t-n)/x,2))/(x*Math.sqrt(2*Math.PI))});return{x:n,y:e}}),E=Om().domain([S[0],S[S.length-1]]).range([0,y]),A=Om().domain([0,kt(N,function(t){return t.y})]).nice().range([b,0]),T=ix().x(function(t){return E(t.x)}).y0(b).y1(function(t){return A(t.y)}).curve(Jx),C=rx().x(function(t){return E(t.x)}).y(function(t){return A(t.y)}).curve(Jx);return w.append("path").datum(N).attr("fill",c).attr("opacity",.3).attr("d",T),w.append("path").datum(N).attr("fill","none").attr("stroke",c).attr("stroke-width",2).attr("d",C),w.append("g").attr("transform","translate(0,"+b+")").call(sn(E)).append("text").attr("x",y/2).attr("y",40).attr("fill","#000").attr("text-anchor","middle").text(a),w.append("g").call(cn(A)).append("text").attr("transform","rotate(-90)").attr("x",-b/2).attr("y",-40).attr("fill","#000").attr("text-anchor","middle").text(u),g.append("text").attr("x",d/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(r),this},n.parallel=function(t,n,e){void 0===e&&(e={});var r=e.title,i=void 0===r?"Parallel Coordinates":r,a=e.colors,o=void 0===a?null:a,u=e.width,s=void 0===u?this.defaultWidth:u,c=e.height,l=void 0===c?this.defaultHeight:c,f=this.createContainer(s,l).svg,h=s-40-40,d=l-60-40,p=f.append("g").attr("transform","translate(40,60)"),m={};n.forEach(function(n){m[n]=Om().domain(Z(t,function(t){return t[n]})).range([d,0])});var g=Em().domain(n).range([0,h]),v=rx(),y=o?Mm().domain($t(t.length)).range(o):nb(Ew).domain([0,t.length]);return p.selectAll("path.line").data(t).join("path").attr("class","line").attr("d",function(t){return v(n.map(function(n){return[g(n),m[n](t[n])]}))}).attr("fill","none").attr("stroke",function(t,n){return y(n)}).attr("opacity",.3).attr("stroke-width",2).on("mouseover",function(){Ae(this).attr("opacity",1).attr("stroke-width",3)}).on("mouseout",function(){Ae(this).attr("opacity",.3).attr("stroke-width",2)}),n.forEach(function(t){p.append("g").attr("transform","translate("+g(t)+",0)").call(cn(m[t])).append("text").attr("y",-10).attr("text-anchor","middle").style("fill","#000").style("font-weight","bold").text(t)}),f.append("text").attr("x",s/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(i),this},n.pairplot=function(t,n,e){void 0===e&&(e={});var r=e.title,i=void 0===r?"Pair Plot":r,a=e.color,o=void 0===a?"#4299e1":a,u=e.size,s=void 0===u?3:u,c=e.width,l=void 0===c?900:c,f=e.height,h=void 0===f?900:f,d=this.createContainer(l,h).svg,p=n.length,m=(Math.min(l,h)-120)/p,g={};n.forEach(function(n){g[n]=Om().domain(Z(t,function(t){return t[n]})).range([0,m-20])});for(var v=0;v<p;v++)for(var y=function(){var e=n[b],r=n[v],i=d.append("g").attr("transform","translate("+(60+b*m)+","+(60+v*m)+")");if(v===b){var a=t.map(function(t){return t[e]}),u=Ct().domain(g[e].domain()).thresholds(20)(a),c=Om().domain([0,kt(u,function(t){return t.length})]).range([m-20,0]);i.selectAll("rect").data(u).join("rect").attr("x",function(t){return g[e](t.x0)}).attr("y",function(t){return c(t.length)}).attr("width",function(t){return g[e](t.x1)-g[e](t.x0)-1}).attr("height",function(t){return m-20-c(t.length)}).attr("fill",o).attr("opacity",.7)}else i.selectAll("circle").data(t).join("circle").attr("cx",function(t){return g[e](t[e])}).attr("cy",function(t){return g[r](t[r])}).attr("r",s).attr("fill",o).attr("opacity",.5);v===p-1&&i.append("g").attr("transform","translate(0,"+(m-20)+")").call(sn(g[e]).ticks(3)),0===b&&i.append("g").call(cn(g[r]).ticks(3)),v===p-1&&i.append("text").attr("x",(m-20)/2).attr("y",m-5).attr("text-anchor","middle").style("font-size","10px").text(e),0===b&&i.append("text").attr("transform","rotate(-90)").attr("x",-(m-20)/2).attr("y",-25).attr("text-anchor","middle").style("font-size","10px").text(r)},b=0;b<p;b++)y();return d.append("text").attr("x",l/2).attr("y",30).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(i),this},n.multiline=function(t,n){void 0===n&&(n={});var e=n.title,r=void 0===e?"Multi-Line Chart":e,i=n.xlabel,a=void 0===i?"X":i,o=n.ylabel,u=void 0===o?"Y":o,s=n.legend,c=void 0===s||s,l=n.width,f=void 0===l?this.defaultWidth:l,h=n.height,d=void 0===h?this.defaultHeight:h,p=this.createContainer(f,d).svg,m=this.defaultMargin,g=f-m.left-m.right,v=d-m.top-m.bottom,y=p.append("g").attr("transform","translate("+m.left+","+m.top+")"),b=t.flatMap(function(t){return t.data.map(function(t){return t.x})}),w=t.flatMap(function(t){return t.data.map(function(t){return t.y})}),x=Om().domain(Z(b)).range([0,g]),_=Om().domain(Z(w)).nice().range([v,0]),M=Mm().domain(t.map(function(t){return t.name})).range(this.colors),S=rx().x(function(t){return x(t.x)}).y(function(t){return _(t.y)});if(t.forEach(function(t){y.append("path").datum(t.data).attr("fill","none").attr("stroke",M(t.name)).attr("stroke-width",2).attr("d",S)}),y.append("g").attr("transform","translate(0,"+v+")").call(sn(x)).append("text").attr("x",g/2).attr("y",40).attr("fill","#000").attr("text-anchor","middle").text(a),y.append("g").call(cn(_)).append("text").attr("transform","rotate(-90)").attr("x",-v/2).attr("y",-40).attr("fill","#000").attr("text-anchor","middle").text(u),c){var N=p.append("g").attr("transform","translate("+(f-m.right-100)+","+m.top+")");t.forEach(function(t,n){var e=N.append("g").attr("transform","translate(0,"+25*n+")");e.append("line").attr("x1",0).attr("x2",30).attr("y1",10).attr("y2",10).attr("stroke",M(t.name)).attr("stroke-width",2),e.append("text").attr("x",35).attr("y",15).style("font-size","12px").text(t.name)})}return p.append("text").attr("x",f/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(r),this},t}(),Z_=/*#__PURE__*/function(){function t(){this.dataLoader=new a,this.validator=new o,this.utils=new u,this.centralTendency=new s,this.dispersion=new c,this.position=new l,this.shape=new f,this.hypothesisTesting=new h,this.confidenceIntervals=new d,this.normalityTests=new p,this.correlation=new m,this.regression=new g,this.reportGenerator=new v,this.patternDetector=new y,this.interpreter=new b,this.autoAnalyzer=new w(this),this.ml=new C,this.viz=new K_}var n=t.prototype;return n.loadCSV=function(t,n){void 0===n&&(n={});try{return Promise.resolve(this.dataLoader.loadCSV(t,n))}catch(t){return Promise.reject(t)}},n.loadJSON=function(t,n){void 0===n&&(n={});try{return Promise.resolve(this.dataLoader.loadJSON(t,n))}catch(t){return Promise.reject(t)}},n.cleanData=function(t){return this.dataLoader.cleanData(t)},n.validateData=function(t){return this.validator.validateData(t)},n.getDataInfo=function(t){return this.dataLoader.getDataInfo(t)},n.mean=function(t){return this.centralTendency.mean(t)},n.median=function(t){return this.centralTendency.median(t)},n.mode=function(t){return this.centralTendency.mode(t)},n.geometricMean=function(t){return this.centralTendency.geometricMean(t)},n.harmonicMean=function(t){return this.centralTendency.harmonicMean(t)},n.trimmedMean=function(t,n){return this.centralTendency.trimmedMean(t,n)},n.variance=function(t){return this.dispersion.variance(t)},n.standardDeviation=function(t){return this.dispersion.standardDeviation(t)},n.range=function(t){return this.dispersion.range(t)},n.interquartileRange=function(t){return this.dispersion.interquartileRange(t)},n.coefficientOfVariation=function(t){return this.dispersion.coefficientOfVariation(t)},n.meanAbsoluteDeviation=function(t){return this.dispersion.meanAbsoluteDeviation(t)},n.quantile=function(t,n){return this.position.quantile(t,n)},n.percentile=function(t,n){return this.position.percentile(t,n)},n.quartiles=function(t){return this.position.quartiles(t)},n.quintiles=function(t){return this.position.quintiles(t)},n.deciles=function(t){return this.position.deciles(t)},n.percentileRank=function(t,n){return this.position.percentileRank(t,n)},n.zScore=function(t,n){return this.position.zScore(t,n)},n.boxplotStats=function(t){return this.position.boxplotStats(t)},n.fiveNumberSummary=function(t){return this.position.fiveNumberSummary(t)},n.rank=function(t,n){return void 0===n&&(n="average"),this.position.rank(t,n)},n.normalizedRank=function(t){return this.position.normalizedRank(t)},n.standardizedValues=function(t){return this.position.standardizedValues(t)},n.skewness=function(t){return this.shape.skewness(t)},n.kurtosis=function(t){return this.shape.kurtosis(t)},n.isNormalDistribution=function(t){return this.shape.isNormalDistribution(t)},n.correlationPearson=function(t,n){return this.correlation.pearson(t,n)},n.correlationSpearman=function(t,n){return this.correlation.spearman(t,n)},n.correlationMatrix=function(t){return this.correlation.matrix(t)},n.covariance=function(t,n){return this.correlation.covariance(t,n)},n.tTest=function(t,n,e){return void 0===e&&(e="two-sample"),this.hypothesisTesting.tTest(t,n,e)},n.zTest=function(t,n,e){return this.hypothesisTesting.zTest(t,n,e)},n.anovaTest=function(t){return this.hypothesisTesting.anovaTest(t)},n.chiSquareTest=function(t,n){return this.hypothesisTesting.chiSquareTest(t,n)},n.confidenceInterval=function(t,n){return void 0===n&&(n=.95),this.confidenceIntervals.mean(t,n)},n.shapiroWilkTest=function(t){return this.normalityTests.shapiroWilk(t)},n.linearRegression=function(t,n){return this.regression.linear(t,n)},n.detectOutliers=function(t,n){return void 0===n&&(n="iqr"),this.utils.detectOutliers(t,n)},n.frequencyTable=function(t){return this.utils.frequencyTable(t)},n.groupBy=function(t,n,e){return this.utils.groupBy(t,n,e)},n.sample=function(t,n,e){return void 0===e&&(e="random"),this.utils.sample(t,n,e)},n.generateSummaryReport=function(t){return this.reportGenerator.summary(t)},n.identifyPatterns=function(t){return this.patternDetector.analyze(t)},n.interpretResults=function(t){return this.interpreter.interpret(t)},n.autoAnalyze=function(t,n){return void 0===n&&(n={}),this.autoAnalyzer.autoAnalyze(t,n)},n.autoAnalyzeFromFile=function(t,n,e){void 0===n&&(n={}),void 0===e&&(e={});try{var r,i=function(t){return a.autoAnalyze(r,e)},a=this,o=t.toLowerCase(),u=o.endsWith(".csv")?Promise.resolve(a.loadCSV(t,n)).then(function(t){r=t}):function(){if(o.endsWith(".json"))return Promise.resolve(a.loadJSON(t,n)).then(function(t){r=t});throw new Error("Formato de arquivo nĆ£o suportado. Use CSV ou JSON.")}();return Promise.resolve(u&&u.then?u.then(i):i())}catch(t){return Promise.reject(t)}},n.quickAnalysis=function(t,n){void 0===n&&(n={});try{return Promise.resolve(this.autoAnalyzeFromFile(t,{},n)).then(function(t){return console.log("\n"+"=".repeat(60)),console.log("š AUTO REPORT"),console.log("=".repeat(60)),console.log("\nš EXECUTIVE RESUME:"),console.log("⢠Total insights: "+t.summary.totalInsights),console.log("⢠Priority Insights: "+t.summary.highPriorityInsights),console.log("\nš MAIN INSIGHTS:"),t.summary.keyFindings.forEach(function(t,n){console.log(n+1+". "+t.title),console.log(" "+t.description)}),console.log("\nš” RECOMMENDATIONS:"),t.summary.recommendations.forEach(function(t,n){console.log(n+1+". "+t)}),console.log("\n"+"=".repeat(60)),t})}catch(t){return Promise.reject(t)}},n.createLinearRegression=function(t){return this.ml.createLinearRegression(t)},n.createLogisticRegression=function(t){return this.ml.createLogisticRegression(t)},n.createKNN=function(t){return this.ml.createKNN(t)},n.createDecisionTree=function(t){return this.ml.createDecisionTree(t)},n.createRandomForest=function(t){return this.ml.createRandomForest(t)},n.createNaiveBayes=function(t){return this.ml.createNaiveBayes(t)},n.createSVM=function(t){return this.ml.createSVM(t)},n.trainTestSplit=function(t,n,e,r){return void 0===e&&(e=.2),void 0===r&&(r=!0),this.ml.trainTestSplit(t,n,e,r)},n.crossValidate=function(t,n,e,r,i){return void 0===r&&(r=5),void 0===i&&(i="classification"),this.ml.crossValidate(t,n,e,r,i)},n.compareModels=function(t,n,e,r){return void 0===r&&(r="classification"),this.ml.compareModels(t,n,e,r)},n.quickTrain=function(t,n,e,r){return void 0===r&&(r={}),this.ml.quickTrain(t,n,e,r)},n.polynomialFeatures=function(t,n){return void 0===n&&(n=2),this.ml.polynomialFeatures(t,n)},n.standardScaler=function(t){return this.ml.standardScaler(t)},n.minMaxScaler=function(t,n){return void 0===n&&(n=[0,1]),this.ml.minMaxScaler(t,n)},n.rocCurve=function(t,n){return this.ml.rocCurve(t,n)},n.precisionRecallCurve=function(t,n){return this.ml.precisionRecallCurve(t,n)},n.plotHistogram=function(t,n){return this.viz.histogram(t,n)},n.plotBoxplot=function(t,n){return this.viz.boxplot(t,n)},n.plotScatter=function(t,n,e){return this.viz.scatter(t,n,e)},n.plotLine=function(t,n,e){return this.viz.line(t,n,e)},n.plotBar=function(t,n,e){return this.viz.bar(t,n,e)},n.plotPie=function(t,n,e){return this.viz.pie(t,n,e)},n.plotHeatmap=function(t,n){return this.viz.heatmap(t,n)},n.plotViolin=function(t,n){return this.viz.violin(t,n)},n.plotDensity=function(t,n){return this.viz.density(t,n)},n.plotQQ=function(t,n){return this.viz.qqplot(t,n)},n.plotParallel=function(t,n,e){return this.viz.parallel(t,n,e)},n.plotPairplot=function(t,n,e){return this.viz.pairplot(t,n,e)},n.plotMultiline=function(t,n){return this.viz.multiline(t,n)},n.plotCorrelationMatrix=function(t,n){var r=this;void 0===n&&(n={});for(var i=Object.keys(t[0]).filter(function(n){return"number"==typeof t[0][n]}),a=i.length,o=Array(a).fill(0).map(function(){return Array(a).fill(0)}),u=function(n){for(var e=function(e){var a=t.map(function(t){return t[i[n]]}),u=t.map(function(t){return t[i[e]]});o[n][e]=r.correlationPearson(a,u)},u=0;u<a;u++)e(u)},s=0;s<a;s++)u(s);return this.viz.heatmap(o,e({title:"Correlation Matrix",labels:i},n))},n.plotDistribution=function(t,n,r){void 0===r&&(r={});var i=t.map(function(t){return t[n]}).filter(function(t){return!isNaN(t)});return this.viz.histogram(i,e({title:"Distribution of "+n,xlabel:n,ylabel:"Frequency"},r))},n.plotMultipleDistributions=function(t,n,r){void 0===r&&(r={});var i=n.map(function(n){return t.map(function(t){return t[n]}).filter(function(t){return!isNaN(t)})});return this.viz.boxplot(i,e({title:"Distribution Comparison",labels:n},r))},t}();return Z_});
|
1
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t||self).Datly=e()}(this,function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function e(e,n){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,n){if(e){if("string"==typeof e)return t(e,n);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){r&&(e=r);var i=0;return function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function n(){return n=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)({}).hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},n.apply(null,arguments)}function r(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,i(t,e)}function i(t,e){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},i(t,e)}function a(t,e){try{var n=t()}catch(t){return e(t)}return n&&n.then?n.then(void 0,e):n}var o=function(){try{return s?u?Promise.resolve(u):(l||(l=import("fs").then(function(t){return u=t.default||t}).catch(function(){return null})),Promise.resolve(l)):Promise.resolve(null)}catch(t){return Promise.reject(t)}},s="undefined"!=typeof process&&null!=process.versions&&null!=process.versions.node,u=null,l=null,c=/*#__PURE__*/function(){function t(){}var e=t.prototype;return e.loadCSV=function(t,e){void 0===e&&(e={});try{var r=this,i=n({},{delimiter:",",header:!0,skipEmptyLines:!0,encoding:"utf8"},e);return Promise.resolve(a(function(){function e(){function e(){function e(t){if(!n)throw new Error("No file system available. Use fetch, fs module, or pass CSV text directly to parseCSV()");return r.parseCSV(n,i)}var a=function(){if(!n&&"undefined"!=typeof fetch)return Promise.resolve(fetch(t)).then(function(t){if(!t.ok)throw new Error("HTTP error! status: "+t.status);return Promise.resolve(t.text()).then(function(t){n=t})})}();return a&&a.then?a.then(e):e()}var a=function(){if(!n&&"undefined"!=typeof window&&window.fs){var e=function(t){n=t};return window.fs.readFileSync?e(window.fs.readFileSync(t,{encoding:i.encoding})):Promise.resolve(window.fs.readFile(t,{encoding:i.encoding})).then(e)}}();return a&&a.then?a.then(e):e()}var n,a=function(){if(s)return Promise.resolve(o()).then(function(e){e&&(n=e.readFileSync(t,{encoding:i.encoding}))})}();return a&&a.then?a.then(e):e()},function(t){throw new Error("Failed to load CSV: "+t.message)}))}catch(t){return Promise.reject(t)}},e.loadJSON=function(t,e){void 0===e&&(e={});try{var r=this,i=n({},{validateTypes:!0,autoInferHeaders:!0},e);return Promise.resolve(a(function(){function e(t){return r.parseJSON(n,i)}var n,a=function(){if("string"==typeof t&&!t.trim().startsWith("{")&&!t.trim().startsWith("[")){var e,r=function(){function r(){function r(t){if(!e)throw new Error("No file system available");n=JSON.parse(e)}var i=function(){if(!e&&"undefined"!=typeof fetch)return Promise.resolve(fetch(t)).then(function(t){if(!t.ok)throw new Error("HTTP error! status: "+t.status);return Promise.resolve(t.text()).then(function(t){e=t})})}();return i&&i.then?i.then(r):r()}var i=function(){if(!e&&"undefined"!=typeof window&&window.fs){var n=function(t){e=t};return window.fs.readFileSync?n(window.fs.readFileSync(t,{encoding:"utf8"})):Promise.resolve(window.fs.readFile(t,{encoding:"utf8"})).then(n)}}();return i&&i.then?i.then(r):r()},i=function(){if(s)return Promise.resolve(o()).then(function(n){n&&(e=n.readFileSync(t,{encoding:"utf8"}))})}();return i&&i.then?i.then(r):r()}if("string"==typeof t)n=JSON.parse(t);else{if("object"!=typeof t)throw new Error("Invalid JSON input: must be string, file path, or object");n=t}}();return a&&a.then?a.then(e):e()},function(t){throw new Error("Failed to load JSON: "+t.message)}))}catch(t){return Promise.reject(t)}},e.parseJSON=function(t,e){if(!t)throw new Error("JSON data is empty or null");if(Array.isArray(t))return this.parseJSONArray(t,e);if(t.headers&&t.data)return this.parseStructuredJSON(t,e);if("object"==typeof t)return this.parseJSONObject(t,e);throw new Error("Unsupported JSON format")},e.parseJSONArray=function(t,e){var n=this;if(0===t.length)throw new Error("JSON array is empty");var r,i=t[0];if("object"!=typeof i||null===i)throw new Error("JSON array must contain objects");if(e.autoInferHeaders){var a=new Set;t.forEach(function(t){"object"==typeof t&&null!==t&&Object.keys(t).forEach(function(t){return a.add(t)})}),r=Array.from(a)}else r=Object.keys(i);var o=t.map(function(t,i){if("object"!=typeof t||null===t)return console.warn("Row "+i+" is not an object, skipping"),null;var a={};return r.forEach(function(r){var i=t[r];e.validateTypes&&(i=n.inferType(i)),a[r]=i}),a}).filter(function(t){return null!==t});return{headers:r,data:o,length:o.length,columns:r.length,source:"json_array"}},e.parseStructuredJSON=function(t,e){var n=this,r=t.headers,i=t.data;if(!Array.isArray(r))throw new Error("Headers must be an array");if(!Array.isArray(i))throw new Error("Data must be an array");if(0===r.length)throw new Error("Headers array is empty");var a=i.map(function(t,i){if(Array.isArray(t)){var a={};return r.forEach(function(r,i){var o=i<t.length?t[i]:null;e.validateTypes&&(o=n.inferType(o)),a[r]=o}),a}if("object"==typeof t&&null!==t){var o={};return r.forEach(function(r){var i=t[r];e.validateTypes&&(i=n.inferType(i)),o[r]=i}),o}return console.warn("Row "+i+" has invalid format, skipping"),null}).filter(function(t){return null!==t});return{headers:r,data:a,length:a.length,columns:r.length,source:"structured_json"}},e.parseJSONObject=function(t,e){var n=this,r=Object.entries(t);if(0===r.length)throw new Error("JSON object is empty");var i=r.map(function(t){var r=t[1];return{key:t[0],value:e.validateTypes?n.inferType(r):r}});return{headers:["key","value"],data:i,length:i.length,columns:2,source:"json_object"}},e.parseCSV=function(t,e){var n=this,r=t.split("\n").filter(function(t){return!e.skipEmptyLines||""!==t.trim()});if(0===r.length)throw new Error("CSV file is empty");for(var i=e.header?r[0].split(e.delimiter).map(function(t){return t.trim().replace(/['"]/g,"")}):Array.from({length:r[0].split(e.delimiter).length},function(t,e){return"col_"+e}),a=[],o=function(){var t=r[s].split(e.delimiter);if(t.length===i.length){var o={};i.forEach(function(e,r){var i=t[r].trim().replace(/['"]/g,"");o[e]=n.inferType(i)}),a.push(o)}},s=e.header?1:0;s<r.length;s++)o();return{headers:i,data:a,length:a.length,columns:i.length}},e.inferType=function(t){return""===t||"null"===t||"NULL"===t||"NaN"===t?null:"true"===t||"TRUE"===t||"false"!==t&&"FALSE"!==t&&(/^-?\d+$/.test(t)?parseInt(t,10):/^-?\d*\.\d+$/.test(t)?parseFloat(t):t)},e.cleanData=function(t){var e=n({},t,{data:t.data.filter(function(t){return Object.values(t).some(function(t){return null!=t})})});return e.length=e.data.length,e},e.getDataInfo=function(t){var e={rows:t.length,columns:t.columns,headers:t.headers,types:{},nullCounts:{},uniqueCounts:{}};return t.headers.forEach(function(n){var r=t.data.map(function(t){return t[n]}),i=r.filter(function(t){return null!=t}),a=[].concat(new Set(i.map(function(t){return typeof t})));e.types[n]=1===a.length?a[0]:"mixed",e.nullCounts[n]=r.length-i.length,e.uniqueCounts[n]=new Set(i).size}),e},e.getColumn=function(t,e){if(!t.headers.includes(e))throw new Error("Column '"+e+"' not found");return t.data.map(function(t){return t[e]}).filter(function(t){return null!=t&&!isNaN(t)})},e.getColumns=function(t,e){var n=this,r={};return e.forEach(function(e){r[e]=n.getColumn(t,e)}),r},e.filterRows=function(t,e){return n({},t,{data:t.data.filter(e),length:t.data.filter(e).length})},e.sortBy=function(t,e,r){return void 0===r&&(r="asc"),n({},t,{data:[].concat(t.data).sort(function(t,n){var i=t[e],a=n[e];return null==i?1:null==a?-1:"string"==typeof i&&"string"==typeof a?"asc"===r?i.localeCompare(a):a.localeCompare(i):"asc"===r?i-a:a-i})})},t}(),f=/*#__PURE__*/function(){function t(){}var e=t.prototype;return e.validateData=function(t){var e=[],n=[];return t&&"object"==typeof t?(t.data&&Array.isArray(t.data)||e.push("Dataset must contain a data array"),t.headers&&Array.isArray(t.headers)||e.push("Dataset must contain a headers array"),t.data&&0===t.data.length&&n.push("Dataset is empty"),t.data&&t.headers&&(new Set(t.headers).size!==t.headers.length&&e.push("Duplicate column headers found"),t.data.forEach(function(e,r){var i=Object.keys(e),a=t.headers.filter(function(t){return!i.includes(t)}),o=i.filter(function(e){return!t.headers.includes(e)});a.length>0&&n.push("Row "+r+": Missing columns: "+a.join(", ")),o.length>0&&n.push("Row "+r+": Extra columns: "+o.join(", "))})),{valid:0===e.length,errors:e,warnings:n}):(e.push("Dataset must be an object"),{valid:!1,errors:e,warnings:n})},e.validateNumericColumn=function(t){if(!Array.isArray(t))throw new Error("Column must be an array");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("Column contains no valid numeric values");return{valid:!0,validCount:e.length,invalidCount:t.length-e.length,cleanData:e}},e.validateSampleSize=function(t,e){if(void 0===e&&(e=2),!Array.isArray(t))throw new Error("Sample must be an array");if(t.length<e)throw new Error("Sample size ("+t.length+") must be at least "+e);return!0},e.validateConfidenceLevel=function(t){if("number"!=typeof t||t<=0||t>=1)throw new Error("Confidence level must be a number between 0 and 1");return!0},e.validateCorrelationInputs=function(t,e){if(this.validateNumericColumn(t),this.validateNumericColumn(e),t.length!==e.length)throw new Error("Columns must have the same length");if(t.length<3)throw new Error("Need at least 3 paired observations for correlation");return!0},e.validateRegressionInputs=function(t,e){if(this.validateNumericColumn(t),this.validateNumericColumn(e),t.length!==e.length)throw new Error("X and Y arrays must have the same length");if(t.length<3)throw new Error("Need at least 3 data points for regression");if(0===this.calculateVariance(t))throw new Error("X values must have non-zero variance");return!0},e.calculateVariance=function(t){var e=t.reduce(function(t,e){return t+e},0)/t.length;return t.reduce(function(t,n){return t+Math.pow(n-e,2)},0)/(t.length-1)},e.validateGroupsForANOVA=function(t){var e=this;if(!Array.isArray(t)||t.length<2)throw new Error("ANOVA requires at least 2 groups");return t.forEach(function(t,n){if(!Array.isArray(t))throw new Error("Group "+n+" must be an array");e.validateSampleSize(t,2),e.validateNumericColumn(t)}),!0},e.validateContingencyTable=function(t,e){if(!Array.isArray(t)||!Array.isArray(e))throw new Error("Both columns must be arrays");if(t.length!==e.length)throw new Error("Columns must have the same length");if(t.length<5)throw new Error("Need at least 5 observations for chi-square test");return!0},e.isInteger=function(t){return"number"==typeof t&&Number.isInteger(t)},e.isPositive=function(t){return"number"==typeof t&&t>0},e.isInRange=function(t,e,n){return"number"==typeof t&&t>=e&&t<=n},e.hasMinimumObservations=function(t,e){return Array.isArray(t)&&t.length>=e},e.checkForConstantValues=function(t){return 1===new Set(t).size},e.validateHypothesisTestInputs=function(t,e,n){if(this.validateSampleSize(t,2),("two-sample"===n||"paired"===n)&&(this.validateSampleSize(e,2),"paired"===n&&t.length!==e.length))throw new Error("Paired samples must have the same length");return this.validateNumericColumn(t),e&&this.validateNumericColumn(e),!0},t}(),h=/*#__PURE__*/function(){function t(){}var e=t.prototype;return e.detectOutliers=function(t,e){void 0===e&&(e="iqr");var n=[].concat(t).sort(function(t,e){return t-e}),r=[],i=[];switch(e){case"iqr":var a=this.quantile(n,.25),o=this.quantile(n,.75),s=o-a,u=a-1.5*s,l=o+1.5*s;t.forEach(function(t,e){(t<u||t>l)&&(r.push(t),i.push(e))});break;case"zscore":var c=this.mean(t),f=this.standardDeviation(t);t.forEach(function(t,e){Math.abs((t-c)/f)>3&&(r.push(t),i.push(e))});break;case"modified_zscore":var h=this.median(t),d=t.map(function(t){return Math.abs(t-h)}),p=this.median(d);t.forEach(function(t,e){Math.abs(.6745*(t-h)/p)>3.5&&(r.push(t),i.push(e))});break;default:throw new Error("Unknown outlier detection method: "+e)}return{outliers:r,indices:i,count:r.length,percentage:r.length/t.length*100}},e.frequencyTable=function(t){var e={},n=t.length;return t.forEach(function(t){var n=null==t?"null":String(t);e[n]=(e[n]||0)+1}),Object.entries(e).map(function(t){var e=t[0],r=t[1];return{value:"null"===e?null:e,frequency:r,relativeFrequency:r/n,percentage:r/n*100}}).sort(function(t,e){return e.frequency-t.frequency})},e.groupBy=function(t,e,n){var r=this,i={};t.data.forEach(function(t){var n=t[e];i[n]||(i[n]=[]),i[n].push(t)});var a={};return Object.entries(i).forEach(function(t){var e=t[0],i=t[1];a[e]={count:i.length,data:i},n&&"object"==typeof n&&Object.entries(n).forEach(function(t){var n=t[0],o=t[1],s=i.map(function(t){return t[n]}).filter(function(t){return"number"==typeof t&&!isNaN(t)});s.length>0&&(a[e][o+"_"+n]=r.applyAggregation(s,o))})}),a},e.applyAggregation=function(t,e){switch(e){case"mean":return this.mean(t);case"median":return this.median(t);case"sum":return t.reduce(function(t,e){return t+e},0);case"min":return Math.min.apply(Math,t);case"max":return Math.max.apply(Math,t);case"std":return this.standardDeviation(t);case"var":return this.variance(t);case"count":return t.length;default:throw new Error("Unknown aggregation function: "+e)}},e.sample=function(t,e,r){if(void 0===r&&(r="random"),e>=t.length)return n({},t);var i;switch(r){case"random":i=this.randomSample(t.length,e).map(function(e){return t.data[e]});break;case"systematic":var a=Math.floor(t.length/e);i=[];for(var o=0;o<e;o++)i.push(t.data[o*a]);break;case"first":i=t.data.slice(0,e);break;case"last":i=t.data.slice(-e);break;default:throw new Error("Unknown sampling method: "+r)}return n({},t,{data:i,length:i.length})},e.randomSample=function(t,e){for(var n=Array.from({length:t},function(t,e){return e}),r=[],i=0;i<e;i++){var a=Math.floor(Math.random()*n.length);r.push(n.splice(a,1)[0])}return r},e.bootstrap=function(t,e,n){void 0===n&&(n=1e3);for(var r=[],i=0;i<n;i++){for(var a=[],o=0;o<t.length;o++){var s=Math.floor(Math.random()*t.length);a.push(t[s])}var u=this.applyStatistic(a,e);r.push(u)}return{bootstrapStats:r.sort(function(t,e){return t-e}),mean:this.mean(r),standardError:this.standardDeviation(r),confidenceInterval:{lower:this.quantile(r,.025),upper:this.quantile(r,.975)}}},e.applyStatistic=function(t,e){switch(e){case"mean":return this.mean(t);case"median":return this.median(t);case"std":return this.standardDeviation(t);case"var":return this.variance(t);default:if("function"==typeof e)return e(t);throw new Error("Unknown statistic: "+e)}},e.contingencyTable=function(t,e){var n=[].concat(new Set(t)),r=[].concat(new Set(e)),i={},a={row:{},col:{},grand:0};n.forEach(function(t){i[t]={},a.row[t]=0}),r.forEach(function(t){a.col[t]=0});for(var o=0;o<t.length;o++){var s=t[o],u=e[o];i[s][u]||(i[s][u]=0),i[s][u]++,a.row[s]++,a.col[u]++,a.grand++}return n.forEach(function(t){r.forEach(function(e){i[t][e]||(i[t][e]=0)})}),{table:i,totals:a,rows:n,columns:r}},e.mean=function(t){return t.reduce(function(t,e){return t+e},0)/t.length},e.median=function(t){var e=[].concat(t).sort(function(t,e){return t-e}),n=Math.floor(e.length/2);return e.length%2==0?(e[n-1]+e[n])/2:e[n]},e.quantile=function(t,e){var n=[].concat(t).sort(function(t,e){return t-e}),r=(n.length-1)*e,i=Math.floor(r),a=Math.ceil(r),o=r%1;return i===a?n[i]:n[i]*(1-o)+n[a]*o},e.standardDeviation=function(t){return Math.sqrt(this.variance(t))},e.variance=function(t){var e=this.mean(t);return t.reduce(function(t,n){return t+Math.pow(n-e,2)},0)/(t.length-1)},e.round=function(t,e){return void 0===e&&(e=4),Math.round(t*Math.pow(10,e))/Math.pow(10,e)},e.formatNumber=function(t,e){return void 0===e&&(e=4),"number"!=typeof t?t:this.round(t,e)},t}(),d=/*#__PURE__*/function(){function t(){}var e=t.prototype;return e.mean=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");return e.reduce(function(t,e){return t+e},0)/e.length},e.median=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");var n=e.sort(function(t,e){return t-e}),r=Math.floor(n.length/2);return n.length%2==0?(n[r-1]+n[r])/2:n[r]},e.mode=function(t){var e=this;if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n={},r=0;t.forEach(function(t){var e=null==t?"null":String(t);n[e]=(n[e]||0)+1,r=Math.max(r,n[e])});var i=Object.entries(n).filter(function(t){return t[1]===r}).map(function(t){var n=t[0];return"null"===n?null:e.parseValue(n)});return{values:i,frequency:r,isMultimodal:i.length>1,isUniform:1===r&&Object.keys(n).length===t.length}},e.parseValue=function(t){return/^-?\d+$/.test(t)?parseInt(t,10):/^-?\d*\.\d+$/.test(t)?parseFloat(t):"true"===t||"false"!==t&&t},e.geometricMean=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)&&t>0});if(0===e.length)throw new Error("Geometric mean requires positive numeric values");var n=e.reduce(function(t,e){return t+Math.log(e)},0);return Math.exp(n/e.length)},e.harmonicMean=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)&&t>0});if(0===e.length)throw new Error("Harmonic mean requires positive numeric values");var n=e.reduce(function(t,e){return t+1/e},0);return e.length/n},e.trimmedMean=function(t,e){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");if("number"!=typeof e||e<0||e>=50)throw new Error("Percentage must be between 0 and 50");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");var r=n.sort(function(t,e){return t-e}),i=Math.floor(e/100*r.length),a=r.slice(i,r.length-i);if(0===a.length)throw new Error("Too much trimming - no values remain");return a.reduce(function(t,e){return t+e},0)/a.length},e.quadraticMean=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");var n=e.reduce(function(t,e){return t+e*e},0);return Math.sqrt(n/e.length)},e.weightedMean=function(t,e){if(!Array.isArray(t)||!Array.isArray(e))throw new Error("Values and weights must be arrays");if(t.length!==e.length)throw new Error("Values and weights must have the same length");if(0===t.length)throw new Error("Arrays must not be empty");for(var n=[],r=0;r<t.length;r++)"number"==typeof t[r]&&"number"==typeof e[r]&&!isNaN(t[r])&&!isNaN(e[r])&&isFinite(t[r])&&isFinite(e[r])&&e[r]>=0&&n.push({value:t[r],weight:e[r]});if(0===n.length)throw new Error("No valid value-weight pairs found");var i=n.reduce(function(t,e){return t+e.weight},0);if(0===i)throw new Error("Total weight cannot be zero");return n.reduce(function(t,e){return t+e.value*e.weight},0)/i},e.midrange=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");return(Math.min.apply(Math,e)+Math.max.apply(Math,e))/2},t}(),p=/*#__PURE__*/function(){function t(){}var e=t.prototype;return e.variance=function(t,e){if(void 0===e&&(e=!0),!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");if(e&&n.length<2)throw new Error("Sample variance requires at least 2 values");var r=n.reduce(function(t,e){return t+e},0)/n.length;return n.reduce(function(t,e){return t+Math.pow(e-r,2)},0)/(e?n.length-1:n.length)},e.standardDeviation=function(t,e){return void 0===e&&(e=!0),Math.sqrt(this.variance(t,e))},e.range=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");var n=Math.min.apply(Math,e),r=Math.max.apply(Math,e);return{range:r-n,min:n,max:r}},e.interquartileRange=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");var n=e.sort(function(t,e){return t-e}),r=this.quantile(n,.25),i=this.quantile(n,.75);return{iqr:i-r,q1:r,q3:i}},e.quantile=function(t,e){var n=(t.length-1)*e,r=Math.floor(n),i=Math.ceil(n),a=n%1;return r===i?t[r]:t[r]*(1-a)+t[i]*a},e.coefficientOfVariation=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");var n=e.reduce(function(t,e){return t+e},0)/e.length;if(0===n)throw new Error("Cannot calculate coefficient of variation when mean is zero");var r=this.standardDeviation(t);return{cv:r/Math.abs(n),cvPercent:r/Math.abs(n)*100}},e.meanAbsoluteDeviation=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");var n=e.reduce(function(t,e){return t+e},0)/e.length;return{mad:e.reduce(function(t,e){return t+Math.abs(e-n)},0)/e.length,mean:n}},e.medianAbsoluteDeviation=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");var n=e.sort(function(t,e){return t-e}),r=this.quantile(n,.5),i=e.map(function(t){return Math.abs(t-r)}).sort(function(t,e){return t-e});return{mad:this.quantile(i,.5),median:r}},e.standardError=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");return this.standardDeviation(t)/Math.sqrt(e.length)},e.quartileCoefficient=function(t){var e=this.interquartileRange(t),n=e.q1,r=e.q3;if(n+r===0)throw new Error("Cannot calculate quartile coefficient when Q1 + Q3 = 0");return(r-n)/(r+n)},e.percentileRange=function(t,e,n){if(e>=n)throw new Error("Lower percentile must be less than upper percentile");if(e<0||n>100)throw new Error("Percentiles must be between 0 and 100");var r=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===r.length)throw new Error("No valid numeric values found");var i=r.sort(function(t,e){return t-e}),a=this.quantile(i,e/100),o=this.quantile(i,n/100);return{range:o-a,lowerValue:a,upperValue:o,lowerPercentile:e,upperPercentile:n}},e.giniCoefficient=function(t){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)&&t>=0});if(0===e.length)throw new Error("Gini coefficient requires non-negative numeric values");var n=e.sort(function(t,e){return t-e}),r=n.length,i=n.reduce(function(t,e){return t+e},0)/r;if(0===i)return 0;for(var a=0,o=0;o<r;o++)for(var s=0;s<r;s++)a+=Math.abs(n[o]-n[s]);return a/(2*r*r*i)},e.robustScale=function(t){var e=this.interquartileRange(t),n=this.quantile(t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}).sort(function(t,e){return t-e}),.5);return{scaledValues:t.map(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)?0!==e.iqr?(t-n)/e.iqr:0:null}),median:n,iqr:e.iqr}},t}(),m=/*#__PURE__*/function(){function t(){}var e=t.prototype;return e.quantile=function(t,e){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");if("number"!=typeof e||e<0||e>1)throw new Error("Quantile must be between 0 and 1");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");var r=n.sort(function(t,e){return t-e}),i=(r.length-1)*e,a=Math.floor(i),o=Math.ceil(i),s=i%1;return a===o?r[a]:r[a]*(1-s)+r[o]*s},e.percentile=function(t,e){if("number"!=typeof e||e<0||e>100)throw new Error("Percentile must be between 0 and 100");return this.quantile(t,e/100)},e.quartiles=function(t){return{q1:this.quantile(t,.25),q2:this.quantile(t,.5),q3:this.quantile(t,.75),iqr:this.quantile(t,.75)-this.quantile(t,.25)}},e.quintiles=function(t){return{q1:this.quantile(t,.2),q2:this.quantile(t,.4),q3:this.quantile(t,.6),q4:this.quantile(t,.8)}},e.deciles=function(t){for(var e={},n=1;n<=9;n++)e["d"+n]=this.quantile(t,n/10);return e},e.percentileRank=function(t,e){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");if("number"!=typeof e||!isFinite(e))throw new Error("Value must be a finite number");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");return(n.filter(function(t){return t<e}).length+.5*n.filter(function(t){return t===e}).length)/n.length*100},e.zScore=function(t,e){if(!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");if("number"!=typeof e||!isFinite(e))throw new Error("Value must be a finite number");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");var r=n.reduce(function(t,e){return t+e},0)/n.length,i=n.reduce(function(t,e){return t+Math.pow(e-r,2)},0)/(n.length-1),a=Math.sqrt(i);if(0===a)throw new Error("Cannot calculate z-score when standard deviation is zero");return(e-r)/a},e.boxplotStats=function(t){var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");var n=e.sort(function(t,e){return t-e}),r=this.quantile(n,.25),i=this.quantile(n,.5),a=this.quantile(n,.75),o=a-r,s=r-1.5*o,u=a+1.5*o,l=n.filter(function(t){return t<s||t>u}),c=n.filter(function(t){return t>=s&&t<=u});return{min:Math.min.apply(Math,c),q1:r,median:i,q3:a,max:Math.max.apply(Math,c),iqr:o,lowerFence:s,upperFence:u,outliers:l,outlierCount:l.length}},e.fiveNumberSummary=function(t){var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");return{minimum:Math.min.apply(Math,e),q1:this.quantile(e,.25),median:this.quantile(e,.5),q3:this.quantile(e,.75),maximum:Math.max.apply(Math,e)}},e.rank=function(t,e){if(void 0===e&&(e="average"),!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n=[];if(t.forEach(function(t,e){"number"==typeof t&&!isNaN(t)&&isFinite(t)&&n.push({value:t,originalIndex:e})}),0===n.length)throw new Error("No valid numeric values found");n.sort(function(t,e){return t.value-e.value});for(var r=new Array(t.length).fill(null),i=1,a=function(t){for(var a,s=n[t].value,u=[t];t+1<n.length&&n[t+1].value===s;)t++,u.push(t);switch(e){case"average":a=(i+i+u.length-1)/2;break;case"min":a=i;break;case"max":a=i+u.length-1;break;case"first":return u.forEach(function(t,e){r[n[t].originalIndex]=i+e}),i+=u.length,o=t,1;default:throw new Error("Unknown ranking method. Use: average, min, max, or first")}u.forEach(function(t){r[n[t].originalIndex]=a}),i+=u.length,o=t},o=0;o<n.length;o++)a(o);return r},e.normalizedRank=function(t){var e=this.rank(t),n=e.filter(function(t){return null!==t}),r=Math.max.apply(Math,n);return e.map(function(t){return null!==t?(t-1)/(r-1):null})},e.standardizedValues=function(t){var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===e.length)throw new Error("No valid numeric values found");var n=e.reduce(function(t,e){return t+e},0)/e.length,r=e.reduce(function(t,e){return t+Math.pow(e-n,2)},0)/(e.length-1),i=Math.sqrt(r);return t.map(0===i?function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)?0:null}:function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)?(t-n)/i:null})},t}(),g=/*#__PURE__*/function(){function t(){}var e=t.prototype;return e.skewness=function(t,e){if(void 0===e&&(e=!0),!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(n.length<3)throw new Error("Skewness calculation requires at least 3 values");var r=n.length,i=n.reduce(function(t,e){return t+e},0)/r,a=n.reduce(function(t,e){return t+Math.pow(e-i,2)},0)/(r-1),o=Math.sqrt(a);if(0===o)return 0;var s=n.reduce(function(t,e){return t+Math.pow((e-i)/o,3)},0);return e?s/r:r/((r-1)*(r-2))*s},e.kurtosis=function(t,e,n){if(void 0===e&&(e=!0),void 0===n&&(n=!0),!Array.isArray(t)||0===t.length)throw new Error("Column must be a non-empty array");var r=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(r.length<4)throw new Error("Kurtosis calculation requires at least 4 values");var i=r.length,a=r.reduce(function(t,e){return t+e},0)/i,o=r.reduce(function(t,e){return t+Math.pow(e-a,2)},0)/(i-1),s=Math.sqrt(o);if(0===s)return n?-3:0;var u,l=r.reduce(function(t,e){return t+Math.pow((e-a)/s,4)},0);return u=e?l/i:i*(i+1)/((i-1)*(i-2)*(i-3))*l-3*Math.pow(i-1,2)/((i-2)*(i-3)),n?u-3:u},e.isNormalDistribution=function(t,e){void 0===e&&(e=.05);var n=this.shapiroWilkTest(t),r=this.jarqueBeraTest(t);return{shapiroWilk:{statistic:n.statistic,pValue:n.pValue,isNormal:n.pValue>e},jarqueBera:{statistic:r.statistic,pValue:r.pValue,isNormal:r.pValue>e},skewness:this.skewness(t,!1),kurtosis:this.kurtosis(t,!1,!0),isNormalByTests:n.pValue>e&&r.pValue>e}},e.shapiroWilkTest=function(t){var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(e.length<3||e.length>5e3)throw new Error("Shapiro-Wilk test requires between 3 and 5000 observations");for(var n=e.length,r=[].concat(e).sort(function(t,e){return t-e}),i=r.reduce(function(t,e){return t+e},0)/n,a=r.reduce(function(t,e){return t+Math.pow(e-i,2)},0),o=0,s=0;s<Math.floor(n/2);s++)o+=this.shapiroWilkCoefficient(s+1,n)*(r[n-1-s]-r[s]);var u=o*o/a,l=this.shapiroWilkPValue(u,n);return{statistic:u,pValue:l,isNormal:l>.05}},e.shapiroWilkCoefficient=function(t,e){return e<=10&&t<=e?[0,.7071,.7071,.6872,.6646,.6431,.6233,.6052,.5888,.5739,.5601][t]||.5:.5+1*this.normalInverse((t-.375)/(e+.25))},e.normalInverse=function(t){if(t<=0||t>=1)throw new Error("p must be between 0 and 1");if(t>.5)return-this.normalInverse(1-t);var e=Math.sqrt(-2*Math.log(t));return(((((2.506628277459239*e-30.66479806614716)*e+138.357751867269)*e-275.9285104469687)*e+220.9460984245205)*e-39.69683028665376)/((((-13.28068155288572*e+66.80131188771972)*e-155.6989798598866)*e+161.5858368580409)*e-54.47609879822406)*e+1},e.shapiroWilkPValue=function(t,e){if(e<3)return 1;if(t>=1)return 1;if(t<=0)return 0;var n,r=Math.log(t);return n=e<=11?-(.459*e-2.273)*r:(r-(-1.5861-.31082*Math.log(e)-.083751*Math.pow(Math.log(e),2)+.0038915*Math.pow(Math.log(e),3)))/Math.exp(-.4803-.082676*Math.log(e)+.0030302*Math.pow(Math.log(e),2)),1-this.standardNormalCDF(n)},e.jarqueBeraTest=function(t){var e=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(e.length<4)throw new Error("Jarque-Bera test requires at least 4 observations");var n=e.length,r=this.skewness(t,!1),i=this.kurtosis(t,!1,!0),a=n/6*(Math.pow(r,2)+Math.pow(i,2)/4),o=1-this.chiSquareCDF(a,2);return{statistic:a,pValue:o,skewness:r,kurtosis:i,isNormal:o>.05}},e.standardNormalCDF=function(t){return.5*(1+this.erf(t/Math.sqrt(2)))},e.erf=function(t){var e=t<0?-1:1,n=1/(1+.3275911*(t=Math.abs(t)));return e*(1-((((1.061405429*n-1.453152027)*n+1.421413741)*n-.284496736)*n+.254829592)*n*Math.exp(-t*t))},e.chiSquareCDF=function(t,e){return t<=0?0:this.incompleteGamma(e/2,t/2)/this.gamma(e/2)},e.incompleteGamma=function(t,e){if(e<=0)return 0;if(t<=0)return 1;for(var n=1,r=1,i=1;i<100&&(n+=r*=e/(t+i-1),!(Math.abs(r)<1e-12));i++);return Math.pow(e,t)*Math.exp(-e)*n},e.gamma=function(t){if(t<.5)return Math.PI/(Math.sin(Math.PI*t)*this.gamma(1-t));t-=1;var e=1,n=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7];e=n[0];for(var r=1;r<n.length;r++)e+=n[r]/(t+r);var i=t+n.length-1.5;return Math.sqrt(2*Math.PI)*Math.pow(i,t+.5)*Math.exp(-i)*e},e.momentCoefficient=function(t,e){if("number"!=typeof e||e<1)throw new Error("Moment must be a positive integer");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");var r=n.reduce(function(t,e){return t+e},0)/n.length;return n.reduce(function(t,n){return t+Math.pow(n-r,e)},0)/n.length},e.pearsonSkewness=function(t,e){void 0===e&&(e=1);var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===n.length)throw new Error("No valid numeric values found");var r=n.reduce(function(t,e){return t+e},0)/n.length,i=n.reduce(function(t,e){return t+Math.pow(e-r,2)},0)/(n.length-1),a=Math.sqrt(i);if(0===a)return 0;if(1===e){var o=[].concat(n).sort(function(t,e){return t-e}),s=o.length%2==0?(o[o.length/2-1]+o[o.length/2])/2:o[Math.floor(o.length/2)];return(r-s)/a}if(2===e)return 3*(r-this.median(n))/a;throw new Error("Mode must be 1 or 2")},e.median=function(t){var e=[].concat(t).sort(function(t,e){return t-e}),n=Math.floor(e.length/2);return e.length%2==0?(e[n-1]+e[n])/2:e[n]},t}(),v=/*#__PURE__*/function(){function t(){}var e=t.prototype;return e.tTest=function(t,e,n,r){void 0===n&&(n="two-sample"),void 0===r&&(r=.05);var i=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(i.length<2)throw new Error("Sample 1 must have at least 2 valid values");switch(n){case"one-sample":return this.oneSampleTTest(i,e,r);case"two-sample":var a=e.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(a.length<2)throw new Error("Sample 2 must have at least 2 valid values");return this.twoSampleTTest(i,a,r);case"paired":if(t.length!==e.length)throw new Error("Paired samples must have the same length");return this.pairedTTest(i,e,r);default:throw new Error("Unknown t-test type. Use: one-sample, two-sample, or paired")}},e.oneSampleTTest=function(t,e,n){void 0===n&&(n=.05);var r=t.length,i=t.reduce(function(t,e){return t+e},0)/r,a=t.reduce(function(t,e){return t+Math.pow(e-i,2)},0)/(r-1),o=Math.sqrt(a/r);if(0===o)throw new Error("Cannot perform t-test when standard error is zero");var s=(i-e)/o,u=r-1,l=2*(1-this.tCDF(Math.abs(s),u));return{type:"one-sample",statistic:s,pValue:l,degreesOfFreedom:u,sampleMean:i,hypothesizedMean:e,standardError:o,criticalValue:this.tInverse(1-n/2,u),significant:l<n,alpha:n}},e.twoSampleTTest=function(t,e,n,r){void 0===n&&(n=.05),void 0===r&&(r=!1);var i,a,o,s=t.length,u=e.length,l=t.reduce(function(t,e){return t+e},0)/s,c=e.reduce(function(t,e){return t+e},0)/u,f=t.reduce(function(t,e){return t+Math.pow(e-l,2)},0)/(s-1),h=e.reduce(function(t,e){return t+Math.pow(e-c,2)},0)/(u-1);if(r?(o=Math.sqrt(((s-1)*f+(u-1)*h)/(s+u-2)*(1/s+1/u)),a=s+u-2):(o=Math.sqrt(f/s+h/u),a=Math.pow(f/s+h/u,2)/(Math.pow(f/s,2)/(s-1)+Math.pow(h/u,2)/(u-1))),0===o)throw new Error("Cannot perform t-test when standard error is zero");i=(l-c)/o;var d=2*(1-this.tCDF(Math.abs(i),a));return{type:"two-sample",statistic:i,pValue:d,degreesOfFreedom:a,sample1Mean:l,sample2Mean:c,meanDifference:l-c,standardError:o,equalVariances:r,criticalValue:this.tInverse(1-n/2,a),significant:d<n,alpha:n}},e.pairedTTest=function(t,e,n){if(void 0===n&&(n=.05),t.length!==e.length)throw new Error("Paired samples must have equal length");for(var r=[],i=0;i<t.length;i++)"number"==typeof t[i]&&"number"==typeof e[i]&&!isNaN(t[i])&&!isNaN(e[i])&&isFinite(t[i])&&isFinite(e[i])&&r.push(t[i]-e[i]);if(r.length<2)throw new Error("Need at least 2 valid paired observations");return this.oneSampleTTest(r,0,n)},e.zTest=function(t,e,n,r){void 0===r&&(r=.05);var i=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===i.length)throw new Error("No valid numeric values found");if(n<=0)throw new Error("Population standard deviation must be positive");var a=i.length,o=i.reduce(function(t,e){return t+e},0)/a,s=n/Math.sqrt(a),u=(o-e)/s,l=2*(1-this.normalCDF(Math.abs(u)));return{type:"z-test",statistic:u,pValue:l,sampleMean:o,populationMean:e,populationStd:n,sampleSize:a,standardError:s,criticalValue:this.normalInverse(1-r/2),significant:l<r,alpha:r}},e.anovaTest=function(t,e){if(void 0===e&&(e=.05),!Array.isArray(t)||t.length<2)throw new Error("ANOVA requires at least 2 groups");var n=t.map(function(t){return t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)})});n.forEach(function(t,e){if(t.length<2)throw new Error("Group "+(e+1)+" must have at least 2 valid values")});var r=n.length,i=n.map(function(t){return t.reduce(function(t,e){return t+e},0)/t.length}),a=n.map(function(t){return t.length}),o=a.reduce(function(t,e){return t+e},0),s=n.flat().reduce(function(t,e){return t+e},0)/o,u=n.reduce(function(t,e,n){return t+a[n]*Math.pow(i[n]-s,2)},0),l=n.reduce(function(t,e,n){var r=i[n];return t+e.reduce(function(t,e){return t+Math.pow(e-r,2)},0)},0),c=r-1,f=o-r,h=u/c,d=l/f;if(0===d)throw new Error("Cannot perform ANOVA when within-group variance is zero");var p=h/d,m=1-this.fCDF(p,c,f);return{type:"one-way-anova",statistic:p,pValue:m,dfBetween:c,dfWithin:f,sumOfSquaresBetween:u,sumOfSquaresWithin:l,meanSquareBetween:h,meanSquareWithin:d,groupMeans:i,grandMean:s,significant:m<e,alpha:e}},e.chiSquareTest=function(t,e,n){if(void 0===n&&(n=.05),t.length!==e.length)throw new Error("Columns must have the same length");var r=this.createContingencyTable(t,e),i=r.table,a=r.totals,o=r.rows,s=r.columns,u=0,l={};o.forEach(function(t){l[t]={},s.forEach(function(e){var n=a.row[t]*a.col[e]/a.grand;l[t][e]=n,n<5&&console.warn("Warning: Expected frequency ("+n.toFixed(2)+") is less than 5"),u+=Math.pow(i[t][e]-n,2)/n})});var c=(o.length-1)*(s.length-1),f=1-this.chiSquareCDF(u,c);return{type:"chi-square-independence",statistic:u,pValue:f,degreesOfFreedom:c,observed:i,expected:l,significant:f<n,alpha:n,cramersV:this.cramersV(u,a.grand,Math.min(o.length,s.length))}},e.createContingencyTable=function(t,e){var n=[].concat(new Set(t)),r=[].concat(new Set(e)),i={},a={row:{},col:{},grand:0};n.forEach(function(t){i[t]={},a.row[t]=0}),r.forEach(function(t){a.col[t]=0});for(var o=0;o<t.length;o++){var s=t[o],u=e[o];i[s][u]||(i[s][u]=0),i[s][u]++,a.row[s]++,a.col[u]++,a.grand++}return n.forEach(function(t){r.forEach(function(e){i[t][e]||(i[t][e]=0)})}),{table:i,totals:a,rows:n,columns:r}},e.cramersV=function(t,e,n){return Math.sqrt(t/(e*(n-1)))},e.mannWhitneyTest=function(t,e,n){void 0===n&&(n=.05);var r=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}),i=e.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===r.length||0===i.length)throw new Error("Both samples must contain valid numeric values");var a=r.length,o=i.length,s=[].concat(r.map(function(t){return{value:t,group:1}}),i.map(function(t){return{value:t,group:2}}));s.sort(function(t,e){return t.value-e.value});for(var u=1,l=function(t){for(var e=[s[t]];t+1<s.length&&s[t+1].value===s[t].value;)t++,e.push(s[t]);var n=(u+u+e.length-1)/2;e.forEach(function(t){return t.rank=n}),u+=e.length,c=t},c=0;c<s.length;c++)l(c);var f=s.filter(function(t){return 1===t.group}).reduce(function(t,e){return t+e.rank},0)-a*(a+1)/2,h=a*o-f,d=Math.min(f,h),p=(d-a*o/2)/Math.sqrt(a*o*(a+o+1)/12),m=2*(1-this.normalCDF(Math.abs(p)));return{type:"mann-whitney-u",statistic:d,u1:f,u2:h,zStatistic:p,pValue:m,sample1Size:a,sample2Size:o,significant:m<n,alpha:n}},e.tCDF=function(t,e){return 1-.5*this.incompleteBeta(e/2,.5,e/(t*t+e))},e.tInverse=function(t,e){if(t<=0||t>=1)return NaN;var n=this.normalInverse(t);return n+n/4/e+(5*n*n*n+16*n)/96/(e*e)+(3*n*n*n*n*n+19*n*n*n+17*n)/384/(e*e*e)},e.normalCDF=function(t){return.5*(1+this.erf(t/Math.sqrt(2)))},e.normalInverse=function(t){if(t<=0||t>=1)throw new Error("p must be between 0 and 1");var e=[-39.69683028665376,220.9460984245205,-275.9285104469687,138.357751867269,-30.66479806614716,2.506628277459239],n=[-54.47609879822406,161.5858368580409,-155.6989798598866,66.80131188771972,-13.28068155288572,1];if(t>.5)return-this.normalInverse(1-t);for(var r=Math.sqrt(-2*Math.log(t)),i=e[5],a=n[5],o=4;o>=0;o--)i=i*r+e[o],a=a*r+n[o];return i/a},e.fCDF=function(t,e,n){return 1-this.incompleteBeta(n/2,e/2,n/(n+e*t))},e.chiSquareCDF=function(t,e){return t<=0?0:this.incompleteGamma(e/2,t/2)/this.gamma(e/2)},e.erf=function(t){var e=t<0?-1:1,n=1/(1+.3275911*(t=Math.abs(t)));return e*(1-((((1.061405429*n-1.453152027)*n+1.421413741)*n-.284496736)*n+.254829592)*n*Math.exp(-t*t))},e.incompleteBeta=function(t,e,n){if(n<=0)return 0;if(n>=1)return 1;var r=Math.exp(this.logGamma(t+e)-this.logGamma(t)-this.logGamma(e)+t*Math.log(n)+e*Math.log(1-n));return n<(t+1)/(t+e+2)?r*this.continuedFractionBeta(t,e,n)/t:1-r*this.continuedFractionBeta(e,t,1-n)/e},e.continuedFractionBeta=function(t,e,n){var r=t+e,i=t+1,a=t-1,o=1,s=1-r*n/i;Math.abs(s)<1e-30&&(s=1e-30);for(var u=s=1/s,l=1;l<=100;l++){var c=2*l,f=l*(e-l)*n/((a+c)*(t+c));s=1+f*s,Math.abs(s)<1e-30&&(s=1e-30),o=1+f/o,Math.abs(o)<1e-30&&(o=1e-30),u*=(s=1/s)*o,s=1+(f=-(t+l)*(r+l)*n/((t+c)*(i+c)))*s,Math.abs(s)<1e-30&&(s=1e-30),o=1+f/o,Math.abs(o)<1e-30&&(o=1e-30);var h=(s=1/s)*o;if(u*=h,Math.abs(h-1)<1e-12)break}return u},e.logGamma=function(t){var e=[76.18009172947146,-86.50532032941678,24.01409824083091,-1.231739572450155,.001208650973866179,-5395239384953e-18],n=1.000000000190015,r=t,i=t,a=t+5.5;a-=(t+.5)*Math.log(a);for(var o=0;o<6;o++)n+=e[o]/++i;return-a+Math.log(2.5066282746310007*n/r)},e.incompleteGamma=function(t,e){if(e<=0)return 0;for(var n=1,r=1,i=1;i<100&&(n+=r*=e/(t+i-1),!(Math.abs(r)<1e-12));i++);return Math.pow(e,t)*Math.exp(-e)*n},e.gamma=function(t){return Math.exp(this.logGamma(t))},t}(),y=/*#__PURE__*/function(){function t(){}var e=t.prototype;return e.mean=function(t,e){if(void 0===e&&(e=.95),e<=0||e>=1)throw new Error("Confidence level must be between 0 and 1");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(n.length<2)throw new Error("Need at least 2 valid observations");var r=n.length,i=n.reduce(function(t,e){return t+e},0)/r,a=n.reduce(function(t,e){return t+Math.pow(e-i,2)},0)/(r-1),o=Math.sqrt(a/r),s=this.tInverse(1-(1-e)/2,r-1)*o;return{mean:i,standardError:o,marginOfError:s,lowerBound:i-s,upperBound:i+s,confidence:e,degreesOfFreedom:r-1,sampleSize:r}},e.meanKnownVariance=function(t,e,n){if(void 0===n&&(n=.95),n<=0||n>=1)throw new Error("Confidence level must be between 0 and 1");if(e<=0)throw new Error("Population standard deviation must be positive");var r=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===r.length)throw new Error("No valid numeric values found");var i=r.length,a=r.reduce(function(t,e){return t+e},0)/i,o=e/Math.sqrt(i),s=this.normalInverse(1-(1-n)/2)*o;return{mean:a,standardError:o,marginOfError:s,lowerBound:a-s,upperBound:a+s,confidence:n,sampleSize:i,populationStd:e}},e.proportion=function(t,e,n){if(void 0===n&&(n=.95),!Number.isInteger(t)||!Number.isInteger(e))throw new Error("Successes and total must be integers");if(t<0||e<=0||t>e)throw new Error("Invalid values: 0 ⤠successes ⤠total, total > 0");if(n<=0||n>=1)throw new Error("Confidence level must be between 0 and 1");var r=t/e,i=this.normalInverse(1-(1-n)/2);(e*r<5||e*(1-r)<5)&&console.warn("Warning: Normal approximation may not be accurate. Consider using Wilson score interval.");var a=Math.sqrt(r*(1-r)/e),o=i*a,s={proportion:r,standardError:a,marginOfError:o,lowerBound:Math.max(0,r-o),upperBound:Math.min(1,r+o),confidence:n,sampleSize:e,successes:t},u=this.wilsonScoreInterval(t,e,n);return{normal:s,wilson:u,recommended:e*r>=5&&e*(1-r)>=5?s:u}},e.wilsonScoreInterval=function(t,e,n){void 0===n&&(n=.95);var r=t/e,i=this.normalInverse(1-(1-n)/2),a=i*i,o=1+a/e,s=(r+a/(2*e))/o,u=i*Math.sqrt(r*(1-r)/e+a/(4*e*e))/o;return{proportion:r,center:s,halfWidth:u,lowerBound:s-u,upperBound:s+u,confidence:n,sampleSize:e,successes:t}},e.variance=function(t,e){if(void 0===e&&(e=.95),e<=0||e>=1)throw new Error("Confidence level must be between 0 and 1");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(n.length<2)throw new Error("Need at least 2 valid observations");var r=n.length,i=n.reduce(function(t,e){return t+e},0)/r,a=n.reduce(function(t,e){return t+Math.pow(e-i,2)},0)/(r-1),o=1-e,s=r-1,u=this.chiSquareInverse(o/2,s);return{sampleVariance:a,lowerBound:s*a/this.chiSquareInverse(1-o/2,s),upperBound:s*a/u,confidence:e,degreesOfFreedom:s,sampleSize:r}},e.standardDeviation=function(t,e){void 0===e&&(e=.95);var n=this.variance(t,e);return{sampleStandardDeviation:Math.sqrt(n.sampleVariance),lowerBound:Math.sqrt(n.lowerBound),upperBound:Math.sqrt(n.upperBound),confidence:e,degreesOfFreedom:n.degreesOfFreedom,sampleSize:n.sampleSize}},e.meanDifference=function(t,e,n,r){if(void 0===n&&(n=.95),void 0===r&&(r=!1),n<=0||n>=1)throw new Error("Confidence level must be between 0 and 1");var i=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}),a=e.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(i.length<2||a.length<2)throw new Error("Both samples must have at least 2 valid observations");var o,s,u=i.length,l=a.length,c=i.reduce(function(t,e){return t+e},0)/u,f=a.reduce(function(t,e){return t+e},0)/l,h=c-f,d=i.reduce(function(t,e){return t+Math.pow(e-c,2)},0)/(u-1),p=a.reduce(function(t,e){return t+Math.pow(e-f,2)},0)/(l-1);r?(o=Math.sqrt(((u-1)*d+(l-1)*p)/(u+l-2)*(1/u+1/l)),s=u+l-2):(o=Math.sqrt(d/u+p/l),s=Math.pow(d/u+p/l,2)/(Math.pow(d/u,2)/(u-1)+Math.pow(p/l,2)/(l-1)));var m=this.tInverse(1-(1-n)/2,s)*o;return{meanDifference:h,sample1Mean:c,sample2Mean:f,standardError:o,marginOfError:m,lowerBound:h-m,upperBound:h+m,confidence:n,degreesOfFreedom:s,equalVariances:r}},e.pairedMeanDifference=function(t,e,n){if(void 0===n&&(n=.95),t.length!==e.length)throw new Error("Paired samples must have equal length");for(var r=[],i=0;i<t.length;i++)"number"==typeof t[i]&&"number"==typeof e[i]&&!isNaN(t[i])&&!isNaN(e[i])&&isFinite(t[i])&&isFinite(e[i])&&r.push(t[i]-e[i]);if(r.length<2)throw new Error("Need at least 2 valid paired observations");return this.mean(r,n)},e.correlation=function(t,e,n,r){if(void 0===n&&(n=.95),void 0===r&&(r="pearson"),n<=0||n>=1)throw new Error("Confidence level must be between 0 and 1");if(t.length!==e.length)throw new Error("x and y must have the same length");for(var i=[],a=0;a<t.length;a++)"number"==typeof t[a]&&"number"==typeof e[a]&&!isNaN(t[a])&&!isNaN(e[a])&&isFinite(t[a])&&isFinite(e[a])&&i.push({x:t[a],y:e[a]});if(i.length<3)throw new Error("Need at least 3 valid paired observations");var o,s=i.length;if("pearson"!==r)throw new Error("Only Pearson correlation is supported for confidence intervals");var u=i.map(function(t){return t.x}),l=i.map(function(t){return t.y});if(o=this.pearsonCorrelation(u,l),Math.abs(o)>=1)throw new Error("Cannot calculate confidence interval for perfect correlation");var c=.5*Math.log((1+o)/(1-o)),f=1/Math.sqrt(s-3),h=this.normalInverse(1-(1-n)/2)*f,d=c-h,p=c+h;return{correlation:o,fisherZ:c,standardError:f,lowerBound:(Math.exp(2*d)-1)/(Math.exp(2*d)+1),upperBound:(Math.exp(2*p)-1)/(Math.exp(2*p)+1),confidence:n,sampleSize:s}},e.pearsonCorrelation=function(t,e){for(var n=t.length,r=t.reduce(function(t,e){return t+e},0)/n,i=e.reduce(function(t,e){return t+e},0)/n,a=0,o=0,s=0,u=0;u<n;u++){var l=t[u]-r,c=e[u]-i;a+=l*c,o+=l*l,s+=c*c}var f=Math.sqrt(o*s);return 0===f?0:a/f},e.median=function(t,e){if(void 0===e&&(e=.95),e<=0||e>=1)throw new Error("Confidence level must be between 0 and 1");var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(n.length<3)throw new Error("Need at least 3 valid observations for median CI");var r=[].concat(n).sort(function(t,e){return t-e}),i=r.length,a=this.normalInverse(1-(1-e)/2),o=Math.floor(i/2-a*Math.sqrt(i)/2),s=Math.ceil(i/2+a*Math.sqrt(i)/2),u=Math.max(0,o-1),l=Math.min(i-1,s-1);return{median:i%2==0?(r[i/2-1]+r[i/2])/2:r[Math.floor(i/2)],lowerBound:r[u],upperBound:r[l],confidence:e,sampleSize:i,lowerIndex:u+1,upperIndex:l+1}},e.bootstrapCI=function(t,e,n,r){if(void 0===n&&(n=.95),void 0===r&&(r=1e3),n<=0||n>=1)throw new Error("Confidence level must be between 0 and 1");var i=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(0===i.length)throw new Error("No valid numeric values found");for(var a=[],o=0;o<r;o++){for(var s=[],u=0;u<i.length;u++){var l=Math.floor(Math.random()*i.length);s.push(i[l])}var c=this.calculateStatistic(s,e);a.push(c)}a.sort(function(t,e){return t-e});var f=1-n,h=Math.floor(f/2*r),d=Math.floor((1-f/2)*r)-1,p=this.calculateStatistic(i,e),m=a.reduce(function(t,e){return t+e},0)/a.length;return{originalStatistic:p,bootstrapMean:m,bias:m-p,standardError:this.calculateStandardDeviation(a),lowerBound:a[h],upperBound:a[d],confidence:n,iterations:r}},e.calculateStatistic=function(t,e){switch(e){case"mean":return t.reduce(function(t,e){return t+e},0)/t.length;case"median":var n=[].concat(t).sort(function(t,e){return t-e}),r=Math.floor(n.length/2);return n.length%2==0?(n[r-1]+n[r])/2:n[r];case"std":return this.calculateStandardDeviation(t);case"var":return this.calculateVariance(t);default:if("function"==typeof e)return e(t);throw new Error("Unknown statistic: "+e)}},e.calculateStandardDeviation=function(t){var e=t.reduce(function(t,e){return t+e},0)/t.length,n=t.reduce(function(t,n){return t+Math.pow(n-e,2)},0)/(t.length-1);return Math.sqrt(n)},e.calculateVariance=function(t){var e=t.reduce(function(t,e){return t+e},0)/t.length;return t.reduce(function(t,n){return t+Math.pow(n-e,2)},0)/(t.length-1)},e.normalInverse=function(t){if(t<=0||t>=1)throw new Error("p must be between 0 and 1");var e=[-39.69683028665376,220.9460984245205,-275.9285104469687,138.357751867269,-30.66479806614716,2.506628277459239],n=[-54.47609879822406,161.5858368580409,-155.6989798598866,66.80131188771972,-13.28068155288572,1];if(t>.5)return-this.normalInverse(1-t);for(var r=Math.sqrt(-2*Math.log(t)),i=e[5],a=n[5],o=4;o>=0;o--)i=i*r+e[o],a=a*r+n[o];return i/a},e.tInverse=function(t,e){if(t<=0||t>=1)return NaN;var n=this.normalInverse(t);return n+n/4/e+(5*n*n*n+16*n)/96/(e*e)+(3*n*n*n*n*n+19*n*n*n+17*n)/384/(e*e*e)},e.chiSquareInverse=function(t,e){if(t<=0||t>=1)throw new Error("p must be between 0 and 1");if(e<=0)throw new Error("Degrees of freedom must be positive");for(var n=e,r=0;r<100;r++){var i=this.chiSquareCDF(n,e)-t,a=this.chiSquarePDF(n,e);if(Math.abs(i)<1e-12)break;if(0===a)break;(n-=i/a)<=0&&(n=e/2)}return Math.max(0,n)},e.chiSquareCDF=function(t,e){return t<=0?0:this.incompleteGamma(e/2,t/2)/this.gamma(e/2)},e.chiSquarePDF=function(t,e){return t<=0?0:Math.pow(t,e/2-1)*Math.exp(-t/2)/(Math.pow(2,e/2)*this.gamma(e/2))},e.incompleteGamma=function(t,e){if(e<=0)return 0;for(var n=1,r=1,i=1;i<100&&(n+=r*=e/(t+i-1),!(Math.abs(r)<1e-12));i++);return Math.pow(e,t)*Math.exp(-e)*n},e.gamma=function(t){var e=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7];if(t<.5)return Math.PI/(Math.sin(Math.PI*t)*this.gamma(1-t));t-=1;for(var n=e[0],r=1;r<e.length;r++)n+=e[r]/(t+r);var i=t+e.length-1.5;return Math.sqrt(2*Math.PI)*Math.pow(i,t+.5)*Math.exp(-i)*n},t}(),b=/*#__PURE__*/function(){function t(){}var e=t.prototype;return e.shapiroWilk=function(t,e){void 0===e&&(e=.05);var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(n.length<3||n.length>5e3)throw new Error("Shapiro-Wilk test requires between 3 and 5000 observations");var r=n.length,i=[].concat(n).sort(function(t,e){return t-e}),a=i.reduce(function(t,e){return t+e},0)/r,o=i.reduce(function(t,e){return t+Math.pow(e-a,2)},0);if(0===o)return{statistic:NaN,pValue:NaN,isNormal:!1,error:"All values are identical"};for(var s=0,u=0;u<Math.floor(r/2);u++)s+=this.shapiroWilkCoefficient(u+1,r)*(i[r-1-u]-i[u]);var l=s*s/o,c=this.shapiroWilkPValue(l,r);return{statistic:l,pValue:c,isNormal:c>e,alpha:e,sampleSize:r,interpretation:this.interpretNormalityResult(c,e,"Shapiro-Wilk")}},e.shapiroWilkCoefficient=function(t,e){return e<=10&&t<=e?[0,.7071,.7071,.6872,.6646,.6431,.6233,.6052,.5888,.5739,.5601][t]||.5:.5+1*this.normalInverse((t-.375)/(e+.25))},e.shapiroWilkPValue=function(t,e){if(e<3)return 1;if(t>=1)return 1;if(t<=0)return 0;var n,r=Math.log(t);return n=e<=11?-(.459*e-2.273)*r:(r-(-1.5861-.31082*Math.log(e)-.083751*Math.pow(Math.log(e),2)+.0038915*Math.pow(Math.log(e),3)))/Math.exp(-.4803-.082676*Math.log(e)+.0030302*Math.pow(Math.log(e),2)),1-this.standardNormalCDF(n)},e.kolmogorovSmirnov=function(t,e){void 0===e&&(e=.05);var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(n.length<5)throw new Error("Kolmogorov-Smirnov test requires at least 5 observations");var r=n.length,i=[].concat(n).sort(function(t,e){return t-e}),a=i.reduce(function(t,e){return t+e},0)/r,o=i.reduce(function(t,e){return t+Math.pow(e-a,2)},0)/(r-1),s=Math.sqrt(o);if(0===s)return{statistic:NaN,pValue:NaN,isNormal:!1,error:"All values are identical"};for(var u=0,l=0;l<r;l++){var c=(l+1)/r,f=this.standardNormalCDF((i[l]-a)/s),h=Math.abs(c-f),d=Math.abs(l/r-f);u=Math.max(u,h,d)}var p=u*Math.sqrt(r),m=this.kolmogorovSmirnovPValue(p);return{statistic:u,pValue:m,isNormal:m>e,alpha:e,sampleSize:r,lambda:p,interpretation:this.interpretNormalityResult(m,e,"Kolmogorov-Smirnov")}},e.kolmogorovSmirnovPValue=function(t){if(t<=0)return 1;if(t>7)return 0;for(var e=0,n=1;n<=100;n++){var r=2*Math.pow(-1,n-1)*Math.exp(-2*n*n*t*t);if(e+=r,Math.abs(r)<1e-12)break}return Math.min(1,Math.max(0,e))},e.andersonDarling=function(t,e){void 0===e&&(e=.05);var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(n.length<8)throw new Error("Anderson-Darling test requires at least 8 observations");var r=n.length,i=[].concat(n).sort(function(t,e){return t-e}),a=i.reduce(function(t,e){return t+e},0)/r,o=i.reduce(function(t,e){return t+Math.pow(e-a,2)},0)/(r-1),s=Math.sqrt(o);if(0===s)return{statistic:NaN,pValue:NaN,isNormal:!1,error:"All values are identical"};for(var u=0,l=0;l<r;l++){var c=(i[l]-a)/s,f=this.standardNormalCDF(c),h=this.standardNormalCDF(-c);f>0&&h>0&&(u+=(2*l+1)*(Math.log(f)+Math.log(h)))}var d=-r-1/r*u,p=d*(1+.75/r+2.25/(r*r)),m=this.andersonDarlingPValue(p);return{statistic:d,adjustedStatistic:p,pValue:m,isNormal:m>e,alpha:e,sampleSize:r,interpretation:this.interpretNormalityResult(m,e,"Anderson-Darling")}},e.andersonDarlingPValue=function(t){return t<=.2?1-Math.exp(-1.2337141/t)*(2.00012+(.247105-(.0649821-(.0347962-(.011672-.00168691*t)*t)*t)*t)*t):t<=.34?1-Math.exp(-.9177603-1.25156*t)*(1.38033+(.421981-.668119*t)*t):t<.6?Math.exp(.731-3.009*t+4.86*t*t):t<10?Math.exp(1.0776-(2.30695-(.43424-(.082433-(.008056-3146e-7*t)*t)*t)*t)*t):0},e.jarqueBera=function(t,e){void 0===e&&(e=.05);var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(n.length<4)throw new Error("Jarque-Bera test requires at least 4 observations");var r=n.length,i=this.calculateSkewness(n),a=this.calculateKurtosis(n,!0),o=r/6*(Math.pow(i,2)+Math.pow(a,2)/4),s=1-this.chiSquareCDF(o,2);return{statistic:o,pValue:s,isNormal:s>e,alpha:e,sampleSize:r,skewness:i,excessKurtosis:a,interpretation:this.interpretNormalityResult(s,e,"Jarque-Bera")}},e.dagoTest=function(t,e){void 0===e&&(e=.05);var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(n.length<20)throw new Error("D'Agostino test requires at least 20 observations");var r=n.length,i=this.calculateSkewness(n),a=this.calculateKurtosis(n,!0),o=this.skewnessZScore(i,r),s=this.kurtosisZScore(a,r),u=o*o+s*s,l=1-this.chiSquareCDF(u,2);return{statistic:u,pValue:l,isNormal:l>e,alpha:e,sampleSize:r,skewness:i,excessKurtosis:a,skewnessZ:o,kurtosisZ:s,interpretation:this.interpretNormalityResult(l,e,"D'Agostino K-squared")}},e.skewnessZScore=function(t,e){var n=t*Math.sqrt((e+1)*(e+3)/(6*(e-2))),r=-1+Math.sqrt(2*(3*(e*e+27*e-70)*(e+1)*(e+3)/((e-2)*(e+5)*(e+7)*(e+9))-1)),i=1/Math.sqrt(.5*Math.log(r)),a=Math.sqrt(2/(r-1));return i*Math.log(n/a+Math.sqrt(Math.pow(n/a,2)+1))},e.kurtosisZScore=function(t,e){var n=(t-3*(e-1)/(e+1))/Math.sqrt(24*e*(e-2)*(e-3)/((e+1)*(e+1)*(e+3)*(e+5))),r=6*(e*e-5*e+2)/((e+7)*(e+9))*Math.sqrt(6*(e+3)*(e+5)/(e*(e-2)*(e-3))),i=6+8/r*(2/r+Math.sqrt(1+4/Math.pow(r,2)));return Math.sqrt(9*i/2)*((1-2/i)/(1+n*Math.sqrt(2/(i-4)))-1)},e.lillieforsTest=function(t,e){void 0===e&&(e=.05);var n=t.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});if(n.length<4||n.length>1e3)throw new Error("Lilliefors test requires between 4 and 1000 observations");var r=n.length,i=[].concat(n).sort(function(t,e){return t-e}),a=i.reduce(function(t,e){return t+e},0)/r,o=i.reduce(function(t,e){return t+Math.pow(e-a,2)},0)/(r-1),s=Math.sqrt(o);if(0===s)return{statistic:NaN,pValue:NaN,isNormal:!1,error:"All values are identical"};for(var u=0,l=0;l<r;l++){var c=(l+1)/r,f=this.standardNormalCDF((i[l]-a)/s),h=Math.abs(c-f),d=Math.abs(l/r-f);u=Math.max(u,h,d)}var p=this.lillieforsPValue(u,r);return{statistic:u,pValue:p,isNormal:p>e,alpha:e,sampleSize:r,interpretation:this.interpretNormalityResult(p,e,"Lilliefors")}},e.lillieforsPValue=function(t,e){var n,r={4:.381,5:.337,6:.319,7:.3,8:.285,9:.271,10:.258,11:.249,12:.242,13:.234,14:.227,15:.22,16:.213,17:.206,18:.2,19:.195,20:.19,25:.173,30:.161,40:.144,50:.131,100:.096};if(r[e])n=r[e];else if(e>100)n=.886/Math.sqrt(e);else{var i=Object.keys(r).map(Number).sort(function(t,e){return t-e}),a=i.filter(function(t){return t<=e}).pop(),o=i.filter(function(t){return t>=e})[0];n=a===o?r[a]:r[a]+(e-a)/(o-a)*(r[o]-r[a])}return t>n?.01:t<.8*n?.2:.05},e.batchNormalityTest=function(t,e){void 0===e&&(e=.05);var n={};try{n.shapiroWilk=this.shapiroWilk(t,e)}catch(t){n.shapiroWilk={error:t.message}}try{n.jarqueBera=this.jarqueBera(t,e)}catch(t){n.jarqueBera={error:t.message}}try{n.andersonDarling=this.andersonDarling(t,e)}catch(t){n.andersonDarling={error:t.message}}try{n.kolmogorovSmirnov=this.kolmogorovSmirnov(t,e)}catch(t){n.kolmogorovSmirnov={error:t.message}}try{t.length>=20&&(n.dagostino=this.dagoTest(t,e))}catch(t){n.dagostino={error:t.message}}var r=Object.entries(n).filter(function(t){var e=t[1];return!e.error&&void 0!==e.pValue}),i=r.filter(function(t){return t[1].isNormal}).length,a=r.length;return{individualTests:n,summary:{testsRun:a,testsPassingNormality:i,consensusNormal:i>=Math.ceil(a/2),strongNormalEvidence:i===a,strongNonNormalEvidence:0===i},recommendation:this.getNormalityRecommendation(n,a,i)}},e.getNormalityRecommendation=function(t,e,n){if(0===e)return"Unable to assess normality - insufficient data or all tests failed";var r=n/e;return 1===r?"Strong evidence for normality - all tests indicate normal distribution":r>=.75?"Good evidence for normality - most tests indicate normal distribution":r>=.5?"Mixed evidence - consider visual inspection and domain knowledge":r>0?"Evidence against normality - most tests indicate non-normal distribution":"Strong evidence against normality - all tests indicate non-normal distribution"},e.calculateSkewness=function(t,e){void 0===e&&(e=!1);var n=t.length,r=t.reduce(function(t,e){return t+e},0)/n,i=t.reduce(function(t,e){return t+Math.pow(e-r,2)},0)/(n-1),a=Math.sqrt(i);if(0===a)return 0;var o=t.reduce(function(t,e){return t+Math.pow((e-r)/a,3)},0);return e?o/n:n/((n-1)*(n-2))*o},e.calculateKurtosis=function(t,e,n){void 0===e&&(e=!0),void 0===n&&(n=!1);var r=t.length,i=t.reduce(function(t,e){return t+e},0)/r,a=t.reduce(function(t,e){return t+Math.pow(e-i,2)},0)/(r-1),o=Math.sqrt(a);if(0===o)return e?-3:0;var s,u=t.reduce(function(t,e){return t+Math.pow((e-i)/o,4)},0);return s=n?u/r:r*(r+1)/((r-1)*(r-2)*(r-3))*u-3*Math.pow(r-1,2)/((r-2)*(r-3)),e?s-3:s},e.interpretNormalityResult=function(t,e,n){return t>e?n+" test: Fail to reject null hypothesis (p-value = "+t.toFixed(4)+" > α = "+e+"). Data appears to be normally distributed.":n+" test: Reject null hypothesis (p-value = "+t.toFixed(4)+" ⤠α = "+e+"). Data appears to be non-normally distributed."},e.standardNormalCDF=function(t){return.5*(1+this.erf(t/Math.sqrt(2)))},e.erf=function(t){var e=t<0?-1:1,n=1/(1+.3275911*(t=Math.abs(t)));return e*(1-((((1.061405429*n-1.453152027)*n+1.421413741)*n-.284496736)*n+.254829592)*n*Math.exp(-t*t))},e.normalInverse=function(t){if(t<=0||t>=1)throw new Error("p must be between 0 and 1");var e=[-39.69683028665376,220.9460984245205,-275.9285104469687,138.357751867269,-30.66479806614716,2.506628277459239],n=[-54.47609879822406,161.5858368580409,-155.6989798598866,66.80131188771972,-13.28068155288572,1];if(t>.5)return-this.normalInverse(1-t);for(var r=Math.sqrt(-2*Math.log(t)),i=e[5],a=n[5],o=4;o>=0;o--)i=i*r+e[o],a=a*r+n[o];return i/a},e.chiSquareCDF=function(t,e){return t<=0?0:this.incompleteGamma(e/2,t/2)/this.gamma(e/2)},e.incompleteGamma=function(t,e){if(e<=0)return 0;for(var n=1,r=1,i=1;i<100&&(n+=r*=e/(t+i-1),!(Math.abs(r)<1e-12));i++);return Math.pow(e,t)*Math.exp(-e)*n},e.gamma=function(t){var e=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7];if(t<.5)return Math.PI/(Math.sin(Math.PI*t)*this.gamma(1-t));t-=1;for(var n=e[0],r=1;r<e.length;r++)n+=e[r]/(t+r);var i=t+e.length-1.5;return Math.sqrt(2*Math.PI)*Math.pow(i,t+.5)*Math.exp(-i)*n},t}(),w=/*#__PURE__*/function(){function t(){}var e=t.prototype;return e.pearson=function(t,e){if(!Array.isArray(t)||!Array.isArray(e))throw new Error("Both inputs must be arrays");if(t.length!==e.length)throw new Error("Arrays must have the same length");for(var n=[],r=0;r<t.length;r++)"number"==typeof t[r]&&"number"==typeof e[r]&&!isNaN(t[r])&&!isNaN(e[r])&&isFinite(t[r])&&isFinite(e[r])&&n.push({x:t[r],y:e[r]});if(n.length<3)throw new Error("Need at least 3 valid paired observations");for(var i=n.length,a=n.map(function(t){return t.x}),o=n.map(function(t){return t.y}),s=a.reduce(function(t,e){return t+e},0)/i,u=o.reduce(function(t,e){return t+e},0)/i,l=0,c=0,f=0,h=0;h<i;h++){var d=a[h]-s,p=o[h]-u;l+=d*p,c+=d*d,f+=p*p}var m=Math.sqrt(c*f);if(0===m)return{correlation:0,pValue:1,tStatistic:0,degreesOfFreedom:i-2,significant:!1,confidenceInterval:{lower:0,upper:0},sampleSize:i};var g=l/m,v=g*Math.sqrt((i-2)/(1-g*g)),y=2*(1-this.tCDF(Math.abs(v),i-2));return{correlation:g,pValue:y,tStatistic:v,degreesOfFreedom:i-2,significant:y<.05,confidenceInterval:this.pearsonConfidenceInterval(g,i),sampleSize:i,interpretation:this.interpretCorrelation(g,y)}},e.spearman=function(t,e){if(!Array.isArray(t)||!Array.isArray(e))throw new Error("Both inputs must be arrays");if(t.length!==e.length)throw new Error("Arrays must have the same length");for(var n=[],r=0;r<t.length;r++)"number"==typeof t[r]&&"number"==typeof e[r]&&!isNaN(t[r])&&!isNaN(e[r])&&isFinite(t[r])&&isFinite(e[r])&&n.push({x:t[r],y:e[r],originalIndex:r});if(n.length<3)throw new Error("Need at least 3 valid paired observations");var i=n.length,a=this.calculateRanks(n.map(function(t){return t.x})),o=this.calculateRanks(n.map(function(t){return t.y})),s=this.pearsonFromArrays(a,o),u=s*Math.sqrt((i-2)/(1-s*s)),l=2*(1-this.tCDF(Math.abs(u),i-2));return{correlation:s,pValue:l,tStatistic:u,degreesOfFreedom:i-2,significant:l<.05,sampleSize:i,xRanks:a,yRanks:o,interpretation:this.interpretCorrelation(s,l,"Spearman")}},e.kendall=function(t,e){if(!Array.isArray(t)||!Array.isArray(e))throw new Error("Both inputs must be arrays");if(t.length!==e.length)throw new Error("Arrays must have the same length");for(var n=[],r=0;r<t.length;r++)"number"==typeof t[r]&&"number"==typeof e[r]&&!isNaN(t[r])&&!isNaN(e[r])&&isFinite(t[r])&&isFinite(e[r])&&n.push({x:t[r],y:e[r]});if(n.length<3)throw new Error("Need at least 3 valid paired observations");for(var i=n.length,a=0,o=0,s=0,u=0,l=0,c=0;c<i;c++)for(var f=c+1;f<i;f++){var h=n[c].x-n[f].x,d=n[c].y-n[f].y;0===h&&0===d?l++:0===h?s++:0===d?u++:h*d>0?a++:o++}var p=i*(i-1)/2,m=(a-o)/Math.sqrt((p-s)*(p-u)),g=m/Math.sqrt(2*(2*i+5)/(9*i*(i-1))),v=2*(1-this.normalCDF(Math.abs(g)));return{correlation:m,pValue:v,zStatistic:g,concordantPairs:a,discordantPairs:o,tiesX:s,tiesY:u,tiesXY:l,significant:v<.05,sampleSize:i,interpretation:this.interpretCorrelation(m,v,"Kendall")}},e.matrix=function(t,e){var n=this;if(void 0===e&&(e="pearson"),!t||!t.headers||!t.data)throw new Error("Invalid dataset format");var r=t.headers.filter(function(e){return t.data.map(function(t){return t[e]}).filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}).length>0});if(r.length<2)throw new Error("Need at least 2 numeric columns for correlation matrix");var i={},a={},o={};return r.forEach(function(s){i[s]={},a[s]={},o[s]={},r.forEach(function(r){if(s===r)i[s][r]=1,a[s][r]=0,o[s][r]=t.data.length;else{var u=t.data.map(function(t){return t[s]}),l=t.data.map(function(t){return t[r]});try{var c;switch(e){case"pearson":c=n.pearson(u,l);break;case"spearman":c=n.spearman(u,l);break;case"kendall":c=n.kendall(u,l);break;default:throw new Error("Unknown correlation method: "+e)}i[s][r]=c.correlation,a[s][r]=c.pValue,o[s][r]=c.sampleSize}catch(t){i[s][r]=NaN,a[s][r]=NaN,o[s][r]=0}}})}),{correlations:i,pValues:a,sampleSizes:o,columns:r,method:e,strongCorrelations:this.findStrongCorrelations(i,a),summary:this.summarizeCorrelationMatrix(i,a,r)}},e.covariance=function(t,e,n){if(void 0===n&&(n=!0),!Array.isArray(t)||!Array.isArray(e))throw new Error("Both inputs must be arrays");if(t.length!==e.length)throw new Error("Arrays must have the same length");for(var r=[],i=0;i<t.length;i++)"number"==typeof t[i]&&"number"==typeof e[i]&&!isNaN(t[i])&&!isNaN(e[i])&&isFinite(t[i])&&isFinite(e[i])&&r.push({x:t[i],y:e[i]});if(r.length<2)throw new Error("Need at least 2 valid paired observations");var a=r.length,o=r.map(function(t){return t.x}),s=r.map(function(t){return t.y}),u=o.reduce(function(t,e){return t+e},0)/a,l=s.reduce(function(t,e){return t+e},0)/a,c=o.reduce(function(t,e,n){return t+(e-u)*(s[n]-l)},0)/(n?a-1:a);return{covariance:c,meanX:u,meanY:l,sampleSize:a,sample:n}},e.covarianceMatrix=function(t,e){var n=this;if(void 0===e&&(e=!0),!t||!t.headers||!t.data)throw new Error("Invalid dataset format");var r=t.headers.filter(function(e){return t.data.map(function(t){return t[e]}).filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}).length>0});if(r.length<2)throw new Error("Need at least 2 numeric columns for covariance matrix");var i={};return r.forEach(function(a){i[a]={},r.forEach(function(r){var o=t.data.map(function(t){return t[a]}),s=t.data.map(function(t){return t[r]}),u=n.covariance(o,s,e);i[a][r]=u.covariance})}),{covariance:i,columns:r,sample:e}},e.partialCorrelation=function(t,e,n){var r=this.pearson(t,e),i=this.pearson(t,n),a=this.pearson(e,n),o=r.correlation-i.correlation*a.correlation,s=Math.sqrt((1-Math.pow(i.correlation,2))*(1-Math.pow(a.correlation,2)));if(0===s)return{correlation:0,pValue:1,significant:!1};var u=o/s,l=Math.min(r.sampleSize,i.sampleSize,a.sampleSize),c=l-3,f=u*Math.sqrt(c/(1-Math.pow(u,2))),h=2*(1-this.tCDF(Math.abs(f),c));return{correlation:u,pValue:h,tStatistic:f,degreesOfFreedom:c,significant:h<.05,sampleSize:l,controllingFor:"third variable"}},e.calculateRanks=function(t){var e=t.map(function(t,e){return{value:t,index:e}});e.sort(function(t,e){return t.value-e.value});for(var n=new Array(t.length),r=1,i=function(t){for(var i=[e[t]];t+1<e.length&&e[t+1].value===e[t].value;)t++,i.push(e[t]);var o=(r+r+i.length-1)/2;i.forEach(function(t){n[t.index]=o}),r+=i.length,a=t},a=0;a<e.length;a++)i(a);return n},e.pearsonFromArrays=function(t,e){for(var n=t.length,r=t.reduce(function(t,e){return t+e},0)/n,i=e.reduce(function(t,e){return t+e},0)/n,a=0,o=0,s=0,u=0;u<n;u++){var l=t[u]-r,c=e[u]-i;a+=l*c,o+=l*l,s+=c*c}var f=Math.sqrt(o*s);return 0===f?0:a/f},e.pearsonConfidenceInterval=function(t,e,n){if(void 0===n&&(n=.95),Math.abs(t)>=1)return{lower:t,upper:t};var r=.5*Math.log((1+t)/(1-t)),i=1/Math.sqrt(e-3),a=this.normalInverse(1-(1-n)/2)*i,o=r-a,s=r+a;return{lower:(Math.exp(2*o)-1)/(Math.exp(2*o)+1),upper:(Math.exp(2*s)-1)/(Math.exp(2*s)+1)}},e.findStrongCorrelations=function(t,e,n){void 0===n&&(n=.7);for(var r=[],i=Object.keys(t),a=0;a<i.length;a++)for(var o=a+1;o<i.length;o++){var s=i[a],u=i[o],l=t[s][u],c=e[s][u];Math.abs(l)>=n&&c<.05&&r.push({variable1:s,variable2:u,correlation:l,pValue:c,strength:this.getCorrelationStrength(Math.abs(l))})}return r.sort(function(t,e){return Math.abs(e.correlation)-Math.abs(t.correlation)})},e.summarizeCorrelationMatrix=function(t,e,n){for(var r=0,i=0,a=0,o=0,s=0,u=0,l=0;l<n.length;l++)for(var c=l+1;c<n.length;c++){var f=n[l],h=n[c],d=t[f][h],p=e[f][h];isNaN(d)||(r++,p<.05&&i++,d>.7&&a++,d<-.7&&o++,s=Math.max(s,d),u=Math.min(u,d))}return{totalPairs:r,significantPairs:i,strongPositiveCorrelations:a,strongNegativeCorrelations:o,maxCorrelation:s,minCorrelation:u,averageAbsoluteCorrelation:this.calculateAverageAbsoluteCorrelation(t,n)}},e.calculateAverageAbsoluteCorrelation=function(t,e){for(var n=0,r=0,i=0;i<e.length;i++)for(var a=i+1;a<e.length;a++){var o=t[e[i]][e[a]];isNaN(o)||(n+=Math.abs(o),r++)}return r>0?n/r:0},e.getCorrelationStrength=function(t){return t>=.9?"Very Strong":t>=.7?"Strong":t>=.5?"Moderate":t>=.3?"Weak":"Very Weak"},e.interpretCorrelation=function(t,e,n){void 0===n&&(n="Pearson");var r=e<.05?"significant":"not significant";return n+" correlation: "+this.getCorrelationStrength(Math.abs(t))+" "+(t>0?"positive":"negative")+" relationship (r = "+t.toFixed(4)+", p = "+e.toFixed(4)+", "+r+")"},e.tCDF=function(t,e){return 1-.5*this.incompleteBeta(e/2,.5,e/(t*t+e))},e.normalCDF=function(t){return.5*(1+this.erf(t/Math.sqrt(2)))},e.normalInverse=function(t){if(t<=0||t>=1)throw new Error("p must be between 0 and 1");var e=[-39.69683028665376,220.9460984245205,-275.9285104469687,138.357751867269,-30.66479806614716,2.506628277459239],n=[-54.47609879822406,161.5858368580409,-155.6989798598866,66.80131188771972,-13.28068155288572,1];if(t>.5)return-this.normalInverse(1-t);for(var r=Math.sqrt(-2*Math.log(t)),i=e[5],a=n[5],o=4;o>=0;o--)i=i*r+e[o],a=a*r+n[o];return i/a},e.erf=function(t){var e=t<0?-1:1,n=1/(1+.3275911*(t=Math.abs(t)));return e*(1-((((1.061405429*n-1.453152027)*n+1.421413741)*n-.284496736)*n+.254829592)*n*Math.exp(-t*t))},e.incompleteBeta=function(t,e,n){if(n<=0)return 0;if(n>=1)return 1;var r=Math.exp(this.logGamma(t+e)-this.logGamma(t)-this.logGamma(e)+t*Math.log(n)+e*Math.log(1-n));return n<(t+1)/(t+e+2)?r*this.continuedFractionBeta(t,e,n)/t:1-r*this.continuedFractionBeta(e,t,1-n)/e},e.continuedFractionBeta=function(t,e,n){var r=t+e,i=t+1,a=t-1,o=1,s=1-r*n/i;Math.abs(s)<1e-30&&(s=1e-30);for(var u=s=1/s,l=1;l<=100;l++){var c=2*l,f=l*(e-l)*n/((a+c)*(t+c));s=1+f*s,Math.abs(s)<1e-30&&(s=1e-30),o=1+f/o,Math.abs(o)<1e-30&&(o=1e-30),u*=(s=1/s)*o,s=1+(f=-(t+l)*(r+l)*n/((t+c)*(i+c)))*s,Math.abs(s)<1e-30&&(s=1e-30),o=1+f/o,Math.abs(o)<1e-30&&(o=1e-30);var h=(s=1/s)*o;if(u*=h,Math.abs(h-1)<1e-12)break}return u},e.logGamma=function(t){var e=[76.18009172947146,-86.50532032941678,24.01409824083091,-1.231739572450155,.001208650973866179,-5395239384953e-18],n=1.000000000190015,r=t,i=t,a=t+5.5;a-=(t+.5)*Math.log(a);for(var o=0;o<6;o++)n+=e[o]/++i;return-a+Math.log(2.5066282746310007*n/r)},t}(),M=/*#__PURE__*/function(){function t(){}var e=t.prototype;return e.linear=function(t,e){if(!Array.isArray(t)||!Array.isArray(e))throw new Error("Both inputs must be arrays");if(t.length!==e.length)throw new Error("Arrays must have the same length");for(var n=[],r=0;r<t.length;r++)"number"==typeof t[r]&&"number"==typeof e[r]&&!isNaN(t[r])&&!isNaN(e[r])&&isFinite(t[r])&&isFinite(e[r])&&n.push({x:t[r],y:e[r]});if(n.length<3)throw new Error("Need at least 3 valid paired observations");for(var i=n.length,a=n.map(function(t){return t.x}),o=n.map(function(t){return t.y}),s=a.reduce(function(t,e){return t+e},0)/i,u=o.reduce(function(t,e){return t+e},0)/i,l=0,c=0,f=0;f<i;f++){var h=a[f]-s;l+=h*(o[f]-u),c+=h*h}if(0===c)throw new Error("Cannot perform regression: X values have zero variance");var d=l/c,p=u-d*s,m=a.map(function(t){return p+d*t}),g=o.map(function(t,e){return t-m[e]}),v=g.reduce(function(t,e){return t+e*e},0),y=o.reduce(function(t,e){return t+Math.pow(e-u,2)},0),b=y-v,w=0===y?1:b/y,M=1-v/(i-2)/(y/(i-1)),x=v/(i-2),S=Math.sqrt(x),N=Math.sqrt(x/c),E=Math.sqrt(x*(1/i+s*s/c)),A=d/N,C=p/E,q=i-2,k=2*(1-this.tCDF(Math.abs(A),q)),_=2*(1-this.tCDF(Math.abs(C),q)),F=b/1/(v/q),T=1-this.fCDF(F,1,q);return{slope:d,intercept:p,rSquared:w,adjustedRSquared:M,correlation:Math.sqrt(w)*Math.sign(d),standardErrorSlope:N,standardErrorIntercept:E,tStatSlope:A,tStatIntercept:C,pValueSlope:k,pValueIntercept:_,fStatistic:F,pValueModel:T,degreesOfFreedom:q,mse:x,rmse:S,residuals:g,predicted:m,sampleSize:i,equation:"y = "+p.toFixed(4)+" + "+d.toFixed(4)+"x",residualAnalysis:this.analyzeResiduals(g,m)}},e.multiple=function(t,e,n){var r=this;if(!t||!t.data||!Array.isArray(t.data))throw new Error("Invalid dataset format");if(!t.headers.includes(e))throw new Error("Dependent variable '"+e+"' not found in dataset");var i=n.filter(function(e){return!t.headers.includes(e)});if(i.length>0)throw new Error("Independent variables not found: "+i.join(", "));var a=t.data.filter(function(t){return[e].concat(n).every(function(e){var n=t[e];return"number"==typeof n&&!isNaN(n)&&isFinite(n)})});if(a.length<n.length+2)throw new Error("Need at least "+(n.length+2)+" valid observations");var o=a.length,s=n.length,u=a.map(function(t){return t[e]}),l=a.map(function(t){return[1].concat(n.map(function(e){return t[e]}))}),c=this.transpose(l),f=this.matrixMultiply(c,l),h=this.matrixInverse(f),d=this.matrixVectorMultiply(c,u),p=this.matrixVectorMultiply(h,d),m=l.map(function(t){return p.reduce(function(e,n,r){return e+n*t[r]},0)}),g=u.map(function(t,e){return t-m[e]}),v=u.reduce(function(t,e){return t+e},0)/o,y=g.reduce(function(t,e){return t+e*e},0),b=u.reduce(function(t,e){return t+Math.pow(e-v,2)},0),w=b-y,M=0===b?1:w/b,x=1-y/(o-s-1)/(b/(o-1)),S=y/(o-s-1),N=Math.sqrt(S),E=p.map(function(t,e){return Math.sqrt(S*h[e][e])}),A=p.map(function(t,e){return t/E[e]}),C=A.map(function(t){return 2*(1-r.tCDF(Math.abs(t),o-s-1))}),q=w/s/(y/(o-s-1)),k=1-this.fCDF(q,s,o-s-1),_=p.map(function(t,e){return{variable:0===e?"Intercept":n[e-1],coefficient:t,standardError:E[e],tStatistic:A[e],pValue:C[e],significant:C[e]<.05}});return{coefficients:_,intercept:p[0],rSquared:M,adjustedRSquared:x,fStatistic:q,pValueModel:k,mse:S,rmse:N,residuals:g,predicted:m,sampleSize:o,degreesOfFreedom:o-s-1,dependentVariable:e,independentVariables:n,equation:this.buildEquation(_),residualAnalysis:this.analyzeResiduals(g,m)}},e.polynomial=function(t,e,n){var r=this;if(void 0===n&&(n=2),!Array.isArray(t)||!Array.isArray(e))throw new Error("Both inputs must be arrays");if(t.length!==e.length)throw new Error("Arrays must have the same length");if(n<1||n>10)throw new Error("Degree must be between 1 and 10");for(var i=[],a=0;a<t.length;a++)"number"==typeof t[a]&&"number"==typeof e[a]&&!isNaN(t[a])&&!isNaN(e[a])&&isFinite(t[a])&&isFinite(e[a])&&i.push({x:t[a],y:e[a]});var o=i.length;if(o<n+2)throw new Error("Need at least "+(n+2)+" valid observations for degree "+n+" polynomial");var s=i.map(function(t){return t.x}),u=i.map(function(t){return t.y}),l=s.map(function(t){for(var e=[1],r=1;r<=n;r++)e.push(Math.pow(t,r));return e}),c=this.transpose(l),f=this.matrixMultiply(c,l),h=this.matrixInverse(f),d=this.matrixVectorMultiply(c,u),p=this.matrixVectorMultiply(h,d),m=l.map(function(t){return p.reduce(function(e,n,r){return e+n*t[r]},0)}),g=u.map(function(t,e){return t-m[e]}),v=u.reduce(function(t,e){return t+e},0)/o,y=g.reduce(function(t,e){return t+e*e},0),b=u.reduce(function(t,e){return t+Math.pow(e-v,2)},0),w=0===b?1:(b-y)/b,M=1-y/(o-n-1)/(b/(o-1)),x=y/(o-n-1),S=Math.sqrt(x),N=p.map(function(t,e){return Math.sqrt(x*h[e][e])}),E=p.map(function(t,e){return t/N[e]}),A=E.map(function(t){return 2*(1-r.tCDF(Math.abs(t),o-n-1))});return{coefficients:p,degree:n,rSquared:w,adjustedRSquared:M,mse:x,rmse:S,residuals:g,predicted:m,sampleSize:o,equation:this.buildPolynomialEquation(p),residualAnalysis:this.analyzeResiduals(g,m),standardErrors:N,tStatistics:E,pValues:A}},e.logistic=function(t,e,n,r){var i=this;if(void 0===n&&(n=100),void 0===r&&(r=1e-6),!Array.isArray(t)||!Array.isArray(e))throw new Error("Both inputs must be arrays");for(var a=[],o=0;o<t.length;o++)"number"!=typeof t[o]||"number"!=typeof e[o]||isNaN(t[o])||isNaN(e[o])||!isFinite(t[o])||!isFinite(e[o])||0!==e[o]&&1!==e[o]||a.push({x:t[o],y:e[o]});if(a.length<10)throw new Error("Need at least 10 valid observations for logistic regression");for(var s=a.map(function(t){return t.x}),u=a.map(function(t){return t.y}),l=a.length,c=0,f=0,h=0;h<n;h++){for(var d=s.map(function(t){return i.sigmoid(c+f*t)}),p=d.map(function(t){return t*(1-t)}),m=0,g=0,v=0,y=0,b=0,w=0;w<l;w++){var M=u[w]-d[w];m+=M,g+=M*s[w],v+=p[w],y+=p[w]*s[w],b+=p[w]*s[w]*s[w]}var x=v*b-y*y;if(Math.abs(x)<1e-10)throw new Error("Information matrix is singular");var S=(b*m-y*g)/x,N=(v*g-y*m)/x;if(c+=S,f+=N,Math.abs(S)<r&&Math.abs(N)<r)break}var E=s.map(function(t){return i.sigmoid(c+f*t)}),A=E.map(function(t){return t>=.5?1:0}),C=u.reduce(function(t,e,n){var r=E[n];return t+e*Math.log(r+1e-15)+(1-e)*Math.log(1-r+1e-15)},0),q=1-C/this.calculateNullLogLikelihood(u),k=A.reduce(function(t,e,n){return t+(e===u[n]?1:0)},0)/l;return{intercept:c,slope:f,probabilities:E,predicted:A,logLikelihood:C,mcFaddenR2:q,accuracy:k,sampleSize:l,equation:"p = 1 / (1 + exp(-("+c.toFixed(4)+" + "+f.toFixed(4)+"x)))",confusionMatrix:this.calculateConfusionMatrix(u,A)}},e.predict=function(t,e){if(!t||"object"!=typeof t)throw new Error("Invalid model object");if(t.coefficients&&Array.isArray(t.coefficients)){if(Array.isArray(e[0]))return e.map(function(e){var n=[1].concat(e);return t.coefficients.reduce(function(t,e,r){return t+e.coefficient*n[r]},0)});var n=[1].concat(e);return t.coefficients.reduce(function(t,e,r){return t+e.coefficient*n[r]},0)}if(void 0!==t.slope&&void 0!==t.intercept)return Array.isArray(e)?e.map(function(e){return t.intercept+t.slope*e}):t.intercept+t.slope*e;if(t.coefficients&&void 0!==t.degree){if(Array.isArray(e))return e.map(function(e){for(var n=t.coefficients[0],r=1;r<=t.degree;r++)n+=t.coefficients[r]*Math.pow(e,r);return n});for(var r=t.coefficients[0],i=1;i<=t.degree;i++)r+=t.coefficients[i]*Math.pow(e,i);return r}throw new Error("Unknown model type")},e.analyzeResiduals=function(t,e){var n=t.length,r=t.reduce(function(t,e){return t+e},0)/n,i=Math.sqrt(t.reduce(function(t,e){return t+Math.pow(e-r,2)},0)/(n-1)),a=t.map(function(t){return t/i}),o=a.map(function(t,e){return{index:e,value:t}}).filter(function(t){return Math.abs(t.value)>2}),s=this.calculateDurbinWatson(t);return{mean:r,standardDeviation:i,standardizedResiduals:a,outliers:o,durbinWatson:s,normalityTest:this.testResidualNormality(t)}},e.calculateDurbinWatson=function(t){for(var e=0,n=0,r=1;r<t.length;r++)e+=Math.pow(t[r]-t[r-1],2);for(var i=0;i<t.length;i++)n+=Math.pow(t[i],2);return e/n},e.testResidualNormality=function(t){var e=t.length,n=t.reduce(function(t,e){return t+e},0)/e,r=t.reduce(function(t,e){return t+Math.pow(e-n,2)},0)/(e-1),i=Math.sqrt(r);if(0===i)return{isNormal:!0,pValue:1};var a=t.reduce(function(t,e){return t+Math.pow((e-n)/i,3)},0)/e,o=t.reduce(function(t,e){return t+Math.pow((e-n)/i,4)},0)/e-3,s=e/6*(Math.pow(a,2)+Math.pow(o,2)/4),u=1-this.chiSquareCDF(s,2);return{jarqueBeraStatistic:s,pValue:u,isNormal:u>.05,skewness:a,kurtosis:o}},e.buildEquation=function(t){return"y = "+t.map(function(t){return"Intercept"===t.variable?t.coefficient.toFixed(4):(t.coefficient>=0?"+":"")+t.coefficient.toFixed(4)+"*"+t.variable}).join(" ")},e.buildPolynomialEquation=function(t){return"y = "+t.map(function(t,e){return 0===e?t.toFixed(4):1===e?(t>=0?"+":"")+t.toFixed(4)+"*x":(t>=0?"+":"")+t.toFixed(4)+"*x^"+e}).join(" ")},e.sigmoid=function(t){return 1/(1+Math.exp(-Math.max(-500,Math.min(500,t))))},e.calculateNullLogLikelihood=function(t){var e=t.reduce(function(t,e){return t+e},0)/t.length;return t.reduce(function(t,n){return t+n*Math.log(e+1e-15)+(1-n)*Math.log(1-e+1e-15)},0)},e.calculateConfusionMatrix=function(t,e){for(var n=0,r=0,i=0,a=0,o=0;o<t.length;o++)1===t[o]&&1===e[o]?n++:0===t[o]&&1===e[o]?r++:0===t[o]&&0===e[o]?i++:1===t[o]&&0===e[o]&&a++;var s=n+r>0?n/(n+r):0,u=n+a>0?n/(n+a):0;return{truePositive:n,falsePositive:r,trueNegative:i,falseNegative:a,precision:s,recall:u,specificity:i+r>0?i/(i+r):0,f1Score:s+u>0?s*u*2/(s+u):0}},e.matrixMultiply=function(t,e){for(var n=t.length,r=t[0].length,i=e[0].length,a=Array(n).fill().map(function(){return Array(i).fill(0)}),o=0;o<n;o++)for(var s=0;s<i;s++)for(var u=0;u<r;u++)a[o][s]+=t[o][u]*e[u][s];return a},e.matrixVectorMultiply=function(t,e){return t.map(function(t){return t.reduce(function(t,n,r){return t+n*e[r]},0)})},e.transpose=function(t){return t[0].map(function(e,n){return t.map(function(t){return t[n]})})},e.matrixInverse=function(t){for(var e=t.length,n=Array(e).fill().map(function(t,n){return Array(e).fill().map(function(t,e){return n===e?1:0})}),r=t.map(function(t,e){return[].concat(t,n[e])}),i=0;i<e;i++){for(var a=i,o=i+1;o<e;o++)Math.abs(r[o][i])>Math.abs(r[a][i])&&(a=o);var s=[r[a],r[i]];r[i]=s[0],r[a]=s[1];var u=r[i][i];if(Math.abs(u)<1e-10)throw new Error("Matrix is singular and cannot be inverted");for(var l=0;l<2*e;l++)r[i][l]/=u;for(var c=0;c<e;c++)if(c!==i)for(var f=r[c][i],h=0;h<2*e;h++)r[c][h]-=f*r[i][h]}return r.map(function(t){return t.slice(e)})},e.tCDF=function(t,e){return e<=0?.5:1-.5*this.incompleteBeta(e/2,.5,e/(t*t+e))},e.fCDF=function(t,e,n){return t<=0?0:1-this.incompleteBeta(n/2,e/2,n/(n+e*t))},e.chiSquareCDF=function(t,e){return t<=0?0:this.incompleteGamma(e/2,t/2)/this.gamma(e/2)},e.incompleteBeta=function(t,e,n){if(n<=0)return 0;if(n>=1)return 1;for(var r=0,i=1,a=0;a<100&&(a>0&&(i*=n*(t+a-1)/a),r+=i/(t+a),!(Math.abs(i)<1e-10));a++);return r*Math.pow(n,t)*Math.pow(1-n,e)},e.incompleteGamma=function(t,e){if(e<=0)return 0;for(var n=1,r=1,i=1;i<100&&(n+=r*=e/(t+i-1),!(Math.abs(r)<1e-12));i++);return Math.pow(e,t)*Math.exp(-e)*n},e.gamma=function(t){if(t<.5)return Math.PI/(Math.sin(Math.PI*t)*this.gamma(1-t));t-=1;for(var e=.9999999999998099,n=[676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7],r=0;r<n.length;r++)e+=n[r]/(t+r+1);var i=t+n.length-.5;return Math.sqrt(2*Math.PI)*Math.pow(i,t+.5)*Math.exp(-i)*e},t}(),x=/*#__PURE__*/function(){function t(){}var e=t.prototype;return e.summary=function(t){if(!t||!t.data||!t.headers)throw new Error("Invalid dataset format");var e=this.getBasicInfo(t),n=this.analyzeColumns(t),r=this.assessDataQuality(t),i=this.analyzeDistributions(t),a=this.analyzeRelationships(t),o=this.generateKeyInsights(t,n,a);return{title:"Statistical Summary Report",generatedAt:(new Date).toISOString(),basicInfo:e,columnAnalysis:n,dataQuality:r,distributions:i,relationships:a,keyInsights:o,recommendations:this.generateRecommendations(r,n,a)}},e.getBasicInfo=function(t){return{totalRows:t.length,totalColumns:t.columns,headers:t.headers,memoryFootprint:this.estimateMemoryFootprint(t),dataTypes:this.getDataTypes(t)}},e.analyzeColumns=function(t){var e=this,r={};return t.headers.forEach(function(i){var a=t.data.map(function(t){return t[i]}),o=e.inferColumnType(a);r[i]=n({type:o,totalCount:a.length,validCount:e.getValidCount(a),nullCount:e.getNullCount(a),uniqueCount:e.getUniqueCount(a),nullPercentage:e.getNullPercentage(a)},e.getTypeSpecificAnalysis(a,o))}),r},e.getTypeSpecificAnalysis=function(t,e){var n=t.filter(function(t){return null!=t});if("numeric"===e){var r=n.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});return 0===r.length?{}:{min:Math.min.apply(Math,r),max:Math.max.apply(Math,r),mean:this.calculateMean(r),median:this.calculateMedian(r),standardDeviation:this.calculateStandardDeviation(r),variance:this.calculateVariance(r),skewness:this.calculateSkewness(r),kurtosis:this.calculateKurtosis(r),quartiles:this.calculateQuartiles(r),outliers:this.detectOutliers(r),distribution:this.classifyDistribution(r)}}if("categorical"===e){var i=this.calculateFrequencyTable(n);return{categories:i,mostFrequent:this.getMostFrequent(i),leastFrequent:this.getLeastFrequent(i),entropy:this.calculateEntropy(i),concentration:this.calculateConcentration(i)}}if("datetime"===e){var a=n.filter(function(t){return!isNaN(new Date(t).getTime())});if(0===a.length)return{};var o=a.map(function(t){return new Date(t).getTime()});return{earliest:new Date(Math.min.apply(Math,o)).toISOString(),latest:new Date(Math.max.apply(Math,o)).toISOString(),span:Math.max.apply(Math,o)-Math.min.apply(Math,o),frequency:this.analyzeDateFrequency(a)}}return{}},e.assessDataQuality=function(t){var e,n=[],r=this.assessCompleteness(t),i=this.assessConsistency(t),a=this.assessUniqueness(t),o=this.assessValidity(t);return e=(r+i+a+o)/4,r<80&&n.push({type:"completeness",severity:r<50?"high":"medium",description:(100-r).toFixed(1)+"% of data is missing"}),i<80&&n.push({type:"consistency",severity:i<50?"high":"medium",description:"Data consistency issues detected"}),{overallScore:e,completenessScore:r,consistencyScore:i,uniquenessScore:a,validityScore:o,issues:n,recommendation:this.getQualityRecommendation(e)}},e.analyzeDistributions=function(t){var e=this,n={};return t.headers.forEach(function(r){var i=t.data.map(function(t){return t[r]}).filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)});i.length>5&&(n[r]={type:e.classifyDistribution(i),normalityTest:e.testNormality(i),histogram:e.createHistogram(i),descriptiveStats:e.getDescriptiveStats(i)})}),n},e.analyzeRelationships=function(t){var e=this,n=t.headers.filter(function(e){var n=t.data.map(function(t){return t[e]});return n.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}).length>.5*n.length});if(n.length<2)return{correlations:{},strongRelationships:[]};for(var r={},i=[],a=function(a){r[n[a]]={};for(var o=function(o){if(a===o)r[n[a]][n[o]]=1;else{var s=t.data.map(function(t){return t[n[a]]}),u=t.data.map(function(t){return t[n[o]]}),l=e.calculatePearsonCorrelation(s,u);r[n[a]][n[o]]=l,Math.abs(l)>.7&&a<o&&i.push({variable1:n[a],variable2:n[o],correlation:l,strength:e.getCorrelationStrength(Math.abs(l)),direction:l>0?"positive":"negative"})}},s=0;s<n.length;s++)o(s)},o=0;o<n.length;o++)a(o);return{correlations:r,strongRelationships:i,averageCorrelation:this.calculateAverageCorrelation(r,n)}},e.generateKeyInsights=function(t,e,n){var r=[];return r.push.apply(r,this.generateDataVolumeInsights(t)),r.push.apply(r,this.generateColumnInsights(e)),r.push.apply(r,this.generateRelationshipInsights(n)),r.push.apply(r,this.generateDistributionInsights(e)),r.push.apply(r,this.generateQualityInsights(t,e)),r.sort(function(t,e){return e.importance-t.importance}).slice(0,10)},e.generateDataVolumeInsights=function(t){var e=[];return t.length>1e4?e.push({type:"volume",title:"Large Dataset Detected",description:"Dataset contains "+t.length.toLocaleString()+" rows, which is suitable for robust statistical analysis.",importance:7,actionable:!1}):t.length<30&&e.push({type:"volume",title:"Small Sample Size Warning",description:"Dataset has only "+t.length+" rows. Statistical tests may lack power.",importance:8,actionable:!0,recommendation:"Consider collecting more data for reliable statistical inference."}),t.columns>50&&e.push({type:"dimensionality",title:"High-Dimensional Dataset",description:"Dataset has "+t.columns+" columns, which may benefit from dimensionality reduction.",importance:6,actionable:!0,recommendation:"Consider feature selection or PCA to reduce dimensionality."}),e},e.generateColumnInsights=function(t){var e=[],n=Object.keys(t),r=n.filter(function(e){return t[e].nullPercentage>25});r.length>0&&e.push({type:"data_quality",title:"High Missing Data Detected",description:"Columns "+r.join(", ")+" have >25% missing values.",importance:9,actionable:!0,recommendation:"Consider imputation strategies or removing these columns."});var i=n.filter(function(e){var n=t[e];return n.skewness&&Math.abs(n.skewness)>2});i.length>0&&e.push({type:"distribution",title:"Highly Skewed Variables Found",description:"Columns "+i.join(", ")+" show extreme skewness.",importance:7,actionable:!0,recommendation:"Consider log transformation or other normalization techniques."});var a=n.filter(function(e){return 1===t[e].uniqueCount});return a.length>0&&e.push({type:"data_quality",title:"Constant Variables Detected",description:"Columns "+a.join(", ")+" have no variation.",importance:8,actionable:!0,recommendation:"Remove these columns as they provide no information."}),e},e.generateRelationshipInsights=function(t){var e=[];if(t.strongRelationships.length>0){var n=t.strongRelationships[0];e.push({type:"correlation",title:"Strong Correlation Found",description:n.variable1+" and "+n.variable2+" have a "+n.strength.toLowerCase()+" "+n.direction+" correlation (r = "+n.correlation.toFixed(3)+").",importance:8,actionable:!0,recommendation:"Investigate this relationship further with regression analysis."})}return t.strongRelationships.filter(function(t){return Math.abs(t.correlation)>.9}).length>0&&e.push({type:"multicollinearity",title:"Potential Multicollinearity Detected",description:"Very high correlations found between some variables.",importance:7,actionable:!0,recommendation:"Consider removing redundant variables before modeling."}),t.averageCorrelation>.5&&e.push({type:"correlation",title:"Generally High Inter-Variable Correlations",description:"Average correlation is "+t.averageCorrelation.toFixed(3)+", indicating related variables.",importance:6,actionable:!1}),e},e.generateDistributionInsights=function(t){var e=[],n=Object.keys(t).filter(function(e){return"numeric"===t[e].type}),r=n.filter(function(e){var n=t[e];return"normal"===n.distribution||Math.abs(n.skewness||0)<.5&&Math.abs(n.kurtosis||0)<.5});r.length>.7*n.length&&e.push({type:"distribution",title:"Most Variables Normally Distributed",description:r.length+" out of "+n.length+" numeric variables appear normally distributed.",importance:6,actionable:!1});var i=n.filter(function(e){var n=t[e];return n.outliers&&n.outliers.count>0});if(i.length>0){var a=i.reduce(function(e,n){return e+t[n].outliers.count},0);e.push({type:"outliers",title:"Outliers Detected",description:"Found "+a+" outliers across "+i.length+" variables.",importance:7,actionable:!0,recommendation:"Investigate outliers to determine if they represent errors or genuine extreme values."})}return e},e.generateQualityInsights=function(t,e){var n=[],r=Object.keys(e),i=this.countDuplicateRows(t);i>0&&n.push({type:"data_quality",title:"Duplicate Rows Found",description:"Dataset contains "+i+" duplicate rows.",importance:8,actionable:!0,recommendation:"Remove duplicate rows to avoid bias in analysis."});var a=r.reduce(function(t,n){return t+e[n].nullCount},0)/(t.length*t.columns)*100;return a>10&&n.push({type:"data_quality",title:"Significant Missing Data",description:a.toFixed(1)+"% of all data points are missing.",importance:9,actionable:!0,recommendation:"Develop a comprehensive missing data strategy."}),n},e.generateRecommendations=function(t,e,n){var r=[];return t.overallScore<70&&r.push({priority:"high",category:"data_cleaning",title:"Improve Data Quality",description:"Address missing values, outliers, and inconsistencies before analysis.",steps:["Handle missing values through imputation or removal","Investigate and address outliers","Standardize data formats and categories","Validate data integrity"]}),n.strongRelationships.length>0&&r.push({priority:"medium",category:"analysis",title:"Explore Strong Relationships",description:"Investigate detected correlations with deeper analysis.",steps:["Perform regression analysis on highly correlated variables","Create visualizations to understand relationships","Test for causality where appropriate"]}),Object.keys(e).filter(function(t){return"numeric"===e[t].type}).length>2&&r.push({priority:"low",category:"modeling",title:"Consider Advanced Analytics",description:"Dataset is suitable for machine learning approaches.",steps:["Perform feature selection","Try different modeling approaches","Validate models with cross-validation","Interpret model results"]}),r},e.inferColumnType=function(t){var e=t.filter(function(t){return null!=t});if(0===e.length)return"unknown";var n=e.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}).length,r=e.filter(function(t){if("string"==typeof t){var e=new Date(t);return!isNaN(e.getTime())}return!1}).length;return n/e.length>.8?"numeric":r/e.length>.8?"datetime":"categorical"},e.getValidCount=function(t){return t.filter(function(t){return null!=t}).length},e.getNullCount=function(t){return t.filter(function(t){return null==t}).length},e.getUniqueCount=function(t){var e=t.filter(function(t){return null!=t});return new Set(e).size},e.getNullPercentage=function(t){return this.getNullCount(t)/t.length*100},e.calculateMean=function(t){return t.reduce(function(t,e){return t+e},0)/t.length},e.calculateMedian=function(t){var e=[].concat(t).sort(function(t,e){return t-e}),n=Math.floor(e.length/2);return e.length%2==0?(e[n-1]+e[n])/2:e[n]},e.calculateStandardDeviation=function(t){var e=this.calculateMean(t),n=t.reduce(function(t,n){return t+Math.pow(n-e,2)},0)/(t.length-1);return Math.sqrt(n)},e.calculateVariance=function(t){var e=this.calculateMean(t);return t.reduce(function(t,n){return t+Math.pow(n-e,2)},0)/(t.length-1)},e.calculateSkewness=function(t){var e=t.length,n=this.calculateMean(t),r=this.calculateStandardDeviation(t);return 0===r?0:e/((e-1)*(e-2))*t.reduce(function(t,e){return t+Math.pow((e-n)/r,3)},0)},e.calculateKurtosis=function(t){var e=t.length,n=this.calculateMean(t),r=this.calculateStandardDeviation(t);return 0===r?-3:e*(e+1)/((e-1)*(e-2)*(e-3))*t.reduce(function(t,e){return t+Math.pow((e-n)/r,4)},0)-3*Math.pow(e-1,2)/((e-2)*(e-3))},e.calculateQuartiles=function(t){var e=[].concat(t).sort(function(t,e){return t-e}),n=e.length,r=Math.floor(.25*n),i=Math.floor(.5*n),a=Math.floor(.75*n);return{q1:e[r],q2:e[i],q3:e[a],iqr:e[a]-e[r]}},e.detectOutliers=function(t){var e=this.calculateQuartiles(t),n=e.q1-1.5*e.iqr,r=e.q3+1.5*e.iqr,i=t.filter(function(t){return t<n||t>r});return{count:i.length,percentage:i.length/t.length*100,values:i,lowerBound:n,upperBound:r}},e.classifyDistribution=function(t){var e=this.calculateSkewness(t),n=this.calculateKurtosis(t);return Math.abs(e)<.5&&Math.abs(n)<.5?"normal":e>1?"right_skewed":e<-1?"left_skewed":n>1?"heavy_tailed":n<-1?"light_tailed":"unknown"},e.calculateFrequencyTable=function(t){var e={};t.forEach(function(t){var n=String(t);e[n]=(e[n]||0)+1});var n=t.length;return Object.entries(e).map(function(t){var e=t[1];return{value:t[0],count:e,percentage:e/n*100}}).sort(function(t,e){return e.count-t.count})},e.getMostFrequent=function(t){return t[0]||null},e.getLeastFrequent=function(t){return t[t.length-1]||null},e.calculateEntropy=function(t){var e=t.reduce(function(t,e){return t+e.count},0);return t.reduce(function(t,n){var r=n.count/e;return t-r*Math.log2(r)},0)},e.calculateConcentration=function(t){var e=t.reduce(function(t,e){return t+e.count},0),n=t[0];return n?n.count/e*100:0},e.analyzeDateFrequency=function(t){var e=t.map(function(t){return new Date(t).getTime()}),n=e.sort(function(t,e){return t-e});if(n.length<2)return"insufficient_data";for(var r=[],i=1;i<n.length;i++)r.push(n[i]-n[i-1]);var a=r.reduce(function(t,e){return t+e},0)/r.length;return a<864e5?"sub_daily":a<6048e5?"daily":a<2592e6?"weekly":a<31536e6?"monthly":"yearly"},e.assessCompleteness=function(t){var e=t.length*t.columns,n=0;return t.data.forEach(function(e){t.headers.forEach(function(t){null!=e[t]&&n++})}),n/e*100},e.assessConsistency=function(t){var e=100;return t.headers.forEach(function(n){var r=t.data.map(function(t){return t[n]});new Set(r.filter(function(t){return null!=t}).map(function(t){return typeof t})).size>1&&(e-=10)}),Math.max(0,e)},e.assessUniqueness=function(t){var e=this.countDuplicateRows(t);return Math.max(0,100-e/t.length*100)},e.assessValidity=function(t){var e=100,n=0,r=0;return t.data.forEach(function(e){t.headers.forEach(function(t){var i=e[t];null!=i&&(n++,"number"!=typeof i||isFinite(i)||r++)})}),n>0&&(e=Math.max(0,100-r/n*100)),e},e.getQualityRecommendation=function(t){return t>=90?"Excellent data quality - ready for analysis":t>=80?"Good data quality - minor cleaning recommended":t>=70?"Fair data quality - significant cleaning needed":t>=60?"Poor data quality - extensive preprocessing required":"Very poor data quality - major data work needed before analysis"},e.testNormality=function(t){if(t.length<8)return{test:"insufficient_data"};this.calculateMean(t),this.calculateStandardDeviation(t);var e=this.calculateSkewness(t),n=this.calculateKurtosis(t),r=t.length/6*(Math.pow(e,2)+Math.pow(n,2)/4),i=1-this.chiSquareCDF(r,2);return{test:"jarque_bera",statistic:r,pValue:i,isNormal:i>.05,skewness:e,kurtosis:n}},e.createHistogram=function(t,e){void 0===e&&(e=10);var n=Math.min.apply(Math,t),r=(Math.max.apply(Math,t)-n)/e,i=Array(e).fill(0);return t.forEach(function(t){var a=Math.floor((t-n)/r);a===e&&(a=e-1),i[a]++}),i.map(function(e,i){return{binStart:n+i*r,binEnd:n+(i+1)*r,count:e,percentage:e/t.length*100}})},e.getDescriptiveStats=function(t){return{count:t.length,mean:this.calculateMean(t),median:this.calculateMedian(t),min:Math.min.apply(Math,t),max:Math.max.apply(Math,t),std:this.calculateStandardDeviation(t),var:this.calculateVariance(t),skewness:this.calculateSkewness(t),kurtosis:this.calculateKurtosis(t)}},e.calculatePearsonCorrelation=function(t,e){for(var n=[],r=0;r<t.length;r++)"number"==typeof t[r]&&"number"==typeof e[r]&&!isNaN(t[r])&&!isNaN(e[r])&&isFinite(t[r])&&isFinite(e[r])&&n.push({x:t[r],y:e[r]});if(n.length<3)return 0;for(var i=n.length,a=n.map(function(t){return t.x}),o=n.map(function(t){return t.y}),s=a.reduce(function(t,e){return t+e},0)/i,u=o.reduce(function(t,e){return t+e},0)/i,l=0,c=0,f=0,h=0;h<i;h++){var d=a[h]-s,p=o[h]-u;l+=d*p,c+=d*d,f+=p*p}var m=Math.sqrt(c*f);return 0===m?0:l/m},e.getCorrelationStrength=function(t){return t>=.9?"Very Strong":t>=.7?"Strong":t>=.5?"Moderate":t>=.3?"Weak":"Very Weak"},e.calculateAverageCorrelation=function(t,e){for(var n=0,r=0,i=0;i<e.length;i++)for(var a=i+1;a<e.length;a++){var o=t[e[i]][e[a]];isNaN(o)||(n+=Math.abs(o),r++)}return r>0?n/r:0},e.countDuplicateRows=function(t){var e=new Set,n=0;return t.data.forEach(function(t){var r=JSON.stringify(t);e.has(r)?n++:e.add(r)}),n},e.getDataTypes=function(t){var e={};return t.headers.forEach(function(n){var r=t.data.map(function(t){return t[n]}).filter(function(t){return null!=t});if(0!==r.length){var i=new Set(r.map(function(t){return typeof t}));e[n]=1===i.size?Array.from(i)[0]:"mixed"}else e[n]="empty"}),e},e.estimateMemoryFootprint=function(t){var e=0;t.data.forEach(function(n){t.headers.forEach(function(t){var r=n[t];e+="string"==typeof r?2*r.length:"number"==typeof r?8:"boolean"==typeof r?1:8})});var n=e/1024,r=n/1024;return r>=1?r.toFixed(2)+" MB":n>=1?n.toFixed(2)+" KB":e+" bytes"},e.chiSquareCDF=function(t,e){return t<=0?0:this.incompleteGamma(e/2,t/2)/this.gamma(e/2)},e.incompleteGamma=function(t,e){if(e<=0)return 0;for(var n=1,r=1,i=1;i<100&&(n+=r*=e/(t+i-1),!(Math.abs(r)<1e-12));i++);return Math.pow(e,t)*Math.exp(-e)*n},e.gamma=function(t){var e=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7];if(t<.5)return Math.PI/(Math.sin(Math.PI*t)*this.gamma(1-t));t-=1;for(var n=e[0],r=1;r<e.length;r++)n+=e[r]/(t+r);var i=t+e.length-1.5;return Math.sqrt(2*Math.PI)*Math.pow(i,t+.5)*Math.exp(-i)*n},e.generateTextReport=function(t){var e="";return e+="STATISTICAL SUMMARY REPORT\n",e+="Generated: "+new Date(t.generatedAt).toLocaleString()+"\n",e+="=".repeat(50)+"\n\n",e+="BASIC INFORMATION\n",e+="-".repeat(20)+"\n",e+="Rows: "+t.basicInfo.totalRows.toLocaleString()+"\n",e+="Columns: "+t.basicInfo.totalColumns+"\n",e+="Memory: "+t.basicInfo.memoryFootprint+"\n\n",e+="DATA QUALITY\n",e+="-".repeat(20)+"\n",e+="Overall Score: "+t.dataQuality.overallScore.toFixed(1)+"/100\n",e+="Completeness: "+t.dataQuality.completenessScore.toFixed(1)+"%\n",e+="Consistency: "+t.dataQuality.consistencyScore.toFixed(1)+"%\n",e+=t.dataQuality.recommendation+"\n\n",t.keyInsights.length>0&&(e+="KEY INSIGHTS\n",e+="-".repeat(20)+"\n",t.keyInsights.slice(0,5).forEach(function(t,n){e+=n+1+". "+t.title+"\n",e+=" "+t.description+"\n",t.recommendation&&(e+=" ā "+t.recommendation+"\n"),e+="\n"})),t.relationships.strongRelationships.length>0&&(e+="STRONG RELATIONSHIPS\n",e+="-".repeat(20)+"\n",t.relationships.strongRelationships.slice(0,3).forEach(function(t){e+=t.variable1+" ā "+t.variable2+": "+t.correlation.toFixed(3)+" ("+t.strength+")\n"}),e+="\n"),t.recommendations.length>0&&(e+="RECOMMENDATIONS\n",e+="-".repeat(20)+"\n",t.recommendations.forEach(function(t,n){e+=n+1+". ["+t.priority.toUpperCase()+"] "+t.title+"\n",e+=" "+t.description+"\n",t.steps.forEach(function(t){e+=" ⢠"+t+"\n"}),e+="\n"})),e},e.exportSummary=function(t,e){switch(void 0===e&&(e="json"),e){case"json":return JSON.stringify(t,null,2);case"text":return this.generateTextReport(t);case"csv":return this.generateCSVReport(t);default:throw new Error("Unsupported export format: "+e)}},e.generateCSVReport=function(t){var e="Metric,Value\n";return e+="Total Rows,"+t.basicInfo.totalRows+"\n",e+="Total Columns,"+t.basicInfo.totalColumns+"\n",e+="Overall Quality Score,"+t.dataQuality.overallScore.toFixed(1)+"\n",e+="Completeness Score,"+t.dataQuality.completenessScore.toFixed(1)+"\n",e+="Consistency Score,"+t.dataQuality.consistencyScore.toFixed(1)+"\n",e+="Strong Relationships,"+t.relationships.strongRelationships.length+"\n",e+="Key Insights,"+t.keyInsights.length+"\n",t.relationships.strongRelationships.length>0&&(e+="\nVariable 1,Variable 2,Correlation,Strength\n",t.relationships.strongRelationships.forEach(function(t){e+=t.variable1+","+t.variable2+","+t.correlation.toFixed(4)+","+t.strength+"\n"})),e},t}(),S=/*#__PURE__*/function(){function t(){}var e=t.prototype;return e.analyze=function(t){if(!t||!t.data||!t.headers)throw new Error("Invalid dataset format");var e={trends:this.detectTrends(t),seasonality:this.detectSeasonality(t),outliers:this.detectOutliers(t),correlations:this.detectCorrelationPatterns(t),distributions:this.detectDistributionPatterns(t),clustering:this.detectSimpleClusters(t),temporal:this.detectTemporalPatterns(t)};return{timestamp:(new Date).toISOString(),datasetSize:t.length,patterns:e,summary:this.generateSummary(e),insights:this.generateInsights(e)}},e.detectTrends=function(t){var e=this,n=this.getNumericColumns(t),r=[];return n.forEach(function(n){var i=e.getColumnValues(t,n);if(!(i.length<5)){var a=i.map(function(t,e){return{x:e,y:t}}),o=e.calculateTrend(a);Math.abs(o.slope)>.01&&o.rSquared>.3&&r.push({column:n,direction:o.slope>0?"increasing":"decreasing",slope:o.slope,rSquared:o.rSquared,strength:e.classifyTrendStrength(o.rSquared),significance:o.pValue<.05})}}),r},e.detectSeasonality=function(t){var e=this,n=this.getDateColumns(t),r=this.getNumericColumns(t),i=[];return 0===n.length||n.forEach(function(n){r.forEach(function(r){var a=e.createTimeSeries(t,n,r);if(!(a.length<12)){var o=e.analyzeSeasonalPattern(a);o.strength>.3&&i.push({dateColumn:n,valueColumn:r,strength:o.strength,period:o.period,peaks:o.peaks,pattern:o.type})}})}),i},e.detectOutliers=function(t){var e=this,n=this.getNumericColumns(t),r=[];return n.forEach(function(n){var i=e.getColumnValues(t,n);if(!(i.length<10)){var a=e.findOutliers(i);a.count>0&&r.push({column:n,count:a.count,percentage:a.percentage,method:"IQR",outlierValues:a.values.slice(0,5),severity:e.classifyOutlierSeverity(a.percentage)})}}),r},e.detectCorrelationPatterns=function(t){var e=this.getNumericColumns(t);if(e.length<2)return{strongCorrelations:[],clusters:[]};var n=this.buildCorrelationMatrix(t,e);return{strongCorrelations:this.findStrongCorrelations(n),clusters:this.findCorrelationClusters(n),avgCorrelation:this.calculateAverageCorrelation(n)}},e.detectDistributionPatterns=function(t){var e=this,n=this.getNumericColumns(t),r=[];return n.forEach(function(n){var i=e.getColumnValues(t,n);if(!(i.length<20)){var a=e.analyzeDistribution(i);r.push({column:n,type:a.type,skewness:a.skewness,kurtosis:a.kurtosis,isNormal:Math.abs(a.skewness)<1&&Math.abs(a.kurtosis)<1,transformation:e.suggestTransformation(a)})}}),r},e.detectSimpleClusters=function(t){var e=this.getNumericColumns(t);if(e.length<2)return[];for(var n=[],r=0;r<e.length;r++)for(var i=r+1;i<e.length;i++){var a=e[r],o=e[i],s=this.getTwoColumnData(t,a,o);if(!(s.length<10)){var u=this.performSimpleKMeans(s,3);u.quality>.5&&n.push({variables:[a,o],clusters:u.centers,quality:u.quality,interpretation:this.interpretClusterQuality(u.quality)})}}return n},e.detectTemporalPatterns=function(t){var e=this,n=this.getDateColumns(t),r=[];return n.forEach(function(n){var i=e.getColumnValues(t,n).map(function(t){return new Date(t)}).filter(function(t){return!isNaN(t.getTime())}).sort(function(t,e){return t-e});if(!(i.length<5)){var a=e.calculateIntervals(i),o=e.determineFrequency(a),s=e.findGaps(i,o);r.push({column:n,frequency:o,totalSpan:i[i.length-1]-i[0],avgInterval:a.reduce(function(t,e){return t+e},0)/a.length,gaps:s.length,pattern:s.length>.1*i.length?"irregular":"regular"})}}),r},e.getNumericColumns=function(t){return t.headers.filter(function(e){var n=t.data.map(function(t){return t[e]});return n.filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}).length>.7*n.length})},e.getDateColumns=function(t){return t.headers.filter(function(e){var n=t.data.map(function(t){return t[e]}),r=n.filter(function(t){if("string"==typeof t){var e=new Date(t);return!isNaN(e.getTime())}return!1}).length;return r>.7*n.length})},e.getColumnValues=function(t,e){return t.data.map(function(t){return t[e]}).filter(function(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)})},e.getTwoColumnData=function(t,e,n){return t.data.map(function(t){return{x:t[e],y:t[n]}}).filter(function(t){return"number"==typeof t.x&&!isNaN(t.x)&&isFinite(t.x)&&"number"==typeof t.y&&!isNaN(t.y)&&isFinite(t.y)})},e.createTimeSeries=function(t,e,n){return t.data.map(function(t){return{date:new Date(t[e]),value:t[n]}}).filter(function(t){return!isNaN(t.date.getTime())&&"number"==typeof t.value&&!isNaN(t.value)&&isFinite(t.value)}).sort(function(t,e){return t.date-e.date})},e.calculateTrend=function(t){var e=t.length,n=t.reduce(function(t,e){return t+e.x},0),r=t.reduce(function(t,e){return t+e.y},0),i=t.reduce(function(t,e){return t+e.x*e.y},0),a=t.reduce(function(t,e){return t+e.x*e.x},0),o=(e*i-n*r)/(e*a-n*n),s=(r-o*n)/e,u=t.map(function(t){return s+o*t.x}),l=t.reduce(function(t,e,n){return t+Math.pow(e.y-u[n],2)},0),c=t.reduce(function(t,n){return t+Math.pow(n.y-r/e,2)},0),f=1-l/c,h=Math.sqrt(l/(e-2)),d=2*(1-this.tCDF(Math.abs(o/h),e-2));return{slope:o,intercept:s,rSquared:f,pValue:d}},e.analyzeSeasonalPattern=function(t){var e=t.map(function(t){return t.value}),n=e.length;if(n<12)return{strength:0};for(var r=12,i=0,a=4;a<=Math.min(n/3,24);a++){var o=this.calculateAutoCorrelation(e,a);o>i&&(i=o,r=a)}var s=this.findPeaks(e),u=this.findValleys(e);return{strength:i,period:r,peaks:s.length,valleys:u.length,type:this.classifySeasonalType(i,s.length,u.length)}},e.findOutliers=function(t){var e=[].concat(t).sort(function(t,e){return t-e}),n=this.calculateQuantile(e,.25),r=this.calculateQuantile(e,.75),i=r-n,a=n-1.5*i,o=r+1.5*i,s=t.filter(function(t){return t<a||t>o});return{count:s.length,percentage:s.length/t.length*100,values:s,bounds:{lower:a,upper:o}}},e.buildCorrelationMatrix=function(t,e){var n=this,r={};return e.forEach(function(i){r[i]={},e.forEach(function(e){if(i===e)r[i][e]=1;else{var a=n.getColumnValues(t,i),o=n.getColumnValues(t,e);r[i][e]=n.calculateCorrelation(a,o)}})}),r},e.findStrongCorrelations=function(t){for(var e=[],n=Object.keys(t),r=0;r<n.length;r++)for(var i=r+1;i<n.length;i++){var a=n[r],o=n[i],s=t[a][o];Math.abs(s)>.7&&e.push({variable1:a,variable2:o,correlation:s,strength:this.getCorrelationStrength(Math.abs(s)),direction:s>0?"positive":"negative"})}return e.sort(function(t,e){return Math.abs(e.correlation)-Math.abs(t.correlation)})},e.findCorrelationClusters=function(t){var e=Object.keys(t),n=[],r=new Set;return e.forEach(function(i){if(!r.has(i)){var a=[i];r.add(i),e.forEach(function(e){!r.has(e)&&Math.abs(t[i][e])>.7&&(a.push(e),r.add(e))}),a.length>1&&n.push(a)}}),n},e.analyzeDistribution=function(t){var e=t.reduce(function(t,e){return t+e},0)/t.length,n=t.reduce(function(t,n){return t+Math.pow(n-e,2)},0)/(t.length-1),r=Math.sqrt(n),i=this.calculateSkewness(t,e,r),a=this.calculateKurtosis(t,e,r);return{mean:e,stdDev:r,skewness:i,kurtosis:a,type:this.classifyDistribution(i,a)}},e.performSimpleKMeans=function(t,e){for(var n=this.initializeCenters(t,e),r=new Array(t.length),i=!0,a=0;i&&a<50;){i=!1;for(var o=function(e){var a=n.map(function(n){return Math.sqrt(Math.pow(t[e].x-n.x,2)+Math.pow(t[e].y-n.y,2))}),o=a.indexOf(Math.min.apply(Math,a));r[e]!==o&&(i=!0,r[e]=o)},s=0;s<t.length;s++)o(s);for(var u=function(e){var i=t.filter(function(t,n){return r[n]===e});i.length>0&&(n[e]={x:i.reduce(function(t,e){return t+e.x},0)/i.length,y:i.reduce(function(t,e){return t+e.y},0)/i.length})},l=0;l<e;l++)u(l);a++}var c=this.calculateClusterQuality(t,r,n);return{centers:n,assignments:r,quality:c}},e.calculateIntervals=function(t){for(var e=[],n=1;n<t.length;n++)e.push(t[n]-t[n-1]);return e},e.determineFrequency=function(t){if(0===t.length)return"unknown";var e=t.reduce(function(t,e){return t+e},0)/t.length;return e<864e5?"sub_daily":e<1728e5?"daily":e<6912e5?"weekly":e<3024e6?"monthly":"yearly"},e.findGaps=function(t,e){for(var n=this.getExpectedInterval(e),r=[],i=1;i<t.length;i++){var a=t[i]-t[i-1];a>2*n&&r.push({start:t[i-1],end:t[i],duration:a})}return r},e.classifyTrendStrength=function(t){return t>.8?"very_strong":t>.6?"strong":t>.4?"moderate":t>.2?"weak":"very_weak"},e.classifyOutlierSeverity=function(t){return t>10?"severe":t>5?"moderate":t>1?"mild":"minimal"},e.classifySeasonalType=function(t,e,n){return t>.7?"strong_seasonal":t>.5?"moderate_seasonal":t>.3?"weak_seasonal":"no_seasonality"},e.classifyDistribution=function(t,e){return Math.abs(t)<.5&&Math.abs(e)<.5?"normal":t>1?"right_skewed":t<-1?"left_skewed":e>1?"heavy_tailed":"irregular"},e.suggestTransformation=function(t){return"normal"===t.type?"none":t.skewness>1?"log_transform":t.skewness<-1?"square_transform":"standardization"},e.getCorrelationStrength=function(t){return t>=.9?"very_strong":t>=.7?"strong":t>=.5?"moderate":t>=.3?"weak":"very_weak"},e.interpretClusterQuality=function(t){return t>.7?"excellent":t>.5?"good":t>.3?"fair":"poor"},e.generateSummary=function(t){var e={};return Object.keys(t).forEach(function(n){e[n]=Array.isArray(t[n])?t[n].length:"object"==typeof t[n]&&null!==t[n]?Object.keys(t[n]).length:0}),e.totalPatterns=Object.values(e).reduce(function(t,e){return t+e},0),e},e.generateInsights=function(t){var e=[];if(t.trends.length>0){var n=t.trends.filter(function(t){return"strong"===t.strength||"very_strong"===t.strength});n.length>0&&e.push({type:"trend",importance:"high",message:"Found "+n.length+" strong trend(s) in your data",details:n.map(function(t){return t.column+": "+t.direction+" trend"})})}if(t.correlations.strongCorrelations.length>0&&e.push({type:"correlation",importance:"medium",message:"Discovered "+t.correlations.strongCorrelations.length+" strong correlation(s)",details:t.correlations.strongCorrelations.slice(0,3).map(function(t){return t.variable1+" ā "+t.variable2+": "+t.strength+" "+t.direction})}),t.outliers.length>0){var r=t.outliers.filter(function(t){return"severe"===t.severity});r.length>0&&e.push({type:"outliers",importance:"high",message:"Detected severe outliers in "+r.length+" column(s)",details:r.map(function(t){return t.column+": "+t.count+" outliers ("+t.percentage.toFixed(1)+"%)"})})}if(t.seasonality.length>0&&e.push({type:"seasonality",importance:"medium",message:"Found seasonal patterns in "+t.seasonality.length+" time series",details:t.seasonality.map(function(t){return t.valueColumn+": "+t.pattern+" (period: "+t.period+")"})}),t.clustering.length>0){var i=t.clustering.filter(function(t){return t.quality>.5});i.length>0&&e.push({type:"clustering",importance:"medium",message:"Identified "+i.length+" natural cluster(s) in the data",details:i.map(function(t){return t.variables.join(" vs ")+": "+t.interpretation+" clusters"})})}return e.sort(function(t,e){var n={high:3,medium:2,low:1};return n[e.importance]-n[t.importance]})},e.calculateAutoCorrelation=function(t,e){if(e>=t.length)return 0;for(var n=t.length-e,r=t.slice(0,n).reduce(function(t,e){return t+e},0)/n,i=t.slice(e).reduce(function(t,e){return t+e},0)/n,a=0,o=0,s=0,u=0;u<n;u++){var l=t[u]-r,c=t[u+e]-i;a+=l*c,o+=l*l,s+=c*c}var f=Math.sqrt(o*s);return 0===f?0:a/f},e.findPeaks=function(t){for(var e=[],n=1;n<t.length-1;n++)t[n]>t[n-1]&&t[n]>t[n+1]&&e.push(n);return e},e.findValleys=function(t){for(var e=[],n=1;n<t.length-1;n++)t[n]<t[n-1]&&t[n]<t[n+1]&&e.push(n);return e},e.calculateQuantile=function(t,e){var n=(t.length-1)*e,r=Math.floor(n),i=Math.ceil(n),a=n%1;return r===i?t[r]:t[r]*(1-a)+t[i]*a},e.calculateCorrelation=function(t,e){if(t.length!==e.length||t.length<3)return 0;for(var n=t.length,r=t.reduce(function(t,e){return t+e},0)/n,i=e.reduce(function(t,e){return t+e},0)/n,a=0,o=0,s=0,u=0;u<n;u++){var l=t[u]-r,c=e[u]-i;a+=l*c,o+=l*l,s+=c*c}var f=Math.sqrt(o*s);return 0===f?0:a/f},e.calculateSkewness=function(t,e,n){if(0===n)return 0;var r=t.length;return r/((r-1)*(r-2))*t.reduce(function(t,r){return t+Math.pow((r-e)/n,3)},0)},e.calculateKurtosis=function(t,e,n){if(0===n)return 0;var r=t.length;return r*(r+1)/((r-1)*(r-2)*(r-3))*t.reduce(function(t,r){return t+Math.pow((r-e)/n,4)},0)-3*Math.pow(r-1,2)/((r-2)*(r-3))},e.initializeCenters=function(t,e){for(var n=[],r=Math.min.apply(Math,t.map(function(t){return t.x})),i=Math.max.apply(Math,t.map(function(t){return t.x})),a=Math.min.apply(Math,t.map(function(t){return t.y})),o=Math.max.apply(Math,t.map(function(t){return t.y})),s=0;s<e;s++)n.push({x:r+Math.random()*(i-r),y:a+Math.random()*(o-a)});return n},e.calculateClusterQuality=function(t,e,n){var r=0,i=0,a=t.reduce(function(t,e){return t+e.x},0)/t.length,o=t.reduce(function(t,e){return t+e.y},0)/t.length;n.forEach(function(n,s){var u=t.filter(function(t,n){return e[n]===s});u.forEach(function(t){r+=Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)}),i+=u.length*(Math.pow(n.x-a,2)+Math.pow(n.y-o,2))});var s=r+i;return s>0?i/s:0},e.calculateAverageCorrelation=function(t){},e.calculateAverageCorrelation=function(t){for(var e=Object.keys(t),n=0,r=0,i=0;i<e.length;i++)for(var a=i+1;a<e.length;a++)n+=Math.abs(t[e[i]][e[a]]),r++;return r>0?n/r:0},e.getExpectedInterval=function(t){switch(t){case"daily":default:return 864e5;case"weekly":return 6048e5;case"monthly":return 2592e6;case"yearly":return 31536e6}},e.tCDF=function(t,e){return e<=0?.5:1-.5*this.incompleteBeta(e/2,.5,e/(t*t+e))},e.incompleteBeta=function(t,e,n){if(n<=0)return 0;if(n>=1)return 1;for(var r=0,i=1,a=0;a<100&&(a>0&&(i*=n*(t+a-1)/a),r+=i/(t+a),!(Math.abs(i)<1e-10));a++);return r*Math.pow(n,t)*Math.pow(1-n,e)},t}(),N=/*#__PURE__*/function(){function t(){}var e=t.prototype;return e.interpret=function(t){if(!t||"object"!=typeof t)throw new Error("Invalid test result object");var e=this.identifyTestType(t);return{testType:e,summary:this.generateSummary(t,e),conclusion:this.generateConclusion(t,e),significance:this.interpretSignificance(t),effectSize:this.interpretEffectSize(t,e),confidence:this.assessConfidence(t),assumptions:this.checkAssumptions(e),recommendations:this.generateRecommendations(t,e),plainLanguage:this.generatePlainLanguageSummary(t,e)}},e.identifyTestType=function(t){return t.type?t.type:void 0!==t.correlation?"correlation":void 0!==t.rSquared?"regression":void 0!==t.fStatistic?"anova":void 0!==t.tStatistic||void 0!==t.statistic?void 0!==t.degreesOfFreedom?"t-test":"z-test":void 0!==t.isNormal?"normality-test":void 0!==t.clusters?"clustering":"general-test"},e.generateSummary=function(t,e){switch(e){case"correlation":return this.summarizeCorrelation(t);case"regression":return this.summarizeRegression(t);case"t-test":return this.summarizeTTest(t);case"z-test":return this.summarizeZTest(t);case"anova":return this.summarizeANOVA(t);case"normality-test":return this.summarizeNormalityTest(t);default:return this.summarizeGeneral(t)}},e.summarizeCorrelation=function(t){var e=t.correlation,n=this.getCorrelationStrength(Math.abs(e)),r=t.pValue<.05?"significant":"not significant";return n+" "+(e>0?"positive":"negative")+" correlation (r = "+e.toFixed(3)+") that is "+r},e.summarizeRegression=function(t){var e=t.rSquared,n=(100*e).toFixed(1);return(t.pValueModel<.05?"significant":"not significant")+" regression model explaining "+n+"% of variance (R² = "+e.toFixed(3)+")"},e.summarizeTTest=function(t){return(t.pValue<.05?"significant":"not significant")+" difference between groups (t = "+(t.statistic||t.tStatistic).toFixed(3)+", p = "+t.pValue.toFixed(4)+")"},e.summarizeZTest=function(t){return(t.pValue<.05?"significant":"not significant")+" result compared to population (z = "+(t.statistic||t.zStatistic).toFixed(3)+", p = "+t.pValue.toFixed(4)+")"},e.summarizeANOVA=function(t){return(t.pValueModel<.05?"significant":"not significant")+" differences between groups (F = "+t.fStatistic.toFixed(3)+", p = "+t.pValueModel.toFixed(4)+")"},e.summarizeNormalityTest=function(t){var e;return"Data appears "+(t.isNormal?"normally distributed":"not normally distributed")+" ("+(t.test||"normality test")+", p = "+((null==(e=t.pValue)?void 0:e.toFixed(4))||"N/A")+")"},e.summarizeGeneral=function(t){return void 0!==t.pValue?(t.pValue<.05?"significant":"not significant")+" statistical result (p = "+t.pValue.toFixed(4)+")":"Statistical analysis completed"},e.generateConclusion=function(t,e){var n=t.alpha||.05,r=t.pValue||t.pValueModel;if(void 0===r)return{decision:"inconclusive",statement:"Cannot determine statistical significance - p-value unavailable"};var i=r<n,a=(100*(1-n)).toFixed(0);return{decision:i?"reject_null":"fail_to_reject_null",statement:i?"At the "+a+"% confidence level, we reject the null hypothesis (p = "+r.toFixed(4)+" < "+n+").":"At the "+a+"% confidence level, we fail to reject the null hypothesis (p = "+r.toFixed(4)+" ā„ "+n+").",alpha:n,pValue:r,confidenceLevel:parseInt(a)}},e.interpretSignificance=function(t){var e,n,r=t.pValue||t.pValueModel;return void 0===r?{level:"unknown",interpretation:"P-value not available"}:(r<.001?(e="very_strong",n="Very strong evidence against null hypothesis"):r<.01?(e="strong",n="Strong evidence against null hypothesis"):r<.05?(e="moderate",n="Moderate evidence against null hypothesis"):r<.1?(e="weak",n="Weak evidence against null hypothesis"):(e="none",n="No evidence against null hypothesis"),{level:e,pValue:r,interpretation:n,isSignificant:r<.05})},e.interpretEffectSize=function(t,e){switch(e){case"correlation":return this.interpretCorrelationEffect(t);case"regression":return this.interpretRegressionEffect(t);case"t-test":return this.interpretTTestEffect(t);case"anova":return this.interpretANOVAEffect(t);default:return{interpretation:"Effect size not available for this test type"}}},e.interpretCorrelationEffect=function(t){var e=Math.abs(t.correlation),n=e*e;return{value:e,magnitude:this.getCorrelationStrength(e),varianceExplained:(100*n).toFixed(1)+"%",interpretation:this.getCorrelationStrength(e).toLowerCase()+" relationship",cohen:this.getCohenCorrelation(e)}},e.interpretRegressionEffect=function(t){var e=t.rSquared;return{value:e,magnitude:this.getRSquaredMagnitude(e),varianceExplained:(100*e).toFixed(1)+"%",interpretation:this.getRSquaredMagnitude(e).toLowerCase()+" explanatory power"}},e.interpretTTestEffect=function(t){if(void 0!==t.sample1Mean&&void 0!==t.sample2Mean){var e=Math.abs(t.sample1Mean-t.sample2Mean),n=e/(t.standardError*Math.sqrt(2));return{value:n,magnitude:this.getCohenD(n),interpretation:this.getCohenD(n).toLowerCase()+" effect size",meanDifference:e}}return{interpretation:"Effect size cannot be calculated - insufficient data"}},e.interpretANOVAEffect=function(t){if(t.sumOfSquaresBetween&&t.sumOfSquaresWithin){var e=t.sumOfSquaresBetween/(t.sumOfSquaresBetween+t.sumOfSquaresWithin);return{value:e,magnitude:this.getEtaSquared(e),varianceExplained:(100*e).toFixed(1)+"%",interpretation:this.getEtaSquared(e).toLowerCase()+" effect size"}}return{interpretation:"Effect size cannot be calculated - insufficient data"}},e.assessConfidence=function(t){var e=[],n="medium";t.sampleSize&&(t.sampleSize>100?(e.push("Large sample size increases reliability"),n="high"):t.sampleSize<30&&(e.push("Small sample size may limit reliability"),n="low"));var r=t.pValue||t.pValueModel;if(void 0!==r&&(r<.001?(e.push("Very low p-value strengthens confidence"),n="low"===n?"medium":"high"):r>.1&&(e.push("High p-value suggests weak evidence"),n="low")),t.confidenceInterval){var i=t.confidenceInterval,a=Math.abs(i.upper-i.lower),o=Math.abs((i.upper+i.lower)/2);o>0&&a/o<.2?e.push("Narrow confidence interval indicates precision"):(e.push("Wide confidence interval indicates uncertainty"),n="high"===n?"medium":"low")}return{level:n,factors:e,recommendation:this.getConfidenceRecommendation(n)}},e.checkAssumptions=function(t){var e=[];switch(t){case"t-test":e.push("Normality: Data should be approximately normally distributed","Independence: Observations should be independent","Equal variances: Groups should have similar variances (for independent samples)");break;case"anova":e.push("Normality: Residuals should be normally distributed","Homogeneity: Groups should have equal variances","Independence: Observations should be independent");break;case"correlation":e.push("Linearity: Relationship should be linear","Normality: Variables should be approximately normal","Homoscedasticity: Constant variance across range");break;case"regression":e.push("Linearity: Linear relationship between variables","Independence: Residuals should be independent","Homoscedasticity: Constant variance of residuals","Normality: Residuals should be normally distributed");break;default:e.push("Check test-specific assumptions in documentation")}return{testType:t,assumptions:e,importance:"Violating assumptions may invalidate results"}},e.generateRecommendations=function(t,e){var n=[],r=t.pValue||t.pValueModel;return void 0!==r&&(r<.001?n.push("Very strong result - investigate practical significance and effect size"):r>=.05&&r<.1?n.push("Marginally significant - consider collecting more data or using different approach"):r>=.1&&n.push("No significant effect found - examine data quality and consider alternative hypotheses")),"correlation"===e&&t.sampleSize&&t.sampleSize<30&&n.push("Small sample size - correlation may not be reliable"),"regression"===e&&t.rSquared<.3&&n.push("Low R² - consider additional predictors or different model"),t.assumptions&&t.assumptions.violated&&n.push("Assumptions may be violated - consider alternative tests or data transformations"),n.push("Replicate findings with independent data when possible"),n},e.generatePlainLanguageSummary=function(t,e){var n=t.pValue||t.pValueModel,r=n&&n<.05,i="";switch(i+=r?"ā SIGNIFICANT RESULT: ":"ā NOT SIGNIFICANT: ",e){case"correlation":var a=t.correlation,o=this.getCorrelationStrength(Math.abs(a));i+=r?"Found a "+o.toLowerCase()+" "+(a>0?"positive":"negative")+" relationship between the variables.":"No meaningful relationship found between the variables.";break;case"regression":var s=(100*t.rSquared).toFixed(0);i+=r?"The model successfully predicts the outcome, explaining "+s+"% of the variation.":"The model does not provide meaningful predictions.";break;case"t-test":i+=r?"Found a meaningful difference between the groups.":"No meaningful difference found between the groups.";break;case"anova":i+=r?"Found meaningful differences between at least some groups.":"No meaningful differences found between groups.";break;case"normality-test":i+=t.isNormal?"Data follows a normal distribution - suitable for standard statistical tests.":"Data does not follow a normal distribution - consider alternative tests.";break;default:i+=r?"The statistical test shows a significant result.":"The statistical test shows no significant result."}return void 0!==n&&(i+=" (p-value: "+n.toFixed(4)+")"),i},e.getCorrelationStrength=function(t){return t>=.9?"Very Strong":t>=.7?"Strong":t>=.5?"Moderate":t>=.3?"Weak":"Very Weak"},e.getCohenCorrelation=function(t){return t>=.5?"Large effect":t>=.3?"Medium effect":t>=.1?"Small effect":"Negligible effect"},e.getRSquaredMagnitude=function(t){return t>=.7?"Strong":t>=.5?"Moderate":t>=.3?"Weak":"Very Weak"},e.getCohenD=function(t){return t>=.8?"Large":t>=.5?"Medium":t>=.2?"Small":"Negligible"},e.getEtaSquared=function(t){return t>=.14?"Large":t>=.06?"Medium":t>=.01?"Small":"Negligible"},e.getConfidenceRecommendation=function(t){switch(t){case"high":return"Results appear robust and reliable";case"medium":return"Results are reasonably reliable but verify when possible";case"low":return"Interpret results with caution - consider additional validation";default:return"Assess result reliability based on context"}},e.formatForReport=function(t){return{title:t.testType.toUpperCase()+" Results",summary:t.summary,conclusion:t.conclusion.statement,significance:t.significance.interpretation,effect:t.effectSize.interpretation,confidence:t.confidence.level,recommendations:t.recommendations,plainLanguage:t.plainLanguage}},e.explainStatistic=function(t,e){return{correlation:"Correlation measures the linear relationship between two variables, ranging from -1 to +1.",regression:"R² shows how much variance in the outcome is explained by the predictors.","t-test":"T-test compares means between groups or against a known value.",anova:"ANOVA tests whether there are differences between multiple group means.","z-test":"Z-test compares a sample mean to a population mean when population variance is known.","normality-test":"Tests whether data follows a normal (bell-curve) distribution."}[e]||"Statistical test to evaluate hypotheses about data."},e.generateActionItems=function(t){var e=[],n=t.testType;return t.significance.isSignificant?(e.push("Examine practical significance of the finding"),e.push("Consider replicating with independent data"),"correlation"===n&&e.push("Explore potential causal relationships"),"regression"===n&&e.push("Validate model with new data")):(e.push("Review data collection methods"),e.push("Consider if sample size was adequate"),e.push("Explore alternative analytical approaches")),e.push("Document methodology and assumptions"),e},t}(),E=/*#__PURE__*/function(){function t(t){this.stats=t,this.insights=[],this.visualizations=[]}var e=t.prototype;return e.autoAnalyze=function(t,e){void 0===e&&(e={});var r=n({minCorrelationThreshold:.3,significanceLevel:.05,generateVisualizations:!0,includeAdvancedAnalysis:!0},e);console.log("š Iniciando anĆ”lise automĆ”tica...");var i=this.stats.validateData(t);if(!i.valid)throw new Error("Dados invĆ”lidos: "+i.errors.join(", "));var a=this.classifyVariables(t);console.log("š Identificadas "+a.quantitative.length+" variĆ”veis quantitativas e "+a.qualitative.length+" qualitativas");var o=this.performDescriptiveAnalysis(t,a),s=this.performCorrelationAnalysis(t,a.quantitative,r),u=this.performRegressionAnalysis(t,a.quantitative,s,r),l=this.performDistributionAnalysis(t,a),c=this.performOutlierAnalysis(t,a.quantitative),f=this.performTemporalAnalysis(t,a),h=this.generateAutoInsights(t,{variableTypes:a,descriptiveAnalysis:o,correlationAnalysis:s,regressionAnalysis:u,distributionAnalysis:l,outlierAnalysis:c,temporalAnalysis:f},r),d=this.suggestVisualizations(a,s,l);return console.log("ā
AnĆ”lise concluĆda!"),{metadata:{analysisDate:(new Date).toISOString(),datasetSize:t.length,columnsAnalyzed:t.headers.length,configuration:r},variableClassification:a,descriptiveStatistics:o,correlationAnalysis:s,regressionAnalysis:u,distributionAnalysis:l,outlierAnalysis:c,temporalAnalysis:f,insights:h,visualizationSuggestions:d,summary:this.generateExecutiveSummary(h)}},e.classifyVariables=function(t){var e=this,n=[],r=[],i=[],a=[],o=[];return t.headers.forEach(function(s){var u=t.data.map(function(t){return t[s]}).filter(function(t){return null!=t});if(0!==u.length){var l=e.classifyVariable(u,s);switch(l.type){case"quantitative":n.push(l);break;case"datetime":i.push(l);break;case"binary":a.push(l);break;case"ordinal":o.push(l);break;default:r.push(l)}}else r.push({name:s,type:"empty",description:"Coluna vazia"})}),{quantitative:n,qualitative:r,datetime:i,binary:a,ordinal:o}},e.classifyVariable=function(t,e){var n=[].concat(new Set(t)),r=t.filter(function(t){return"number"==typeof t&&!isNaN(t)}),i=r.length/t.length;if(this.isDateTimeColumn(t))return{name:e,type:"datetime",uniqueCount:n.length,description:"VariĆ”vel temporal"};if(i>.8){var a=this.determineQuantitativeSubtype(r);return{name:e,type:"quantitative",subtype:a,uniqueCount:n.length,description:"VariĆ”vel quantitativa "+a,range:{min:Math.min.apply(Math,r),max:Math.max.apply(Math,r)}}}return 2===n.length?{name:e,type:"binary",categories:n,description:"VariĆ”vel binĆ”ria/dicotĆ“mica"}:this.isOrdinalVariable(n)?{name:e,type:"ordinal",categories:n,uniqueCount:n.length,description:"VariĆ”vel ordinal"}:{name:e,type:"qualitative",subtype:n.length>10?"nominal_many":"nominal",categories:n.slice(0,20),uniqueCount:n.length,description:"VariĆ”vel qualitativa nominal ("+n.length+" categorias)"}},e.performDescriptiveAnalysis=function(t,e){var n=this,r={};return e.quantitative.forEach(function(e){var i=t.data.map(function(t){return t[e.name]}).filter(function(t){return"number"==typeof t&&!isNaN(t)});if(i.length>0){var a=i.length,o=a>=3,s=a>=4;r[e.name]={type:"quantitative",count:a,mean:n.stats.mean(i),median:n.stats.median(i),standardDeviation:n.stats.standardDeviation(i),min:Math.min.apply(Math,i),max:Math.max.apply(Math,i),quartiles:n.stats.quartiles(i),skewness:o?n.stats.skewness(i):null,kurtosis:s?n.stats.kurtosis(i):null}}}),[].concat(e.qualitative,e.binary).forEach(function(e){var i=t.data.map(function(t){return t[e.name]}).filter(function(t){return null!=t});if(i.length>0){var a=n.stats.frequencyTable(i);r[e.name]={type:"qualitative",count:i.length,uniqueValues:e.uniqueCount,frequencyTable:a.slice(0,10),mostFrequent:a[0],concentration:n.calculateConcentration(a)}}}),r},e.performCorrelationAnalysis=function(t,e,n){var r=this;if(e.length<2)return{message:"Insuficientes variĆ”veis quantitativas para anĆ”lise de correlação"};var i=this.stats.correlationMatrix(t),a=(i.strongCorrelations||[]).filter(function(t){return Math.abs(t.correlation)>=n.minCorrelationThreshold}),o=a.map(function(t){var e=r.getCorrelationStrength(Math.abs(t.correlation)),i=t.correlation>0?"positiva":"negativa";return{type:"correlation",priority:Math.abs(t.correlation)>.7?"high":"medium",title:"Correlação "+e+" entre "+t.variable1+" e "+t.variable2,description:"Correlação "+i+" de "+t.correlation.toFixed(3),variables:[t.variable1,t.variable2],correlation:t.correlation,significance:null!=t.pValue?t.pValue<n.significanceLevel:void 0}});return{matrix:i.correlations||i,strongCorrelations:a,insights:o,summary:"Encontradas "+a.length+" correlaƧƵes ā„ "+n.minCorrelationThreshold}},e.performRegressionAnalysis=function(t,e,n,r){var i=this,a=[];return n.strongCorrelations&&n.strongCorrelations.filter(function(t){return Math.abs(t.correlation)>.5}).slice(0,5).forEach(function(e){try{var n=t.data.map(function(t){return t[e.variable1]}).filter(function(t){return"number"==typeof t&&!isNaN(t)}),o=t.data.map(function(t){return t[e.variable2]}).filter(function(t){return"number"==typeof t&&!isNaN(t)});if(n.length===o.length&&n.length>10){var s=i.stats.linearRegression(n,o);a.push({independent:e.variable1,dependent:e.variable2,equation:s.equation,rSquared:s.rSquared,significant:s.pValueModel<r.significanceLevel,interpretation:i.interpretRegressionResult(s),details:s})}}catch(t){console.warn("Erro na regressĆ£o "+e.variable1+" -> "+e.variable2+":",t.message)}}),{models:a,summary:a.length+" modelos de regressĆ£o analisados"}},e.performDistributionAnalysis=function(t,e){var n=this,r={};return e.quantitative.forEach(function(e){var i=t.data.map(function(t){return t[e.name]}).filter(function(t){return"number"==typeof t&&!isNaN(t)});if(i.length>10)try{var a=n.stats.shapiroWilkTest(i),o=n.stats.skewness(i),s=n.stats.kurtosis(i);r[e.name]={isNormal:a.isNormal,normalityPValue:a.pValue,skewness:o,kurtosis:s,distributionType:n.classifyDistributionType(o,s,a.isNormal),recommendation:n.getDistributionRecommendation(o,s,a.isNormal)}}catch(t){r[e.name]={error:"NĆ£o foi possĆvel analisar a distribuição",reason:t.message}}}),r},e.performOutlierAnalysis=function(t,e){var n=this,r={};return e.forEach(function(e){var i=t.data.map(function(t){return t[e.name]}).filter(function(t){return"number"==typeof t&&!isNaN(t)});if(i.length>5){var a=n.stats.detectOutliers(i,"iqr");r[e.name]={count:a.count,percentage:a.percentage,severity:n.classifyOutlierSeverity(a.percentage),values:a.outliers.slice(0,10),recommendation:n.getOutlierRecommendation(a.percentage)}}}),r},e.performTemporalAnalysis=function(t,e){var n=this;if(0===e.datetime.length)return{message:"Nenhuma variĆ”vel temporal detectada"};var r={};return e.datetime.forEach(function(e){var i=t.data.map(function(t){return new Date(t[e.name])}).filter(function(t){return!isNaN(t.getTime())}).sort(function(t,e){return t-e});if(i.length>2){var a=i[i.length-1]-i[0],o=a/(i.length-1);r[e.name]={span:Math.floor(a/864e5)+" dias",frequency:n.determineFrequency(o),earliest:i[0].toISOString().split("T")[0],latest:i[i.length-1].toISOString().split("T")[0],dataPoints:i.length}}}),r},e.generateAutoInsights=function(t,e,n){var r,i=[],a=e.variableTypes;i.push({category:"overview",priority:"high",title:"Composição do Dataset",description:"Dataset com "+t.length+" registros, "+a.quantitative.length+" variĆ”veis numĆ©ricas e "+a.qualitative.length+" categóricas",icon:"š"}),e.correlationAnalysis.insights&&i.push.apply(i,e.correlationAnalysis.insights),Object.entries(e.distributionAnalysis).forEach(function(t){var e=t[0],n=t[1];n.distributionType&&"normal"!==n.distributionType&&i.push({category:"distribution",priority:"medium",title:"Distribuição nĆ£o-normal: "+e,description:n.recommendation,variable:e,icon:"š"})}),Object.entries(e.outlierAnalysis).forEach(function(t){var e=t[0],n=t[1];"high"===n.severity&&i.push({category:"quality",priority:"high",title:"Outliers significativos em "+e,description:n.count+" outliers ("+n.percentage.toFixed(1)+"%) detectados",recommendation:n.recommendation,variable:e,icon:"ā ļø"})}),null==(r=e.regressionAnalysis.models)||r.forEach(function(t){t.significant&&t.rSquared>.5&&i.push({category:"modeling",priority:"high",title:"Modelo preditivo viĆ”vel: "+t.dependent,description:t.independent+" explica "+(100*t.rSquared).toFixed(1)+"% da variação em "+t.dependent,variables:[t.independent,t.dependent],rSquared:t.rSquared,icon:"šÆ"})});var o={high:3,medium:2,low:1};return i.sort(function(t,e){return o[e.priority]-o[t.priority]})},e.suggestVisualizations=function(t,e,n){var r=[];t.quantitative.forEach(function(t){r.push({type:"histogram",variable:t.name,title:"Distribuição de "+t.name,description:"Histogram mostrando a distribuição dos valores",priority:"medium"})}),e.strongCorrelations&&e.strongCorrelations.filter(function(t){return Math.abs(t.correlation)>.5}).slice(0,3).forEach(function(t){r.push({type:"scatter",variables:[t.variable1,t.variable2],title:t.variable1+" vs "+t.variable2,description:"Scatter plot mostrando correlação "+(t.correlation>0?"positiva":"negativa"),priority:"high"})}),[].concat(t.qualitative,t.binary).forEach(function(t){t.uniqueCount<=20&&r.push({type:"bar",variable:t.name,title:"FrequĆŖncia de "+t.name,description:"GrĆ”fico de barras mostrando a distribuição das categorias",priority:"medium"})}),t.quantitative.forEach(function(t){r.push({type:"boxplot",variable:t.name,title:"Box Plot de "+t.name,description:"Box plot para identificar outliers e quartis",priority:"low"})});var i={high:3,medium:2,low:1};return r.sort(function(t,e){return i[e.priority]-i[t.priority]})},e.generateExecutiveSummary=function(t){var e=t.filter(function(t){return"high"===t.priority}),n=[].concat(new Set(t.map(function(t){return t.category})));return{totalInsights:t.length,highPriorityInsights:e.length,categoriesCovered:n,keyFindings:e.slice(0,3).map(function(t){return{title:t.title,description:t.description}}),recommendations:this.generateTopRecommendations(t)}},e.isDateTimeColumn=function(t){var e=Math.min(t.length,20),n=t.slice(0,e).filter(function(t){if("string"==typeof t){var e=new Date(t);return!isNaN(e.getTime())}return!1}).length;return n/e>.7},e.determineQuantitativeSubtype=function(t){return t.filter(function(t){return Number.isInteger(t)}).length/t.length>.9?"discrete":"continuous"},e.isOrdinalVariable=function(t){return[/^(baixo|mĆ©dio|alto)$/i,/^(pequeno|grande)$/i,/^(ruim|regular|bom|ótimo)$/i,/^[1-5]$/,/^(primeiro|segundo|terceiro)$/i].some(function(e){return t.every(function(t){return e.test(String(t))})})},e.calculateConcentration=function(t){return 0===t.length?0:t[0].percentage},e.getCorrelationStrength=function(t){return t>=.8?"muito forte":t>=.6?"forte":t>=.4?"moderada":t>=.2?"fraca":"muito fraca"},e.interpretRegressionResult=function(t){var e=(100*t.rSquared).toFixed(1);return{quality:t.rSquared>.7?"excelente":t.rSquared>.5?"boa":t.rSquared>.3?"moderada":"fraca",explanation:"O modelo explica "+e+"% da variação",isSignificant:t.pValueModel<.05}},e.classifyDistributionType=function(t,e,n){return n?"normal":Math.abs(t)>1?t>0?"assimĆ©trica_direita":"assimĆ©trica_esquerda":Math.abs(e)>1?e>0?"leptocĆŗrtica":"platicĆŗrtica":"aproximadamente_normal"},e.getDistributionRecommendation=function(t,e,n){return n?"Distribuição normal - ideal para testes paramĆ©tricos":Math.abs(t)>1?"Considere transformação logarĆtmica para normalizar":Math.abs(e)>1?"Distribuição com caudas atĆpicas - use testes robustos":"Distribuição aproximadamente normal"},e.classifyOutlierSeverity=function(t){return t>10?"high":t>5?"medium":"low"},e.getOutlierRecommendation=function(t){return t>10?"Investigar e possivelmente remover outliers":t>5?"Verificar se outliers sĆ£o valores legĆtimos":"Poucos outliers - monitorar"},e.determineFrequency=function(t){var e=864e5;return t<e?"diĆ”ria":t<7*e?"semanal":t<30*e?"mensal":"anual"},e.generateTopRecommendations=function(t){var e=[];return t.filter(function(t){return"correlation"===t.category}).length>0&&e.push("Explore as correlaƧƵes identificadas para possĆvel modelagem preditiva"),t.filter(function(t){return"quality"===t.category&&"high"===t.priority}).length>0&&e.push("Trate os outliers identificados antes de prosseguir com anĆ”lises"),t.filter(function(t){return"distribution"===t.category}).length>0&&e.push("Considere transformaƧƵes para normalizar distribuiƧƵes assimĆ©tricas"),e},t}(),A=/*#__PURE__*/function(){function t(){this.trained=!1,this.model=null,this.features=null,this.target=null,this.trainingMetrics={}}var e=t.prototype;return e.validateTrainingData=function(t,e){if(!Array.isArray(t)||0===t.length)throw new Error("X must be a non-empty array");if(!Array.isArray(e)||0===e.length)throw new Error("y must be a non-empty array");if(t.length!==e.length)throw new Error("X and y must have the same length")},e.validatePredictionData=function(t){if(!this.trained)throw new Error("Model must be trained before making predictions");if(!Array.isArray(t)||0===t.length)throw new Error("X must be a non-empty array")},e.normalizeFeatures=function(t){for(var e=t.length,n=t[0].length,r=[],i=[],a=[],o=function(n){var r=t.map(function(t){return t[n]}),o=r.reduce(function(t,e){return t+e},0)/e,s=r.reduce(function(t,e){return t+Math.pow(e-o,2)},0)/e,u=Math.sqrt(s);i.push(o),a.push(0===u?1:u)},s=0;s<n;s++)o(s);for(var u=0;u<e;u++){for(var l=[],c=0;c<n;c++)l.push((t[u][c]-i[c])/a[c]);r.push(l)}return{normalized:r,means:i,stds:a}},e.splitTrainTest=function(t,e,n,r){void 0===n&&(n=.2),void 0===r&&(r=!0);var i=t.length,a=Array.from({length:i},function(t,e){return e});if(r)for(var o=i-1;o>0;o--){var s=Math.floor(Math.random()*(o+1)),u=[a[s],a[o]];a[o]=u[0],a[s]=u[1]}var l=i-Math.floor(i*n),c=a.slice(0,l),f=a.slice(l);return{X_train:c.map(function(e){return t[e]}),X_test:f.map(function(e){return t[e]}),y_train:c.map(function(t){return e[t]}),y_test:f.map(function(t){return e[t]})}},e.save=function(){if(!this.trained)throw new Error("Cannot save untrained model");return{model:this.model,features:this.features,target:this.target,trainingMetrics:this.trainingMetrics,timestamp:(new Date).toISOString()}},e.load=function(t){this.model=t.model,this.features=t.features,this.target=t.target,this.trainingMetrics=t.trainingMetrics,this.trained=!0},t}(),C=/*#__PURE__*/function(t){function e(e,n,r,i){var a;return void 0===e&&(e=.01),void 0===n&&(n=1e3),void 0===r&&(r=null),void 0===i&&(i=.01),(a=t.call(this)||this).learningRate=e,a.iterations=n,a.regularization=r,a.lambda=i,a.weights=null,a.bias=null,a.normParams=null,a}r(e,t);var n=e.prototype;return n.fit=function(t,e,n){var r=this;void 0===n&&(n=!0),this.validateTrainingData(t,e);var i=t.map(function(t){return Array.isArray(t)?t:[t]});if(n){var a=this.normalizeFeatures(i);i=a.normalized,this.normParams={means:a.means,stds:a.stds}}var o=i.length,s=i[0].length;this.weights=Array(s).fill(0),this.bias=0;for(var u=[],l=0;l<this.iterations;l++){for(var c=i.map(function(t){return r.predictSingle(t)}),f=c.map(function(t,n){return t-e[n]}),h=Array(s).fill(0),d=0,p=0;p<o;p++){d+=f[p];for(var m=0;m<s;m++)h[m]+=f[p]*i[p][m]}for(var g=0;g<s;g++)"l2"===this.regularization?h[g]+=this.lambda*this.weights[g]:"l1"===this.regularization&&(h[g]+=this.lambda*Math.sign(this.weights[g])),this.weights[g]-=this.learningRate/o*h[g];this.bias-=this.learningRate/o*d;var v=this.calculateLoss(c,e);u.push(v)}return this.trained=!0,this.trainingMetrics={finalLoss:u[u.length-1],losses:u,weights:[].concat(this.weights),bias:this.bias},this},n.predictSingle=function(t){for(var e=this.bias,n=0;n<this.weights.length;n++)e+=this.weights[n]*t[n];return e},n.predict=function(t){var e=this;this.validatePredictionData(t);var n=t.map(function(t){return Array.isArray(t)?t:[t]});if(this.normParams){var r=this.normParams,i=r.means,a=r.stds;n=n.map(function(t){return t.map(function(t,e){return(t-i[e])/a[e]})})}return n.map(function(t){return e.predictSingle(t)})},n.calculateLoss=function(t,e){var n=t.reduce(function(t,n,r){return t+Math.pow(n-e[r],2)},0)/t.length;if("l2"===this.regularization){var r=this.weights.reduce(function(t,e){return t+e*e},0);return n+this.lambda*r}if("l1"===this.regularization){var i=this.weights.reduce(function(t,e){return t+Math.abs(e)},0);return n+this.lambda*i}return n},n.score=function(t,e){var n=this.predict(t),r=e.reduce(function(t,e){return t+e},0)/e.length,i=n.reduce(function(t,n,r){return t+Math.pow(e[r]-n,2)},0),a=e.reduce(function(t,e){return t+Math.pow(e-r,2)},0),o=i/e.length;return{r2Score:1-i/a,mse:o,rmse:Math.sqrt(o),mae:n.reduce(function(t,n,r){return t+Math.abs(e[r]-n)},0)/e.length,predictions:n,residuals:n.map(function(t,n){return e[n]-t})}},n.getCoefficients=function(){if(!this.trained)throw new Error("Model must be trained first");return{weights:[].concat(this.weights),bias:this.bias,equation:this.getEquation()}},n.getEquation=function(){var t="y = "+this.bias.toFixed(4);return this.weights.forEach(function(e,n){t+=" "+(e>=0?"+":"")+" "+e.toFixed(4)+"*x"+(n+1)}),t},n.summary=function(){if(!this.trained)throw new Error("Model must be trained first");return{modelType:"Linear Regression",coefficients:this.getCoefficients(),trainingMetrics:this.trainingMetrics,hyperparameters:{learningRate:this.learningRate,iterations:this.iterations,regularization:this.regularization,lambda:this.lambda}}},e}(A),q=/*#__PURE__*/function(t){function n(e){var n,r=void 0===e?{}:e,i=r.learningRate,a=void 0===i?.01:i,o=r.iterations,s=void 0===o?1e3:o,u=r.batchSize,l=void 0===u?null:u,c=r.regularization,f=void 0===c?null:c,h=r.lambda,d=void 0===h?.01:h,p=r.earlyStopping,m=void 0!==p&&p,g=r.tol,v=void 0===g?1e-6:g,y=r.randomInit,b=void 0===y||y;return(n=t.call(this)||this).learningRate=a,n.iterations=s,n.batchSize=l,n.regularization=f,n.lambda=d,n.earlyStopping=m,n.tol=v,n.randomInit=b,n.weights=null,n.bias=null,n.normParams=null,n.classes=null,n.multiclass=!1,n.losses=[],n}r(n,t);var i=n.prototype;return i.sigmoid=function(t){return 1/(1+Math.exp(-t))},i.softmax=function(t){var e=Math.max.apply(Math,t),n=t.map(function(t){return Math.exp(t-e)}),r=n.reduce(function(t,e){return t+e},0);return n.map(function(t){return t/r})},i.fit=function(t,e,n){void 0===n&&(n=!0),this.validateTrainingData(t,e),this.classes=[].concat(new Set(e)).sort(function(t,e){return"number"==typeof t&&"number"==typeof e?t-e:String(t).localeCompare(String(e))}),this.multiclass=this.classes.length>2;var r=t.map(function(t){return Array.isArray(t)?t:[t]});if(n){var i=this.normalizeFeaturesSafe(r);r=i.normalized,this.normParams={means:i.means,stds:i.stds}}return this.multiclass?this.fitMulticlass(r,e):this.fitBinary(r,e),this.trained=!0,this},i.fitBinary=function(t,e){var n=this,r=t[0].length,i=e.map(function(t){return t===n.classes[1]?1:0});this.weights=this.randomInit?Array(r).fill(0).map(function(){return.01*Math.random()}):Array(r).fill(0),this.bias=0;var a=Infinity;this.losses=[];for(var o=0;o<this.iterations;o++){for(var s=this.getBatch(t,i),u=s.Xb,l=s.yb,c=u.map(function(t){return n.sigmoid(n.linear(t))}),f=this.gradientBinary(u,l,c),h=f.weightGradients,d=f.biasGradient,p=0;p<r;p++)this.weights[p]-=this.learningRate/u.length*h[p];this.bias-=this.learningRate/u.length*d;var m=this.calculateBinaryLoss(c,l);if(this.losses.push(m),this.earlyStopping&&Math.abs(a-m)<this.tol)break;a=m}this.trainingMetrics={finalLoss:this.losses[this.losses.length-1],losses:this.losses,weights:[].concat(this.weights),bias:this.bias}},i.fitMulticlass=function(t,e){var n=this,r=t[0].length,i=this.classes.length,a=this.oneHotEncode(e,i);this.weights=Array(i).fill(0).map(function(){return n.randomInit?Array(r).fill(0).map(function(){return.01*Math.random()}):Array(r).fill(0)}),this.bias=Array(i).fill(0);var o=Infinity;this.losses=[];for(var s=0;s<this.iterations;s++){for(var u=this.getBatch(t,a),l=u.Xb,c=u.yb,f=l.map(function(t){return n.forwardMulticlass(t)}),h=0;h<i;h++){for(var d=this.gradientMulticlass(l,c,f,h),p=0;p<r;p++)this.weights[h][p]-=this.learningRate/l.length*d.weight[p];this.bias[h]-=this.learningRate/l.length*d.bias}var m=this.calculateMulticlassLoss(f,c);if(this.losses.push(m),this.earlyStopping&&Math.abs(o-m)<this.tol)break;o=m}this.trainingMetrics={finalLoss:this.losses[this.losses.length-1],losses:this.losses}},i.predict=function(t,e){void 0===e&&(e=!1),this.validatePredictionData(t);var n=t.map(function(t){return Array.isArray(t)?t:[t]});if(this.normParams){var r=this.normParams,i=r.means,a=r.stds;n=n.map(function(t){return t.map(function(t,e){return(t-i[e])/(a[e]||1)})})}return this.multiclass?this.predictMulticlass(n,e):this.predictBinary(n,e)},i.predictBinary=function(t,e){var n=this;return t.map(function(t){var r,i=n.sigmoid(n.linear(t));return e?((r={})[n.classes[0]]=1-i,r[n.classes[1]]=i,r):i>=.5?n.classes[1]:n.classes[0]})},i.predictMulticlass=function(t,e){var n=this;return t.map(function(t){var r=n.forwardMulticlass(t);if(e){var i={};return n.classes.forEach(function(t,e){return i[t]=r[e]}),i}var a=r.indexOf(Math.max.apply(Math,r));return n.classes[a]})},i.linear=function(t){var e=this;return this.bias+t.reduce(function(t,n,r){return t+n*e.weights[r]},0)},i.forwardMulticlass=function(t){var e=this,n=this.bias.map(function(n,r){return n+t.reduce(function(t,n,i){return t+n*e.weights[r][i]},0)});return this.softmax(n)},i.getBatch=function(t,e){if(!this.batchSize||this.batchSize>=t.length)return{Xb:t,yb:e};var n=Math.floor(Math.random()*(t.length-this.batchSize));return{Xb:t.slice(n,n+this.batchSize),yb:e.slice(n,n+this.batchSize)}},i.gradientBinary=function(t,e,n){for(var r=t[0].length,i=Array(r).fill(0),a=0,o=0;o<t.length;o++){var s=n[o]-e[o];a+=s;for(var u=0;u<r;u++)i[u]+=s*t[o][u]}if(this.regularization)for(var l=0;l<r;l++)"l2"===this.regularization&&(i[l]+=this.lambda*this.weights[l]),"l1"===this.regularization&&(i[l]+=this.lambda*Math.sign(this.weights[l]));return{weightGradients:i,biasGradient:a}},i.gradientMulticlass=function(t,e,n,r){for(var i=t[0].length,a=Array(i).fill(0),o=0,s=0;s<t.length;s++){var u=n[s][r]-e[s][r];o+=u;for(var l=0;l<i;l++)a[l]+=u*t[s][l]}if("l2"===this.regularization)for(var c=0;c<i;c++)a[c]+=this.lambda*this.weights[r][c];return{weight:a,bias:o}},i.normalizeFeaturesSafe=function(t){for(var e=t[0].length,n=Array(e).fill(0),r=Array(e).fill(0),i=function(e){var i=t.map(function(t){return t[e]}),a=i.reduce(function(t,e){return t+e},0)/i.length,o=Math.sqrt(i.reduce(function(t,e){return t+Math.pow(e-a,2)},0)/i.length);n[e]=a,r[e]=o||1},a=0;a<e;a++)i(a);var o=t.map(function(t){return t.map(function(t,e){return(t-n[e])/r[e]})});return{normalized:o,means:n,stds:r}},i.oneHotEncode=function(t,e){var n=this;return t.map(function(t){var r=Array(e).fill(0);return r[n.classes.indexOf(t)]=1,r})},i.calculateBinaryLoss=function(t,e){for(var n=0,r=0;r<t.length;r++){var i=Math.min(Math.max(t[r],1e-15),1-1e-15);n-=e[r]*Math.log(i)+(1-e[r])*Math.log(1-i)}if(n/=t.length,"l2"===this.regularization){var a=this.weights.reduce(function(t,e){return t+e*e},0);n+=this.lambda/2*a}return n},i.calculateMulticlassLoss=function(t,e){for(var n=0,r=0;r<t.length;r++)for(var i=0;i<e[r].length;i++){var a=Math.min(Math.max(t[r][i],1e-15),1-1e-15);n-=e[r][i]*Math.log(a)}return n/t.length},i.rocCurve=function(t,n){var r=this;if(this.multiclass)return console.warn("ROC Curve disponĆvel apenas para problemas binĆ”rios"),null;for(var i,a=this.predict(t,!0).map(function(t){return t[r.classes[1]]}),o=[],s=e([].concat(new Set(a)).sort(function(t,e){return e-t}));!(i=s()).done;){for(var u=i.value,l=0,c=0,f=0,h=0,d=0;d<n.length;d++){var p=n[d]===this.classes[1]?1:0,m=a[d]>=u?1:0;1===p&&1===m?l++:0===p&&1===m?c++:0===p&&0===m?f++:1===p&&0===m&&h++}o.push({fpr:c/(c+f),tpr:l/(l+h)})}return o.sort(function(t,e){return t.fpr-e.fpr}),o},i.aucScore=function(t,e){var n=this.rocCurve(t,e);if(!n)return null;for(var r=0,i=1;i<n.length;i++)r+=(n[i].fpr-n[i-1].fpr)*(n[i-1].tpr+n[i].tpr)/2;return Math.abs(r)},i.score=function(t,e){var n=this.predict(t),r=this.predict(t,!0),i=n.filter(function(t,n){return t===e[n]}).length/e.length,a=this.confusionMatrix(e,n),o=this.calculateClassMetrics(a);return{accuracy:i,auc:this.multiclass?null:this.aucScore(t,e),roc:this.multiclass?null:this.rocCurve(t,e),confusionMatrix:a,classMetrics:o,predictions:n,probabilities:r}},i.summary=function(){if(!this.trained)throw new Error("Model must be trained first");return{modelType:"Logistic Regression",classes:this.classes,multiclass:this.multiclass,trainingMetrics:this.trainingMetrics,hyperparameters:{learningRate:this.learningRate,iterations:this.iterations,regularization:this.regularization,lambda:this.lambda,batchSize:this.batchSize,earlyStopping:this.earlyStopping}}},n}(A),k=/*#__PURE__*/function(t){function e(e,n,r){var i;return void 0===e&&(e=5),void 0===n&&(n="euclidean"),void 0===r&&(r="uniform"),(i=t.call(this)||this).k=e,i.metric=n,i.weights=r,i.X_train=null,i.y_train=null,i.normParams=null,i.taskType=null,i}r(e,t);var n=e.prototype;return n.euclideanDistance=function(t,e){return Math.sqrt(t.reduce(function(t,n,r){return t+Math.pow(n-e[r],2)},0))},n.manhattanDistance=function(t,e){return t.reduce(function(t,n,r){return t+Math.abs(n-e[r])},0)},n.minkowskiDistance=function(t,e,n){return void 0===n&&(n=3),Math.pow(t.reduce(function(t,r,i){return t+Math.pow(Math.abs(r-e[i]),n)},0),1/n)},n.calculateDistance=function(t,e){switch(this.metric){case"manhattan":return this.manhattanDistance(t,e);case"minkowski":return this.minkowskiDistance(t,e);default:return this.euclideanDistance(t,e)}},n.fit=function(t,e,n,r){void 0===n&&(n=!0),void 0===r&&(r="classification"),this.validateTrainingData(t,e),this.taskType=r;var i=t.map(function(t){return Array.isArray(t)?t:[t]});if(n){var a=this.normalizeFeatures(i),o=a.means,s=a.stds;this.X_train=a.normalized,this.normParams={means:o,stds:s}}else this.X_train=i;return this.y_train=[].concat(e),this.trained=!0,this.trainingMetrics={samples:this.X_train.length,features:this.X_train[0].length,taskType:this.taskType},this},n.findKNearest=function(t){var e=this,n=this.X_train.map(function(n,r){return{distance:e.calculateDistance(t,n),index:r,label:e.y_train[r]}});return n.sort(function(t,e){return t.distance-e.distance}),n.slice(0,this.k)},n.predictSingleClassification=function(t){var e=this.findKNearest(t);if("uniform"===this.weights){var n={};return e.forEach(function(t){n[t.label]=(n[t.label]||0)+1}),Object.keys(n).reduce(function(t,e){return n[t]>n[e]?t:e})}var r={};return e.forEach(function(t){r[t.label]=(r[t.label]||0)+(0===t.distance?1e10:1/t.distance)}),Object.keys(r).reduce(function(t,e){return r[t]>r[e]?t:e})},n.predictSingleRegression=function(t){var e=this.findKNearest(t);if("uniform"===this.weights)return e.reduce(function(t,e){return t+e.label},0)/e.length;var n=0,r=0;return e.forEach(function(t){var e=0===t.distance?1e10:1/t.distance;n+=t.label*e,r+=e}),n/r},n.predict=function(t){var e=this;this.validatePredictionData(t);var n=t.map(function(t){return Array.isArray(t)?t:[t]});if(this.normParams){var r=this.normParams,i=r.means,a=r.stds;n=n.map(function(t){return t.map(function(t,e){return(t-i[e])/a[e]})})}return n.map("classification"===this.taskType?function(t){return e.predictSingleClassification(t)}:function(t){return e.predictSingleRegression(t)})},n.predictProba=function(t){var e=this;if("classification"!==this.taskType)throw new Error("predictProba is only available for classification tasks");this.validatePredictionData(t);var n=t.map(function(t){return Array.isArray(t)?t:[t]});if(this.normParams){var r=this.normParams,i=r.means,a=r.stds;n=n.map(function(t){return t.map(function(t,e){return(t-i[e])/a[e]})})}var o=[].concat(new Set(this.y_train)).sort();return n.map(function(t){var n=e.findKNearest(t),r={};if(o.forEach(function(t){r[t]=0}),"uniform"===e.weights)n.forEach(function(t){r[t.label]+=1/e.k});else{var i=0,a={};n.forEach(function(t){var e=0===t.distance?1e10:1/t.distance;a[t.label]=(a[t.label]||0)+e,i+=e}),Object.keys(a).forEach(function(t){r[t]=a[t]/i})}return r})},n.score=function(t,e){var n=this.predict(t);if("classification"===this.taskType){for(var r=0,i=0;i<e.length;i++)n[i]===e[i]&&r++;var a=r/e.length,o=[].concat(new Set([].concat(e,n))).sort(),s=this.confusionMatrix(e,n,o);return{accuracy:a,confusionMatrix:s,classMetrics:this.calculateClassMetrics(s,o),predictions:n}}var u=e.reduce(function(t,e){return t+e},0)/e.length,l=n.reduce(function(t,n,r){return t+Math.pow(e[r]-n,2)},0),c=1-l/e.reduce(function(t,e){return t+Math.pow(e-u,2)},0),f=l/e.length,h=Math.sqrt(f),d=n.reduce(function(t,n,r){return t+Math.abs(e[r]-n)},0)/e.length;return{r2Score:c,mse:f,rmse:h,mae:d,predictions:n,residuals:n.map(function(t,n){return e[n]-t})}},n.confusionMatrix=function(t,e,n){for(var r=n.length,i=Array(r).fill(0).map(function(){return Array(r).fill(0)}),a=0;a<t.length;a++){var o=n.indexOf(t[a]),s=n.indexOf(e[a]);i[o][s]++}return{matrix:i,classes:n,display:this.formatConfusionMatrix(i,n)}},n.formatConfusionMatrix=function(t,e){var n=Math.max.apply(Math,t.flat().map(function(t){return t.toString().length}).concat([8])),r=function(t){return t.toString().padStart(n)},i="\n"+" ".repeat(n+2)+"Predicted\n";i+=" ".repeat(n+2)+e.map(function(t){return r(t)}).join(" ")+"\n";for(var a=0;a<t.length;a++)i+=0===a?"Actual ":" ",i+=r(e[a])+" ",i+=t[a].map(function(t){return r(t)}).join(" ")+"\n";return i},n.calculateClassMetrics=function(t,e){var n=t.matrix,r={};return e.forEach(function(t,e){var i=n[e][e],a=n[e].reduce(function(t,e){return t+e},0)-i,o=n.map(function(t){return t[e]}).reduce(function(t,e){return t+e},0)-i,s=i+o>0?i/(i+o):0,u=i+a>0?i/(i+a):0;r[t]={precision:s,recall:u,f1Score:s+u>0?s*u*2/(s+u):0,support:i+a}}),r},n.summary=function(){if(!this.trained)throw new Error("Model must be trained first");return{modelType:"K-Nearest Neighbors",taskType:this.taskType,trainingMetrics:this.trainingMetrics,hyperparameters:{k:this.k,metric:this.metric,weights:this.weights}}},e}(A),_=/*#__PURE__*/function(t){function n(e,n,r,i){var a;return void 0===e&&(e=10),void 0===n&&(n=2),void 0===r&&(r=1),void 0===i&&(i="gini"),(a=t.call(this)||this).maxDepth=e,a.minSamplesSplit=n,a.minSamplesLeaf=r,a.criterion=i,a.tree=null,a.taskType=null,a.classes=null,a}r(n,t);var i=n.prototype;return i.fit=function(t,e,n){void 0===n&&(n="classification"),this.validateTrainingData(t,e),this.taskType=n;var r=t.map(function(t){return Array.isArray(t)?t:[t]});return"classification"===n&&(this.classes=[].concat(new Set(e)).sort()),this.tree=this.buildTree(r,e,0),this.trained=!0,this.trainingMetrics={treeDepth:this.getTreeDepth(this.tree),leafCount:this.getLeafCount(this.tree),nodeCount:this.getNodeCount(this.tree),taskType:this.taskType},this},i.buildTree=function(t,n,r){var i=t[0].length;if(r>=this.maxDepth||t.length<this.minSamplesSplit||this.isPure(n))return this.createLeaf(n);for(var a=null,o=-Infinity,s=0;s<i;s++)for(var u,l=e(this.getThresholds(t,s));!(u=l()).done;){var c=u.value,f=this.splitData(t,n,s,c),h=f.left,d=f.right;if(!(h.y.length<this.minSamplesLeaf||d.y.length<this.minSamplesLeaf)){var p=this.calculateSplitScore(n,h.y,d.y);p>o&&(o=p,a={featureIdx:s,threshold:c,left:h,right:d})}}return a?{featureIdx:a.featureIdx,threshold:a.threshold,left:this.buildTree(a.left.X,a.left.y,r+1),right:this.buildTree(a.right.X,a.right.y,r+1),isLeaf:!1}:this.createLeaf(n)},i.getThresholds=function(t,e){for(var n=[].concat(new Set(t.map(function(t){return t[e]}))).sort(function(t,e){return t-e}),r=[],i=0;i<n.length-1;i++)r.push((n[i]+n[i+1])/2);return r},i.splitData=function(t,e,n,r){for(var i=[],a=[],o=[],s=[],u=0;u<t.length;u++)t[u][n]<=r?(i.push(t[u]),a.push(e[u])):(o.push(t[u]),s.push(e[u]));return{left:{X:i,y:a},right:{X:o,y:s}}},i.isPure=function(t){return 1===new Set(t).size},i.createLeaf=function(t){if("classification"===this.taskType){var e={};return t.forEach(function(t){e[t]=(e[t]||0)+1}),{isLeaf:!0,prediction:Object.keys(e).reduce(function(t,n){return e[t]>e[n]?t:n}),samples:t.length,distribution:e}}return{isLeaf:!0,prediction:t.reduce(function(t,e){return t+e},0)/t.length,samples:t.length}},i.calculateSplitScore=function(t,e,n){if("classification"===this.taskType){var r=this.calculateImpurity(t),i=t.length,a=n.length;return r-(e.length/i*this.calculateImpurity(e)+a/i*this.calculateImpurity(n))}var o=this.calculateVariance(t),s=t.length,u=n.length;return o-(e.length/s*this.calculateVariance(e)+u/s*this.calculateVariance(n))},i.calculateImpurity=function(t){var e={};t.forEach(function(t){e[t]=(e[t]||0)+1});var n=t.length,r=Object.values(e).map(function(t){return t/n});return"gini"===this.criterion?1-r.reduce(function(t,e){return t+e*e},0):"entropy"===this.criterion?-r.reduce(function(t,e){return t+e*Math.log2(e)},0):void 0},i.calculateVariance=function(t){if(0===t.length)return 0;var e=t.reduce(function(t,e){return t+e},0)/t.length;return t.reduce(function(t,n){return t+Math.pow(n-e,2)},0)/t.length},i.predictSingle=function(t,e){return void 0===e&&(e=this.tree),e.isLeaf?e.prediction:this.predictSingle(t,t[e.featureIdx]<=e.threshold?e.left:e.right)},i.predict=function(t){var e=this;return this.validatePredictionData(t),t.map(function(t){return Array.isArray(t)?t:[t]}).map(function(t){return e.predictSingle(t)})},i.predictProba=function(t){var e=this;if("classification"!==this.taskType)throw new Error("predictProba is only available for classification tasks");return this.validatePredictionData(t),t.map(function(t){return Array.isArray(t)?t:[t]}).map(function(t){var n=e.findLeaf(t),r=n.samples,i={};return e.classes.forEach(function(t){i[t]=(n.distribution[t]||0)/r}),i})},i.findLeaf=function(t,e){return void 0===e&&(e=this.tree),e.isLeaf?e:this.findLeaf(t,t[e.featureIdx]<=e.threshold?e.left:e.right)},i.score=function(t,e){var n=this.predict(t);if("classification"===this.taskType){for(var r=0,i=0;i<e.length;i++)n[i]===e[i]&&r++;var a=r/e.length,o=this.confusionMatrix(e,n);return{accuracy:a,confusionMatrix:o,classMetrics:this.calculateClassMetrics(o),predictions:n}}var s=e.reduce(function(t,e){return t+e},0)/e.length,u=n.reduce(function(t,n,r){return t+Math.pow(e[r]-n,2)},0),l=1-u/e.reduce(function(t,e){return t+Math.pow(e-s,2)},0),c=u/e.length,f=Math.sqrt(c),h=n.reduce(function(t,n,r){return t+Math.abs(e[r]-n)},0)/e.length;return{r2Score:l,mse:c,rmse:f,mae:h,predictions:n,residuals:n.map(function(t,n){return e[n]-t})}},i.confusionMatrix=function(t,e){for(var n=this.classes.length,r=Array(n).fill(0).map(function(){return Array(n).fill(0)}),i=0;i<t.length;i++){var a=this.classes.indexOf(t[i]),o=this.classes.indexOf(e[i]);r[a][o]++}return{matrix:r,classes:this.classes,display:this.formatConfusionMatrix(r)}},i.formatConfusionMatrix=function(t){var e=Math.max.apply(Math,t.flat().map(function(t){return t.toString().length}).concat([8])),n=function(t){return t.toString().padStart(e)},r="\n"+" ".repeat(e+2)+"Predicted\n";r+=" ".repeat(e+2)+this.classes.map(function(t){return n(t)}).join(" ")+"\n";for(var i=0;i<t.length;i++)r+=0===i?"Actual ":" ",r+=n(this.classes[i])+" ",r+=t[i].map(function(t){return n(t)}).join(" ")+"\n";return r},i.calculateClassMetrics=function(t){var e=t.matrix,n={};return this.classes.forEach(function(t,r){var i=e[r][r],a=e[r].reduce(function(t,e){return t+e},0)-i,o=e.map(function(t){return t[r]}).reduce(function(t,e){return t+e},0)-i,s=i+o>0?i/(i+o):0,u=i+a>0?i/(i+a):0;n[t]={precision:s,recall:u,f1Score:s+u>0?s*u*2/(s+u):0,support:i+a}}),n},i.getTreeDepth=function(t){return t.isLeaf?0:1+Math.max(this.getTreeDepth(t.left),this.getTreeDepth(t.right))},i.getLeafCount=function(t){return t.isLeaf?1:this.getLeafCount(t.left)+this.getLeafCount(t.right)},i.getNodeCount=function(t){return t.isLeaf?1:1+this.getNodeCount(t.left)+this.getNodeCount(t.right)},i.getFeatureImportance=function(){var t={};this.calculateImportance(this.tree,t);var e=Object.values(t).reduce(function(t,e){return t+e},0);return Object.keys(t).forEach(function(n){t[n]/=e}),t},i.calculateImportance=function(t,e){if(!t.isLeaf){var n="feature_"+t.featureIdx;e[n]=(e[n]||0)+1,this.calculateImportance(t.left,e),this.calculateImportance(t.right,e)}},i.summary=function(){if(!this.trained)throw new Error("Model must be trained first");return{modelType:"Decision Tree",taskType:this.taskType,trainingMetrics:this.trainingMetrics,featureImportance:this.getFeatureImportance(),hyperparameters:{maxDepth:this.maxDepth,minSamplesSplit:this.minSamplesSplit,minSamplesLeaf:this.minSamplesLeaf,criterion:this.criterion}}},n}(A),F=/*#__PURE__*/function(t){function e(e,n,r,i,a,o,s){var u;return void 0===e&&(e=100),void 0===n&&(n=10),void 0===r&&(r=2),void 0===i&&(i=1),void 0===a&&(a="sqrt"),void 0===o&&(o="gini"),void 0===s&&(s=!0),(u=t.call(this)||this).nEstimators=e,u.maxDepth=n,u.minSamplesSplit=r,u.minSamplesLeaf=i,u.maxFeatures=a,u.criterion=o,u.bootstrap=s,u.trees=[],u.taskType=null,u.classes=null,u.featureIndices=[],u}r(e,t);var n=e.prototype;return n.fit=function(t,e,n){var r=this;void 0===n&&(n="classification"),this.validateTrainingData(t,e),this.taskType=n;var i=t.map(function(t){return Array.isArray(t)?t:[t]}),a=i[0].length;"classification"===n&&(this.classes=[].concat(new Set(e)).sort());for(var o=this.getMaxFeaturesCount(a),s=function(){var t=r.bootstrap?r.bootstrapSample(i,e):{X_sample:i,y_sample:e},s=t.X_sample,u=t.y_sample,l=r.selectRandomFeatures(a,o);r.featureIndices.push(l);var c=s.map(function(t){return l.map(function(e){return t[e]})}),f=new _(r.maxDepth,r.minSamplesSplit,r.minSamplesLeaf,r.criterion);f.fit(c,u,n),r.trees.push(f)},u=0;u<this.nEstimators;u++)s();return this.trained=!0,this.trainingMetrics={nEstimators:this.nEstimators,avgTreeDepth:this.trees.reduce(function(t,e){return t+e.trainingMetrics.treeDepth},0)/this.nEstimators,avgLeafCount:this.trees.reduce(function(t,e){return t+e.trainingMetrics.leafCount},0)/this.nEstimators,taskType:this.taskType},this},n.getMaxFeaturesCount=function(t){return"number"==typeof this.maxFeatures?Math.min(this.maxFeatures,t):"sqrt"===this.maxFeatures?Math.floor(Math.sqrt(t)):"log2"===this.maxFeatures?Math.floor(Math.log2(t)):t},n.selectRandomFeatures=function(t,e){for(var n=Array.from({length:t},function(t,e){return e}),r=[],i=0;i<e;i++){var a=Math.floor(Math.random()*n.length);r.push(n[a]),n.splice(a,1)}return r.sort(function(t,e){return t-e})},n.bootstrapSample=function(t,e){for(var n=t.length,r=[],i=[],a=0;a<n;a++){var o=Math.floor(Math.random()*n);r.push(t[o]),i.push(e[o])}return{X_sample:r,y_sample:i}},n.predict=function(t){var e=this;return this.validatePredictionData(t),t.map(function(t){return Array.isArray(t)?t:[t]}).map("classification"===this.taskType?function(t){var n={};return e.trees.forEach(function(r,i){var a=e.featureIndices[i].map(function(e){return t[e]}),o=r.predict([a])[0];n[o]=(n[o]||0)+1}),Object.keys(n).reduce(function(t,e){return n[t]>n[e]?t:e})}:function(t){var n=e.trees.map(function(n,r){var i=e.featureIndices[r].map(function(e){return t[e]});return n.predict([i])[0]});return n.reduce(function(t,e){return t+e},0)/n.length})},n.predictProba=function(t){var e=this;if("classification"!==this.taskType)throw new Error("predictProba is only available for classification tasks");return this.validatePredictionData(t),t.map(function(t){return Array.isArray(t)?t:[t]}).map(function(t){var n={};e.classes.forEach(function(t){n[t]=0}),e.trees.forEach(function(r,i){var a=e.featureIndices[i].map(function(e){return t[e]}),o=r.predictProba([a])[0];Object.keys(o).forEach(function(t){n[t]+=o[t]})});var r={};return Object.keys(n).forEach(function(t){r[t]=n[t]/e.nEstimators}),r})},n.score=function(t,e){var n=this.predict(t);if("classification"===this.taskType){for(var r=0,i=0;i<e.length;i++)n[i]===e[i]&&r++;var a=r/e.length,o=this.confusionMatrix(e,n);return{accuracy:a,confusionMatrix:o,classMetrics:this.calculateClassMetrics(o),predictions:n}}var s=e.reduce(function(t,e){return t+e},0)/e.length,u=n.reduce(function(t,n,r){return t+Math.pow(e[r]-n,2)},0),l=1-u/e.reduce(function(t,e){return t+Math.pow(e-s,2)},0),c=u/e.length,f=Math.sqrt(c),h=n.reduce(function(t,n,r){return t+Math.abs(e[r]-n)},0)/e.length;return{r2Score:l,mse:c,rmse:f,mae:h,predictions:n,residuals:n.map(function(t,n){return e[n]-t})}},n.confusionMatrix=function(t,e){for(var n=this.classes.length,r=Array(n).fill(0).map(function(){return Array(n).fill(0)}),i=0;i<t.length;i++){var a=this.classes.indexOf(t[i]),o=this.classes.indexOf(e[i]);r[a][o]++}return{matrix:r,classes:this.classes,display:this.formatConfusionMatrix(r)}},n.formatConfusionMatrix=function(t){var e=Math.max.apply(Math,t.flat().map(function(t){return t.toString().length}).concat([8])),n=function(t){return t.toString().padStart(e)},r="\n"+" ".repeat(e+2)+"Predicted\n";r+=" ".repeat(e+2)+this.classes.map(function(t){return n(t)}).join(" ")+"\n";for(var i=0;i<t.length;i++)r+=0===i?"Actual ":" ",r+=n(this.classes[i])+" ",r+=t[i].map(function(t){return n(t)}).join(" ")+"\n";return r},n.calculateClassMetrics=function(t){var e=t.matrix,n={};return this.classes.forEach(function(t,r){var i=e[r][r],a=e[r].reduce(function(t,e){return t+e},0)-i,o=e.map(function(t){return t[r]}).reduce(function(t,e){return t+e},0)-i,s=i+o>0?i/(i+o):0,u=i+a>0?i/(i+a):0;n[t]={precision:s,recall:u,f1Score:s+u>0?s*u*2/(s+u):0,support:i+a}}),n},n.getFeatureImportance=function(){var t=this,e=Array(this.featureIndices[0].length).fill(0);this.trees.forEach(function(n,r){var i=n.getFeatureImportance(),a=t.featureIndices[r];Object.keys(i).forEach(function(t){var n=parseInt(t.split("_")[1]);e[a[n]]+=i[t]})});var n=e.reduce(function(t,e){return t+e},0);return e.map(function(t){return t/n})},n.summary=function(){if(!this.trained)throw new Error("Model must be trained first");return{modelType:"Random Forest",taskType:this.taskType,trainingMetrics:this.trainingMetrics,featureImportance:this.getFeatureImportance(),hyperparameters:{nEstimators:this.nEstimators,maxDepth:this.maxDepth,minSamplesSplit:this.minSamplesSplit,minSamplesLeaf:this.minSamplesLeaf,maxFeatures:this.maxFeatures,criterion:this.criterion,bootstrap:this.bootstrap}}},e}(A),T=/*#__PURE__*/function(t){function e(e){var n;return void 0===e&&(e="gaussian"),(n=t.call(this)||this).type=e,n.classes=null,n.classPriors={},n.parameters={},n}r(e,t);var n=e.prototype;return n.fit=function(t,e){var n=this;this.validateTrainingData(t,e);var r=t.map(function(t){return Array.isArray(t)?t:[t]});this.classes=[].concat(new Set(e)).sort();var i=r.length,a=r[0].length;return this.classes.forEach(function(t){var r=e.filter(function(e){return e===t}).length;n.classPriors[t]=r/i}),"gaussian"===this.type?this.fitGaussian(r,e,a):"multinomial"===this.type?this.fitMultinomial(r,e,a):"bernoulli"===this.type&&this.fitBernoulli(r,e,a),this.trained=!0,this.trainingMetrics={nClasses:this.classes.length,nFeatures:a,nSamples:i,type:this.type},this},n.fitGaussian=function(t,e,n){var r=this;this.classes.forEach(function(i){var a=t.filter(function(t,n){return e[n]===i});r.parameters[i]={means:[],variances:[]};for(var o=function(t){var e=a.map(function(e){return e[t]}),n=e.reduce(function(t,e){return t+e},0)/e.length,o=e.reduce(function(t,e){return t+Math.pow(e-n,2)},0)/e.length;r.parameters[i].means.push(n),r.parameters[i].variances.push(o+1e-9)},s=0;s<n;s++)o(s)})},n.fitMultinomial=function(t,e,n){var r=this;this.classes.forEach(function(i){var a=t.filter(function(t,n){return e[n]===i});r.parameters[i]={featureProbs:[]};for(var o=function(t){var e=a.reduce(function(e,n){return e+n[t]},0),o=a.reduce(function(t,e){return t+e.reduce(function(t,e){return t+e},0)},0);r.parameters[i].featureProbs.push((e+1)/(o+1*n))},s=0;s<n;s++)o(s)})},n.fitBernoulli=function(t,e,n){var r=this;this.classes.forEach(function(i){var a=t.filter(function(t,n){return e[n]===i}),o=a.length;r.parameters[i]={featureProbs:[]};for(var s=function(t){var e=a.filter(function(e){return 1===e[t]}).length;r.parameters[i].featureProbs.push((e+1)/(o+2))},u=0;u<n;u++)s(u)})},n.gaussianProbability=function(t,e,n){return Math.exp(-Math.pow(t-e,2)/(2*n))/Math.sqrt(2*Math.PI*n)},n.predictSingle=function(t){var e=this,n={};return this.classes.forEach(function(r){var i=Math.log(e.classPriors[r]);if("gaussian"===e.type)for(var a=e.parameters[r],o=0;o<t.length;o++){var s=e.gaussianProbability(t[o],a.means[o],a.variances[o]);i+=Math.log(s+1e-9)}else if("multinomial"===e.type)for(var u=e.parameters[r],l=0;l<t.length;l++)i+=t[l]*Math.log(u.featureProbs[l]+1e-9);else if("bernoulli"===e.type)for(var c=e.parameters[r],f=0;f<t.length;f++)i+=Math.log((1===t[f]?c.featureProbs[f]:1-c.featureProbs[f])+1e-9);n[r]=i}),Object.keys(n).reduce(function(t,e){return n[t]>n[e]?t:e})},n.predict=function(t){var e=this;return this.validatePredictionData(t),t.map(function(t){return Array.isArray(t)?t:[t]}).map(function(t){return e.predictSingle(t)})},n.predictProba=function(t){var e=this;return this.validatePredictionData(t),t.map(function(t){return Array.isArray(t)?t:[t]}).map(function(t){var n={};e.classes.forEach(function(r){var i=Math.log(e.classPriors[r]);if("gaussian"===e.type)for(var a=e.parameters[r],o=0;o<t.length;o++){var s=e.gaussianProbability(t[o],a.means[o],a.variances[o]);i+=Math.log(s+1e-9)}else if("multinomial"===e.type)for(var u=e.parameters[r],l=0;l<t.length;l++)i+=t[l]*Math.log(u.featureProbs[l]+1e-9);else if("bernoulli"===e.type)for(var c=e.parameters[r],f=0;f<t.length;f++)i+=Math.log((1===t[f]?c.featureProbs[f]:1-c.featureProbs[f])+1e-9);n[r]=i});var r=Math.max.apply(Math,Object.values(n)),i={},a=0;e.classes.forEach(function(t){i[t]=Math.exp(n[t]-r),a+=i[t]});var o={};return e.classes.forEach(function(t){o[t]=i[t]/a}),o})},n.score=function(t,e){for(var n=this.predict(t),r=0,i=0;i<e.length;i++)n[i]===e[i]&&r++;var a=r/e.length,o=this.confusionMatrix(e,n);return{accuracy:a,confusionMatrix:o,classMetrics:this.calculateClassMetrics(o),predictions:n}},n.confusionMatrix=function(t,e){for(var n=this.classes.length,r=Array(n).fill(0).map(function(){return Array(n).fill(0)}),i=0;i<t.length;i++){var a=this.classes.indexOf(t[i]),o=this.classes.indexOf(e[i]);r[a][o]++}return{matrix:r,classes:this.classes,display:this.formatConfusionMatrix(r)}},n.formatConfusionMatrix=function(t){var e=Math.max.apply(Math,t.flat().map(function(t){return t.toString().length}).concat([8])),n=function(t){return t.toString().padStart(e)},r="\n"+" ".repeat(e+2)+"Predicted\n";r+=" ".repeat(e+2)+this.classes.map(function(t){return n(t)}).join(" ")+"\n";for(var i=0;i<t.length;i++)r+=0===i?"Actual ":" ",r+=n(this.classes[i])+" ",r+=t[i].map(function(t){return n(t)}).join(" ")+"\n";return r},n.calculateClassMetrics=function(t){var e=t.matrix,n={};return this.classes.forEach(function(t,r){var i=e[r][r],a=e[r].reduce(function(t,e){return t+e},0)-i,o=e.map(function(t){return t[r]}).reduce(function(t,e){return t+e},0)-i,s=i+o>0?i/(i+o):0,u=i+a>0?i/(i+a):0;n[t]={precision:s,recall:u,f1Score:s+u>0?s*u*2/(s+u):0,support:i+a}}),n},n.summary=function(){if(!this.trained)throw new Error("Model must be trained first");return{modelType:"Naive Bayes",naiveBayesType:this.type,classes:this.classes,classPriors:this.classPriors,trainingMetrics:this.trainingMetrics}},e}(A),D=/*#__PURE__*/function(t){function e(e,n,r,i,a,o){var s;return void 0===e&&(e=1),void 0===n&&(n="linear"),void 0===r&&(r="scale"),void 0===i&&(i=3),void 0===a&&(a=.001),void 0===o&&(o=1e3),(s=t.call(this)||this).C=e,s.kernel=n,s.gamma=r,s.degree=i,s.learningRate=a,s.iterations=o,s.weights=null,s.bias=null,s.supportVectors=null,s.classes=null,s.normParams=null,s}r(e,t);var n=e.prototype;return n.fit=function(t,e,n){var r=this;void 0===n&&(n=!0),this.validateTrainingData(t,e);var i=t.map(function(t){return Array.isArray(t)?t:[t]});if(this.classes=[].concat(new Set(e)).sort(),2!==this.classes.length)throw new Error("SVM currently only supports binary classification");var a=e.map(function(t){return t===r.classes[1]?1:-1});if(n){var o=this.normalizeFeatures(i);i=o.normalized,this.normParams={means:o.means,stds:o.stds}}var s=i.length,u=i[0].length;if("scale"===this.gamma){var l=this.calculateVariance(i);this.gamma=1/(u*l)}else"auto"===this.gamma&&(this.gamma=1/u);this.weights=Array(u).fill(0),this.bias=0;for(var c=[],f=0;f<this.iterations;f++){for(var h=0,d=0;d<s;d++){var p=i[d],m=a[d],g=m*this.decisionFunction([p])[0];if(g<1){for(var v=0;v<u;v++)this.weights[v]+=this.learningRate*(m*p[v]-1/this.C*2*this.weights[v]);this.bias+=this.learningRate*m,h+=1-g}else for(var y=0;y<u;y++)this.weights[y]+=this.learningRate*(1/this.C*-2*this.weights[y])}var b=1/this.C*this.weights.reduce(function(t,e){return t+e*e},0);c.push(h/s+b)}return this.identifySupportVectors(i,a),this.trained=!0,this.trainingMetrics={finalLoss:c[c.length-1],losses:c,nSupportVectors:this.supportVectors.length,supportVectorRatio:this.supportVectors.length/s},this},n.calculateVariance=function(t){for(var e=t.length,n=t[0].length,r=0,i=function(n){var i=t.map(function(t){return t[n]}),a=i.reduce(function(t,e){return t+e},0)/e,o=i.reduce(function(t,e){return t+Math.pow(e-a,2)},0)/e;r+=o},a=0;a<n;a++)i(a);return r/n},n.identifySupportVectors=function(t,e){this.supportVectors=[];for(var n=0;n<t.length;n++){var r=this.decisionFunction([t[n]])[0],i=Math.abs(r);i<1.5&&this.supportVectors.push({index:n,vector:t[n],label:e[n],margin:i})}},n.kernelFunction=function(t,e){if("linear"===this.kernel)return t.reduce(function(t,n,r){return t+n*e[r]},0);if("rbf"===this.kernel){var n=t.reduce(function(t,n,r){return t+Math.pow(n-e[r],2)},0);return Math.exp(-this.gamma*n)}if("poly"===this.kernel){var r=t.reduce(function(t,n,r){return t+n*e[r]},0);return Math.pow(r+1,this.degree)}return 0},n.decisionFunction=function(t){var e=this;return t.map(function(t){for(var n=e.bias,r=0;r<e.weights.length;r++)n+=e.weights[r]*t[r];return n})},n.predict=function(t){var e=this;this.validatePredictionData(t);var n=t.map(function(t){return Array.isArray(t)?t:[t]});if(this.normParams){var r=this.normParams,i=r.means,a=r.stds;n=n.map(function(t){return t.map(function(t,e){return(t-i[e])/a[e]})})}return this.decisionFunction(n).map(function(t){return t>=0?e.classes[1]:e.classes[0]})},n.predictProba=function(t){var e=this;this.validatePredictionData(t);var n=t.map(function(t){return Array.isArray(t)?t:[t]});if(this.normParams){var r=this.normParams,i=r.means,a=r.stds;n=n.map(function(t){return t.map(function(t,e){return(t-i[e])/a[e]})})}return this.decisionFunction(n).map(function(t){var n,r=1/(1+Math.exp(-t));return(n={})[e.classes[0]]=1-r,n[e.classes[1]]=r,n})},n.score=function(t,e){for(var n=this.predict(t),r=0,i=0;i<e.length;i++)n[i]===e[i]&&r++;var a=r/e.length,o=this.confusionMatrix(e,n);return{accuracy:a,confusionMatrix:o,classMetrics:this.calculateClassMetrics(o),predictions:n}},n.confusionMatrix=function(t,e){for(var n=this.classes.length,r=Array(n).fill(0).map(function(){return Array(n).fill(0)}),i=0;i<t.length;i++){var a=this.classes.indexOf(t[i]),o=this.classes.indexOf(e[i]);r[a][o]++}return{matrix:r,classes:this.classes,display:this.formatConfusionMatrix(r)}},n.formatConfusionMatrix=function(t){var e=Math.max.apply(Math,t.flat().map(function(t){return t.toString().length}).concat([8])),n=function(t){return t.toString().padStart(e)},r="\n"+" ".repeat(e+2)+"Predicted\n";r+=" ".repeat(e+2)+this.classes.map(function(t){return n(t)}).join(" ")+"\n";for(var i=0;i<t.length;i++)r+=0===i?"Actual ":" ",r+=n(this.classes[i])+" ",r+=t[i].map(function(t){return n(t)}).join(" ")+"\n";return r},n.calculateClassMetrics=function(t){var e=t.matrix,n={};return this.classes.forEach(function(t,r){var i=e[r][r],a=e[r].reduce(function(t,e){return t+e},0)-i,o=e.map(function(t){return t[r]}).reduce(function(t,e){return t+e},0)-i,s=i+o>0?i/(i+o):0,u=i+a>0?i/(i+a):0;n[t]={precision:s,recall:u,f1Score:s+u>0?s*u*2/(s+u):0,support:i+a}}),n},n.summary=function(){if(!this.trained)throw new Error("Model must be trained first");return{modelType:"Support Vector Machine",classes:this.classes,trainingMetrics:this.trainingMetrics,hyperparameters:{C:this.C,kernel:this.kernel,gamma:this.gamma,degree:this.degree,learningRate:this.learningRate,iterations:this.iterations}}},e}(A),I=/*#__PURE__*/function(){function t(){}var e=t.prototype;return e.createLinearRegression=function(t){void 0===t&&(t={});var e=t.learningRate,n=t.iterations,r=t.regularization,i=t.lambda;return new C(void 0===e?.01:e,void 0===n?1e3:n,void 0===r?null:r,void 0===i?.01:i)},e.createLogisticRegression=function(t){void 0===t&&(t={});var e=t.learningRate,n=t.iterations,r=t.regularization,i=t.lambda;return new q(void 0===e?.01:e,void 0===n?1e3:n,void 0===r?null:r,void 0===i?.01:i)},e.createKNN=function(t){void 0===t&&(t={});var e=t.k,n=t.metric,r=t.weights;return new k(void 0===e?5:e,void 0===n?"euclidean":n,void 0===r?"uniform":r)},e.createDecisionTree=function(t){void 0===t&&(t={});var e=t.maxDepth,n=t.minSamplesSplit,r=t.minSamplesLeaf,i=t.criterion;return new _(void 0===e?10:e,void 0===n?2:n,void 0===r?1:r,void 0===i?"gini":i)},e.createRandomForest=function(t){void 0===t&&(t={});var e=t.nEstimators,n=t.maxDepth,r=t.minSamplesSplit,i=t.minSamplesLeaf,a=t.maxFeatures,o=t.criterion,s=t.bootstrap;return new F(void 0===e?100:e,void 0===n?10:n,void 0===r?2:r,void 0===i?1:i,void 0===a?"sqrt":a,void 0===o?"gini":o,void 0===s||s)},e.createNaiveBayes=function(t){void 0===t&&(t={});var e=t.type;return new T(void 0===e?"gaussian":e)},e.createSVM=function(t){void 0===t&&(t={});var e=t.C,n=t.kernel,r=t.gamma,i=t.degree,a=t.learningRate,o=t.iterations;return new D(void 0===e?1:e,void 0===n?"linear":n,void 0===r?"scale":r,void 0===i?3:i,void 0===a?.001:a,void 0===o?1e3:o)},e.crossValidate=function(t,e,n,r,i){void 0===r&&(r=5),void 0===i&&(i="classification");for(var a=e.length,o=Math.floor(a/r),s=Array.from({length:a},function(t,e){return e}),u=a-1;u>0;u--){var l=Math.floor(Math.random()*(u+1)),c=[s[l],s[u]];s[u]=c[0],s[l]=c[1]}for(var f=[],h=0;h<r;h++){var d=h*o,p=h===r-1?a:d+o,m=s.slice(d,p),g=[].concat(s.slice(0,d),s.slice(p)),v=g.map(function(t){return e[t]}),y=g.map(function(t){return n[t]}),b=m.map(function(t){return e[t]}),w=m.map(function(t){return n[t]}),M=Object.create(Object.getPrototypeOf(t));Object.assign(M,t),M.fit(v,y,i);var x=M.score(b,w);f.push("classification"===i?x.accuracy:x.r2Score)}var S=f.reduce(function(t,e){return t+e},0)/f.length,N=Math.sqrt(f.reduce(function(t,e){return t+Math.pow(e-S,2)},0)/f.length);return{scores:f,meanScore:S,stdScore:N,folds:r}},e.trainTestSplit=function(t,e,n,r){void 0===n&&(n=.2),void 0===r&&(r=!0);var i=t.length,a=Array.from({length:i},function(t,e){return e});if(r)for(var o=i-1;o>0;o--){var s=Math.floor(Math.random()*(o+1)),u=[a[s],a[o]];a[o]=u[0],a[s]=u[1]}var l=i-Math.floor(i*n),c=a.slice(0,l),f=a.slice(l);return{X_train:c.map(function(e){return t[e]}),X_test:f.map(function(e){return t[e]}),y_train:c.map(function(t){return e[t]}),y_test:f.map(function(t){return e[t]})}},e.compareModels=function(t,e,n,r){void 0===r&&(r="classification");var i=this.trainTestSplit(e,n,.2),a=i.X_train,o=i.X_test,s=i.y_train,u=i.y_test,l=[];return t.forEach(function(t){var e=t.name,n=t.model,i=Date.now();n.fit(a,s,r);var c=Date.now()-i,f=Date.now(),h=n.score(o,u),d=Date.now()-f;l.push({name:e,score:"classification"===r?h.accuracy:h.r2Score,trainTime:c,evalTime:d,fullScore:h})}),l.sort(function(t,e){return e.score-t.score}),{results:l,bestModel:l[0],comparison:this.generateComparisonReport(l,r)}},e.generateComparisonReport=function(t,e){var n="classification"===e?"Accuracy":"R² Score",r="\n"+"=".repeat(70)+"\n";return r+="š MODEL COMPARISON REPORT\n",r+="=".repeat(70)+"\n\n",r+="Metric: "+n+"\n\n",r+="Rank | Model | Score | Train Time | Eval Time\n",r+="-----+-------------------------+----------+------------+-----------\n",t.forEach(function(t,e){var n=(e+1).toString().padStart(4),i=t.name.padEnd(24),a=t.score.toFixed(4).padStart(8),o=(t.trainTime+"ms").padStart(10),s=(t.evalTime+"ms").padStart(9);r+=n+" | "+i+" | "+a+" | "+o+" | "+s+"\n"}),r+="\n"+"=".repeat(70)+"\n",r+="š Best Model: "+t[0].name+" ("+n+": "+t[0].score.toFixed(4)+")\n",r+="=".repeat(70)+"\n"},e.polynomialFeatures=function(t,e){return void 0===e&&(e=2),t.map(function(t){for(var n=[].concat(t),r=2;r<=e;r++)for(var i=0;i<t.length;i++)n.push(Math.pow(t[i],r));if(e>=2)for(var a=0;a<t.length;a++)for(var o=a+1;o<t.length;o++)n.push(t[a]*t[o]);return n})},e.standardScaler=function(t){for(var e=t.length,n=t[0].length,r=[],i=[],a=function(n){var a=t.map(function(t){return t[n]}),o=a.reduce(function(t,e){return t+e},0)/e,s=a.reduce(function(t,e){return t+Math.pow(e-o,2)},0)/e,u=Math.sqrt(s);r.push(o),i.push(0===u?1:u)},o=0;o<n;o++)a(o);var s=t.map(function(t){return t.map(function(t,e){return(t-r[e])/i[e]})});return{scaled:s,means:r,stds:i,transform:function(t){return t.map(function(t){return t.map(function(t,e){return(t-r[e])/i[e]})})}}},e.minMaxScaler=function(t,e){void 0===e&&(e=[0,1]);for(var n=t[0].length,r=[],i=[],a=e[0],o=e[1],s=function(e){var n=t.map(function(t){return t[e]});r.push(Math.min.apply(Math,n)),i.push(Math.max.apply(Math,n))},u=0;u<n;u++)s(u);var l=t.map(function(t){return t.map(function(t,e){var n=i[e]-r[e];return 0===n?a:a+(t-r[e])/n*(o-a)})});return{scaled:l,mins:r,maxs:i,transform:function(t){return t.map(function(t){return t.map(function(t,e){var n=i[e]-r[e];return 0===n?a:a+(t-r[e])/n*(o-a)})})}}},e.rocCurve=function(t,e){var n=e.map(function(e,n){return{probability:"object"==typeof e?Object.values(e)[1]:e,label:t[n]}});n.sort(function(t,e){return e.probability-t.probability});var r=t.filter(function(t){return 1===t||!0===t}).length,i=t.length-r,a=[0],o=[0],s=0,u=0;n.forEach(function(t){1===t.label||!0===t.label?s++:u++,a.push(s/r),o.push(u/i)});for(var l=0,c=1;c<o.length;c++)l+=(o[c]-o[c-1])*(a[c]+a[c-1])/2;return{fpr:o,tpr:a,auc:l,thresholds:n.map(function(t){return t.probability})}},e.precisionRecallCurve=function(t,e){var n=e.map(function(e,n){return{probability:"object"==typeof e?Object.values(e)[1]:e,label:t[n]}});n.sort(function(t,e){return e.probability-t.probability});var r=[],i=[],a=0,o=0,s=t.filter(function(t){return 1===t||!0===t}).length;return n.forEach(function(t){1===t.label||!0===t.label?a++:o++;var e=a/s;r.push(a/(a+o)),i.push(e)}),{precision:r,recall:i,thresholds:n.map(function(t){return t.probability})}},e.quickTrain=function(t,e,n,r){void 0===r&&(r={});var i,a=r.taskType,o=void 0===a?"classification":a,s=r.testSize,u=void 0===s?.2:s,l=r.normalize,c=void 0===l||l;switch(t.toLowerCase()){case"linear":case"linearregression":i=this.createLinearRegression(r);break;case"logistic":case"logisticregression":i=this.createLogisticRegression(r);break;case"knn":i=this.createKNN(r);break;case"tree":case"decisiontree":i=this.createDecisionTree(r);break;case"forest":case"randomforest":i=this.createRandomForest(r);break;case"naivebayes":case"nb":i=this.createNaiveBayes(r);break;case"svm":i=this.createSVM(r);break;default:throw new Error("Unknown model type: "+t)}var f=this.trainTestSplit(e,n,u),h=f.X_train,d=f.X_test,p=f.y_train,m=f.y_test;console.log("\nš Training "+t+"...");var g=Date.now();i.fit(h,p,c,o);var v=Date.now()-g;console.log("ā
Training completed in "+v+"ms"),console.log("\nš Evaluating model...");var y=i.score(d,m);return console.log("\n"+"=".repeat(60)),console.log("š RESULTS"),console.log(""+"=".repeat(60)),"classification"===o?(console.log("Accuracy: "+(100*y.accuracy).toFixed(2)+"%"),console.log("\nConfusion Matrix:"+y.confusionMatrix.display),console.log("\nPer-Class Metrics:"),Object.keys(y.classMetrics).forEach(function(t){var e=y.classMetrics[t];console.log(" "+t+":"),console.log(" Precision: "+(100*e.precision).toFixed(2)+"%"),console.log(" Recall: "+(100*e.recall).toFixed(2)+"%"),console.log(" F1-Score: "+(100*e.f1Score).toFixed(2)+"%")})):(console.log("R² Score: "+y.r2Score.toFixed(4)),console.log("MSE: "+y.mse.toFixed(4)),console.log("RMSE: "+y.rmse.toFixed(4)),console.log("MAE: "+y.mae.toFixed(4))),console.log("\n"+"=".repeat(60)+"\n"),{model:i,score:y,trainTime:v,summary:i.summary()}},t}(),V="http://www.w3.org/1999/xhtml",z={svg:"http://www.w3.org/2000/svg",xhtml:V,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function P(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),z.hasOwnProperty(e)?{space:z[e],local:t}:t}function R(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===V&&e.documentElement.namespaceURI===V?e.createElement(t):e.createElementNS(n,t)}}function O(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function L(t){var e=P(t);return(e.local?O:R)(e)}function j(){}function B(t){return null==t?j:function(){return this.querySelector(t)}}function $(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function W(){return[]}function H(t){return function(e){return e.matches(t)}}var G=Array.prototype.find;function X(){return this.firstElementChild}var Q=Array.prototype.filter;function U(){return Array.from(this.children)}function K(t){return new Array(t.length)}function J(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function Y(t,e,n,r,i,a){for(var o,s=0,u=e.length,l=a.length;s<l;++s)(o=e[s])?(o.__data__=a[s],r[s]=o):n[s]=new J(t,a[s]);for(;s<u;++s)(o=e[s])&&(i[s]=o)}function Z(t,e,n,r,i,a,o){var s,u,l,c=new Map,f=e.length,h=a.length,d=new Array(f);for(s=0;s<f;++s)(u=e[s])&&(d[s]=l=o.call(u,u.__data__,s,e)+"",c.has(l)?i[s]=u:c.set(l,u));for(s=0;s<h;++s)l=o.call(t,a[s],s,a)+"",(u=c.get(l))?(r[s]=u,u.__data__=a[s],c.delete(l)):n[s]=new J(t,a[s]);for(s=0;s<f;++s)(u=e[s])&&c.get(d[s])===u&&(i[s]=u)}function tt(t){return t.__data__}function et(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function nt(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function rt(t){return function(){this.removeAttribute(t)}}function it(t){return function(){this.removeAttributeNS(t.space,t.local)}}function at(t,e){return function(){this.setAttribute(t,e)}}function ot(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function st(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function ut(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function lt(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function ct(t){return function(){this.style.removeProperty(t)}}function ft(t,e,n){return function(){this.style.setProperty(t,e,n)}}function ht(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function dt(t){return function(){delete this[t]}}function pt(t,e){return function(){this[t]=e}}function mt(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function gt(t){return t.trim().split(/^|\s+/)}function vt(t){return t.classList||new yt(t)}function yt(t){this._node=t,this._names=gt(t.getAttribute("class")||"")}function bt(t,e){for(var n=vt(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function wt(t,e){for(var n=vt(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function Mt(t){return function(){bt(this,t)}}function xt(t){return function(){wt(this,t)}}function St(t,e){return function(){(e.apply(this,arguments)?bt:wt)(this,t)}}function Nt(){this.textContent=""}function Et(t){return function(){this.textContent=t}}function At(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function Ct(){this.innerHTML=""}function qt(t){return function(){this.innerHTML=t}}function kt(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function _t(){this.nextSibling&&this.parentNode.appendChild(this)}function Ft(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Tt(){return null}function Dt(){var t=this.parentNode;t&&t.removeChild(this)}function It(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Vt(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function zt(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r<a;++r)n=e[r],t.type&&n.type!==t.type||n.name!==t.name?e[++i]=n:this.removeEventListener(n.type,n.listener,n.options);++i?e.length=i:delete this.__on}}}function Pt(t,e,n){return function(){var r,i=this.__on,a=function(t){return function(e){t.call(this,e,this.__data__)}}(e);if(i)for(var o=0,s=i.length;o<s;++o)if((r=i[o]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=a,r.options=n),void(r.value=e);this.addEventListener(t.type,a,n),r={type:t.type,name:t.name,value:e,listener:a,options:n},i?i.push(r):this.__on=[r]}}function Rt(t,e,n){var r=lt(t),i=r.CustomEvent;"function"==typeof i?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function Ot(t,e){return function(){return Rt(this,t,e)}}function Lt(t,e){return function(){return Rt(this,t,e.apply(this,arguments))}}J.prototype={constructor:J,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}},yt.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var jt=[null];function Bt(t,e){this._groups=t,this._parents=e}function $t(t,e){return null==t||null==e?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Wt(t,e){return null==t||null==e?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function Ht(t){let e,n,r;function i(t,r,i=0,a=t.length){if(i<a){if(0!==e(r,r))return a;do{const e=i+a>>>1;n(t[e],r)<0?i=e+1:a=e}while(i<a)}return i}return 2!==t.length?(e=$t,n=(e,n)=>$t(t(e),n),r=(e,n)=>t(e)-n):(e=t===$t||t===Wt?t:Gt,n=t,r=t),{left:i,center:function(t,e,n=0,a=t.length){const o=i(t,e,n,a-1);return o>n&&r(t[o-1],e)>-r(t[o],e)?o-1:o},right:function(t,r,i=0,a=t.length){if(i<a){if(0!==e(r,r))return a;do{const e=i+a>>>1;n(t[e],r)<=0?i=e+1:a=e}while(i<a)}return i}}}function Gt(){return 0}Bt.prototype={constructor:Bt,select:function(t){"function"!=typeof t&&(t=B(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o,s=e[i],u=s.length,l=r[i]=new Array(u),c=0;c<u;++c)(a=s[c])&&(o=t.call(a,a.__data__,c,s))&&("__data__"in a&&(o.__data__=a.__data__),l[c]=o);return new Bt(r,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return $(t.apply(this,arguments))}}(t):function(t){return null==t?W:function(){return this.querySelectorAll(t)}}(t);for(var e=this._groups,n=e.length,r=[],i=[],a=0;a<n;++a)for(var o,s=e[a],u=s.length,l=0;l<u;++l)(o=s[l])&&(r.push(t.call(o,o.__data__,l,s)),i.push(o));return new Bt(r,i)},selectChild:function(t){return this.select(null==t?X:function(t){return function(){return G.call(this.children,t)}}("function"==typeof t?t:H(t)))},selectChildren:function(t){return this.selectAll(null==t?U:function(t){return function(){return Q.call(this.children,t)}}("function"==typeof t?t:H(t)))},filter:function(t){"function"!=typeof t&&(t=function(t){return function(){return this.matches(t)}}(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o=e[i],s=o.length,u=r[i]=[],l=0;l<s;++l)(a=o[l])&&t.call(a,a.__data__,l,o)&&u.push(a);return new Bt(r,this._parents)},data:function(t,e){if(!arguments.length)return Array.from(this,tt);var n=e?Z:Y,r=this._parents,i=this._groups;"function"!=typeof t&&(t=function(t){return function(){return t}}(t));for(var a=i.length,o=new Array(a),s=new Array(a),u=new Array(a),l=0;l<a;++l){var c=r[l],f=i[l],h=f.length,d=et(t.call(c,c&&c.__data__,l,r)),p=d.length,m=s[l]=new Array(p),g=o[l]=new Array(p);n(c,f,m,g,u[l]=new Array(h),d,e);for(var v,y,b=0,w=0;b<p;++b)if(v=m[b]){for(b>=w&&(w=b+1);!(y=g[w])&&++w<p;);v._next=y||null}}return(o=new Bt(o,r))._enter=s,o._exit=u,o},enter:function(){return new Bt(this._enter||this._groups.map(K),this._parents)},exit:function(){return new Bt(this._exit||this._groups.map(K),this._parents)},join:function(t,e,n){var r=this.enter(),i=this,a=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=e&&(i=e(i))&&(i=i.selection()),null==n?a.remove():n(a),r&&i?r.merge(i).order():i},merge:function(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,a=Math.min(i,r.length),o=new Array(i),s=0;s<a;++s)for(var u,l=n[s],c=r[s],f=l.length,h=o[s]=new Array(f),d=0;d<f;++d)(u=l[d]||c[d])&&(h[d]=u);for(;s<i;++s)o[s]=n[s];return new Bt(o,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r,i=t[e],a=i.length-1,o=i[a];--a>=0;)(r=i[a])&&(o&&4^r.compareDocumentPosition(o)&&o.parentNode.insertBefore(r,o),o=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=nt);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a<r;++a){for(var o,s=n[a],u=s.length,l=i[a]=new Array(u),c=0;c<u;++c)(o=s[c])&&(l[c]=o);l.sort(e)}return new Bt(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null},size:function(){let t=0;for(const e of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i,a=e[n],o=0,s=a.length;o<s;++o)(i=a[o])&&t.call(i,i.__data__,o,a);return this},attr:function(t,e){var n=P(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((null==e?n.local?it:rt:"function"==typeof e?n.local?ut:st:n.local?ot:at)(n,e))},style:function(t,e,n){return arguments.length>1?this.each((null==e?ct:"function"==typeof e?ht:ft)(t,e,null==n?"":n)):function(t,e){return t.style.getPropertyValue(e)||lt(t).getComputedStyle(t,null).getPropertyValue(e)}(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?dt:"function"==typeof e?mt:pt)(t,e)):this.node()[t]},classed:function(t,e){var n=gt(t+"");if(arguments.length<2){for(var r=vt(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each(("function"==typeof e?St:e?Mt:xt)(n,e))},text:function(t){return arguments.length?this.each(null==t?Nt:("function"==typeof t?At:Et)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?Ct:("function"==typeof t?kt:qt)(t)):this.node().innerHTML},raise:function(){return this.each(_t)},lower:function(){return this.each(Ft)},append:function(t){var e="function"==typeof t?t:L(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})},insert:function(t,e){var n="function"==typeof t?t:L(t),r=null==e?Tt:"function"==typeof e?e:B(e);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})},remove:function(){return this.each(Dt)},clone:function(t){return this.select(t?Vt:It)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,e,n){var r,i,a=function(t){return t.trim().split(/^|\s+/).map(function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}})}(t+""),o=a.length;if(!(arguments.length<2)){for(s=e?Pt:zt,r=0;r<o;++r)this.each(s(a[r],e,n));return this}var s=this.node().__on;if(s)for(var u,l=0,c=s.length;l<c;++l)for(r=0,u=s[l];r<o;++r)if((i=a[r]).type===u.type&&i.name===u.name)return u.value},dispatch:function(t,e){return this.each(("function"==typeof e?Lt:Ot)(t,e))},[Symbol.iterator]:function*(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r,i=t[e],a=0,o=i.length;a<o;++a)(r=i[a])&&(yield r)}};const Xt=Ht($t).right;Ht(function(t){return null===t?NaN:+t});var Qt=Xt;function Ut(t,e){let n,r;if(void 0===e)for(const e of t)null!=e&&(void 0===n?e>=e&&(n=r=e):(n>e&&(n=e),r<e&&(r=e)));else{let i=-1;for(let a of t)null!=(a=e(a,++i,t))&&(void 0===n?a>=a&&(n=r=a):(n>a&&(n=a),r<a&&(r=a)))}return[n,r]}class Kt extends Map{constructor(t,e=Yt){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[e,n]of t)this.set(e,n)}get(t){return super.get(Jt(this,t))}has(t){return super.has(Jt(this,t))}set(t,e){return super.set(function({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}(this,t),e)}delete(t){return super.delete(function({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}(this,t))}}function Jt({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Yt(t){return null!==t&&"object"==typeof t?t.valueOf():t}function Zt(t){return t}function te(t,e){return(null==t||!(t>=t))-(null==e||!(e>=e))||(t<e?-1:t>e?1:0)}var ee=Array.prototype.slice;function ne(t){return()=>t}const re=Math.sqrt(50),ie=Math.sqrt(10),ae=Math.sqrt(2);function oe(t,e,n){const r=(e-t)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/Math.pow(10,i),o=a>=re?10:a>=ie?5:a>=ae?2:1;let s,u,l;return i<0?(l=Math.pow(10,-i)/o,s=Math.round(t*l),u=Math.round(e*l),s/l<t&&++s,u/l>e&&--u,l=-l):(l=Math.pow(10,i)*o,s=Math.round(t/l),u=Math.round(e/l),s*l<t&&++s,u*l>e&&--u),u<s&&.5<=n&&n<2?oe(t,e,2*n):[s,u,l]}function se(t,e,n){if(!((n=+n)>0))return[];if((t=+t)===(e=+e))return[t];const r=e<t,[i,a,o]=r?oe(e,t,n):oe(t,e,n);if(!(a>=i))return[];const s=a-i+1,u=new Array(s);if(r)if(o<0)for(let t=0;t<s;++t)u[t]=(a-t)/-o;else for(let t=0;t<s;++t)u[t]=(a-t)*o;else if(o<0)for(let t=0;t<s;++t)u[t]=(i+t)/-o;else for(let t=0;t<s;++t)u[t]=(i+t)*o;return u}function ue(t,e,n){return oe(t=+t,e=+e,n=+n)[2]}function le(t){return Math.max(1,Math.ceil(Math.log(function(t){let e=0;for(let n of t)null!=n&&(n=+n)>=n&&++e;return e}(t))/Math.LN2)+1)}function ce(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n<e||void 0===n&&e>=e)&&(n=e);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n<i||void 0===n&&i>=i)&&(n=i)}return n}function fe(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n>e||void 0===n&&e>=e)&&(n=e);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n>i||void 0===n&&i>=i)&&(n=i)}return n}function he(t,e,n=0,r=Infinity,i){if(e=Math.floor(e),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(t.length-1,r)),!(n<=e&&e<=r))return t;for(i=void 0===i?te:function(t=$t){if(t===$t)return te;if("function"!=typeof t)throw new TypeError("compare is not a function");return(e,n)=>{const r=t(e,n);return r||0===r?r:(0===t(n,n))-(0===t(e,e))}}(i);r>n;){if(r-n>600){const a=r-n+1,o=e-n+1,s=Math.log(a),u=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*u*(a-u)/a)*(o-a/2<0?-1:1);he(t,e,Math.max(n,Math.floor(e-o*u/a+l)),Math.min(r,Math.floor(e+(a-o)*u/a+l)),i)}const a=t[e];let o=n,s=r;for(de(t,n,e),i(t[r],a)>0&&de(t,n,r);o<s;){for(de(t,o,s),++o,--s;i(t[o],a)<0;)++o;for(;i(t[s],a)>0;)--s}0===i(t[n],a)?de(t,n,s):(++s,de(t,s,r)),s<=e&&(n=s+1),e<=s&&(r=s-1)}return t}function de(t,e,n){const r=t[e];t[e]=t[n],t[n]=r}function pe(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=0|Math.max(0,Math.ceil((e-t)/n)),a=new Array(i);++r<i;)a[r]=t+r*n;return a}function me(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}function ge(t,e){switch(arguments.length){case 0:break;case 1:"function"==typeof t?this.interpolator(t):this.range(t);break;default:this.domain(t),"function"==typeof e?this.interpolator(e):this.range(e)}return this}const ve=Symbol("implicit");function ye(){var t=new Kt,e=[],n=[],r=ve;function i(i){let a=t.get(i);if(void 0===a){if(r!==ve)return r;t.set(i,a=e.push(i)-1)}return n[a%n.length]}return i.domain=function(n){if(!arguments.length)return e.slice();e=[],t=new Kt;for(const r of n)t.has(r)||t.set(r,e.push(r)-1);return i},i.range=function(t){return arguments.length?(n=Array.from(t),i):n.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return ye(e,n).unknown(r)},me.apply(i,arguments),i}function be(){var t,e,n=ye().unknown(void 0),r=n.domain,i=n.range,a=0,o=1,s=!1,u=0,l=0,c=.5;function f(){var n=r().length,f=o<a,h=f?o:a,d=f?a:o;t=(d-h)/Math.max(1,n-u+2*l),s&&(t=Math.floor(t)),h+=(d-h-t*(n-u))*c,e=t*(1-u),s&&(h=Math.round(h),e=Math.round(e));var p=pe(n).map(function(e){return h+t*e});return i(f?p.reverse():p)}return delete n.unknown,n.domain=function(t){return arguments.length?(r(t),f()):r()},n.range=function(t){return arguments.length?([a,o]=t,a=+a,o=+o,f()):[a,o]},n.rangeRound=function(t){return[a,o]=t,a=+a,o=+o,s=!0,f()},n.bandwidth=function(){return e},n.step=function(){return t},n.round=function(t){return arguments.length?(s=!!t,f()):s},n.padding=function(t){return arguments.length?(u=Math.min(1,l=+t),f()):u},n.paddingInner=function(t){return arguments.length?(u=Math.min(1,t),f()):u},n.paddingOuter=function(t){return arguments.length?(l=+t,f()):l},n.align=function(t){return arguments.length?(c=Math.max(0,Math.min(1,t)),f()):c},n.copy=function(){return be(r(),[a,o]).round(s).paddingInner(u).paddingOuter(l).align(c)},me.apply(f(),arguments)}function we(t){var e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,delete t.paddingOuter,t.copy=function(){return we(e())},t}function Me(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function xe(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Se(){}var Ne=.7,Ee=1/Ne,Ae="\\s*([+-]?\\d+)\\s*",Ce="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",qe="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",ke=/^#([0-9a-f]{3,8})$/,_e=new RegExp(`^rgb\\(${Ae},${Ae},${Ae}\\)$`),Fe=new RegExp(`^rgb\\(${qe},${qe},${qe}\\)$`),Te=new RegExp(`^rgba\\(${Ae},${Ae},${Ae},${Ce}\\)$`),De=new RegExp(`^rgba\\(${qe},${qe},${qe},${Ce}\\)$`),Ie=new RegExp(`^hsl\\(${Ce},${qe},${qe}\\)$`),Ve=new RegExp(`^hsla\\(${Ce},${qe},${qe},${Ce}\\)$`),ze={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Pe(){return this.rgb().formatHex()}function Re(){return this.rgb().formatRgb()}function Oe(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=ke.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?Le(e):3===n?new $e(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?je(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?je(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=_e.exec(t))?new $e(e[1],e[2],e[3],1):(e=Fe.exec(t))?new $e(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Te.exec(t))?je(e[1],e[2],e[3],e[4]):(e=De.exec(t))?je(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=Ie.exec(t))?Ue(e[1],e[2]/100,e[3]/100,1):(e=Ve.exec(t))?Ue(e[1],e[2]/100,e[3]/100,e[4]):ze.hasOwnProperty(t)?Le(ze[t]):"transparent"===t?new $e(NaN,NaN,NaN,0):null}function Le(t){return new $e(t>>16&255,t>>8&255,255&t,1)}function je(t,e,n,r){return r<=0&&(t=e=n=NaN),new $e(t,e,n,r)}function Be(t,e,n,r){return 1===arguments.length?((i=t)instanceof Se||(i=Oe(i)),i?new $e((i=i.rgb()).r,i.g,i.b,i.opacity):new $e):new $e(t,e,n,null==r?1:r);var i}function $e(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function We(){return`#${Qe(this.r)}${Qe(this.g)}${Qe(this.b)}`}function He(){const t=Ge(this.opacity);return`${1===t?"rgb(":"rgba("}${Xe(this.r)}, ${Xe(this.g)}, ${Xe(this.b)}${1===t?")":`, ${t})`}`}function Ge(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Xe(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Qe(t){return((t=Xe(t))<16?"0":"")+t.toString(16)}function Ue(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Je(t,e,n,r)}function Ke(t){if(t instanceof Je)return new Je(t.h,t.s,t.l,t.opacity);if(t instanceof Se||(t=Oe(t)),!t)return new Je;if(t instanceof Je)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,u=(a+i)/2;return s?(o=e===a?(n-r)/s+6*(n<r):n===a?(r-e)/s+2:(e-n)/s+4,s/=u<.5?a+i:2-a-i,o*=60):s=u>0&&u<1?0:o,new Je(o,s,u,t.opacity)}function Je(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function Ye(t){return(t=(t||0)%360)<0?t+360:t}function Ze(t){return Math.max(0,Math.min(1,t||0))}function tn(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}Me(Se,Oe,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Pe,formatHex:Pe,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Ke(this).formatHsl()},formatRgb:Re,toString:Re}),Me($e,Be,xe(Se,{brighter(t){return t=null==t?Ee:Math.pow(Ee,t),new $e(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?Ne:Math.pow(Ne,t),new $e(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new $e(Xe(this.r),Xe(this.g),Xe(this.b),Ge(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:We,formatHex:We,formatHex8:function(){return`#${Qe(this.r)}${Qe(this.g)}${Qe(this.b)}${Qe(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:He,toString:He})),Me(Je,function(t,e,n,r){return 1===arguments.length?Ke(t):new Je(t,e,n,null==r?1:r)},xe(Se,{brighter(t){return t=null==t?Ee:Math.pow(Ee,t),new Je(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?Ne:Math.pow(Ne,t),new Je(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new $e(tn(t>=240?t-240:t+120,i,r),tn(t,i,r),tn(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new Je(Ye(this.h),Ze(this.s),Ze(this.l),Ge(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Ge(this.opacity);return`${1===t?"hsl(":"hsla("}${Ye(this.h)}, ${100*Ze(this.s)}%, ${100*Ze(this.l)}%${1===t?")":`, ${t})`}`}}));var en=t=>()=>t;function nn(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):en(isNaN(t)?e:t)}var rn,an=function t(e){var n=function(t){return 1===(t=+t)?nn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):en(isNaN(e)?n:e)}}(e);function r(t,e){var r=n((t=Be(t)).r,(e=Be(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),o=nn(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return r.gamma=t,r}(1),on=(rn=function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1];return function(t,e,n,r,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*r+o*i)/6}((n-r/e)*e,r>0?t[r-1]:2*i-a,i,a,r<e-1?t[r+2]:2*a-i)}},function(t){var e,n,r=t.length,i=new Array(r),a=new Array(r),o=new Array(r);for(e=0;e<r;++e)n=Be(t[e]),i[e]=n.r||0,a[e]=n.g||0,o[e]=n.b||0;return i=rn(i),a=rn(a),o=rn(o),n.opacity=1,function(t){return n.r=i(t),n.g=a(t),n.b=o(t),n+""}});function sn(t,e){e||(e=[]);var n,r=t?Math.min(e.length,t.length):0,i=e.slice();return function(a){for(n=0;n<r;++n)i[n]=t[n]*(1-a)+e[n]*a;return i}}function un(t,e){var n,r=e?e.length:0,i=t?Math.min(r,t.length):0,a=new Array(i),o=new Array(r);for(n=0;n<i;++n)a[n]=mn(t[n],e[n]);for(;n<r;++n)o[n]=e[n];return function(t){for(n=0;n<i;++n)o[n]=a[n](t);return o}}function ln(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function cn(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function fn(t,e){var n,r={},i={};for(n in null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={}),e)n in t?r[n]=mn(t[n],e[n]):i[n]=e[n];return function(t){for(n in r)i[n]=r[n](t);return i}}var hn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,dn=new RegExp(hn.source,"g");function pn(t,e){var n,r,i,a=hn.lastIndex=dn.lastIndex=0,o=-1,s=[],u=[];for(t+="",e+="";(n=hn.exec(t))&&(r=dn.exec(e));)(i=r.index)>a&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,u.push({i:o,x:cn(n,r)})),a=dn.lastIndex;return a<e.length&&(i=e.slice(a),s[o]?s[o]+=i:s[++o]=i),s.length<2?u[0]?function(t){return function(e){return t(e)+""}}(u[0].x):function(t){return function(){return t}}(e):(e=u.length,function(t){for(var n,r=0;r<e;++r)s[(n=u[r]).i]=n.x(t);return s.join("")})}function mn(t,e){var n,r=typeof e;return null==e||"boolean"===r?en(e):("number"===r?cn:"string"===r?(n=Oe(e))?(e=n,an):pn:e instanceof Oe?an:e instanceof Date?ln:function(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}(e)?sn:Array.isArray(e)?un:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?fn:cn)(t,e)}function gn(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}function vn(t){return+t}var yn=[0,1];function bn(t){return t}function wn(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:function(t){return function(){return t}}(isNaN(e)?NaN:.5)}function Mn(t,e,n){var r=t[0],i=t[1],a=e[0],o=e[1];return i<r?(r=wn(i,r),a=n(o,a)):(r=wn(r,i),a=n(a,o)),function(t){return a(r(t))}}function xn(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),a=new Array(r),o=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++o<r;)i[o]=wn(t[o],t[o+1]),a[o]=n(e[o],e[o+1]);return function(e){var n=Qt(t,e,1,r)-1;return a[n](i[n](e))}}function Sn(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function Nn(t){return(t=Sn(Math.abs(t)))?t[1]:NaN}var En,An=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Cn(t){if(!(e=An.exec(t)))throw new Error("invalid format: "+t);var e;return new qn({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function qn(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function kn(t,e){var n=Sn(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}Cn.prototype=qn.prototype,qn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var _n={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>kn(100*t,e),r:kn,s:function(t,e){var n=Sn(t,e);if(!n)return t+"";var r=n[0],i=n[1],a=i-(En=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=r.length;return a===o?r:a>o?r+new Array(a-o+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+Sn(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Fn(t){return t}var Tn,Dn,In,Vn=Array.prototype.map,zn=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Pn(t){var e=t.domain;return t.ticks=function(t){var n=e();return se(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return function(t,e,n,r){var i,a=function(t,e,n){n=+n;const r=(e=+e)<(t=+t),i=r?ue(e,t,n):ue(t,e,n);return(r?-1:1)*(i<0?1/-i:i)}(t,e,n);switch((r=Cn(null==r?",f":r)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(i=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Nn(e)/3)))-Nn(Math.abs(t)))}(a,o))||(r.precision=i),In(r,o);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Nn(e)-Nn(t))+1}(a,Math.max(Math.abs(t),Math.abs(e))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(t){return Math.max(0,-Nn(Math.abs(t)))}(a))||(r.precision=i-2*("%"===r.type))}return Dn(r)}(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,i,a=e(),o=0,s=a.length-1,u=a[o],l=a[s],c=10;for(l<u&&(i=u,u=l,l=i,i=o,o=s,s=i);c-- >0;){if((i=ue(u,l,n))===r)return a[o]=u,a[s]=l,e(a);if(i>0)u=Math.floor(u/i)*i,l=Math.ceil(l/i)*i;else{if(!(i<0))break;u=Math.ceil(u*i)/i,l=Math.floor(l*i)/i}r=i}return t},t}function Rn(t){return t}Tn=function(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?Fn:(e=Vn.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var i=t.length,a=[],o=0,s=e[0],u=0;i>0&&s>0&&(u+s+1>r&&(s=Math.max(1,r-u)),a.push(t.substring(i-=s,i+s)),!((u+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?Fn:function(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}(Vn.call(t.numerals,String)),u=void 0===t.percent?"%":t.percent+"",l=void 0===t.minus?"ā":t.minus+"",c=void 0===t.nan?"NaN":t.nan+"";function f(t){var e=(t=Cn(t)).fill,n=t.align,f=t.sign,h=t.symbol,d=t.zero,p=t.width,m=t.comma,g=t.precision,v=t.trim,y=t.type;"n"===y?(m=!0,y="g"):_n[y]||(void 0===g&&(g=12),v=!0,y="g"),(d||"0"===e&&"="===n)&&(d=!0,e="0",n="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(y)?"0"+y.toLowerCase():"",w="$"===h?a:/[%p]/.test(y)?u:"",M=_n[y],x=/[defgprs%]/.test(y);function S(t){var i,a,u,h=b,S=w;if("c"===y)S=M(t)+S,t="";else{var N=(t=+t)<0||1/t<0;if(t=isNaN(t)?c:M(Math.abs(t),g),v&&(t=function(t){t:for(var e,n=t.length,r=1,i=-1;r<n;++r)switch(t[r]){case".":i=e=r;break;case"0":0===i&&(i=r),e=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),N&&0===+t&&"+"!==f&&(N=!1),h=(N?"("===f?f:l:"-"===f||"("===f?"":f)+h,S=("s"===y?zn[8+En/3]:"")+S+(N&&"("===f?")":""),x)for(i=-1,a=t.length;++i<a;)if(48>(u=t.charCodeAt(i))||u>57){S=(46===u?o+t.slice(i+1):t.slice(i))+S,t=t.slice(0,i);break}}m&&!d&&(t=r(t,Infinity));var E=h.length+t.length+S.length,A=E<p?new Array(p-E+1).join(e):"";switch(m&&d&&(t=r(A+t,A.length?p-S.length:Infinity),A=""),n){case"<":t=h+t+S+A;break;case"=":t=h+A+t+S;break;case"^":t=A.slice(0,E=A.length>>1)+h+t+S+A.slice(E);break;default:t=A+h+t+S}return s(t)}return g=void 0===g?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),S.toString=function(){return t+""},S}return{format:f,formatPrefix:function(t,e){var n=f(((t=Cn(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(Nn(e)/3))),i=Math.pow(10,-r),a=zn[8+r/3];return function(t){return n(i*t)+a}}}}({thousands:",",grouping:[3],currency:["$",""]}),Dn=Tn.format,In=Tn.formatPrefix;var On=1e-6;function Ln(t){return"translate("+t+",0)"}function jn(t){return"translate(0,"+t+")"}function Bn(t){return e=>+t(e)}function $n(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function Wn(){return!this.__axis}function Hn(t,e){var n=[],r=null,i=null,a=6,o=6,s=3,u="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,l=1===t||4===t?-1:1,c=4===t||2===t?"x":"y",f=1===t||3===t?Ln:jn;function h(h){var d=null==r?e.ticks?e.ticks.apply(e,n):e.domain():r,p=null==i?e.tickFormat?e.tickFormat.apply(e,n):Rn:i,m=Math.max(a,0)+s,g=e.range(),v=+g[0]+u,y=+g[g.length-1]+u,b=(e.bandwidth?$n:Bn)(e.copy(),u),w=h.selection?h.selection():h,M=w.selectAll(".domain").data([null]),x=w.selectAll(".tick").data(d,e).order(),S=x.exit(),N=x.enter().append("g").attr("class","tick"),E=x.select("line"),A=x.select("text");M=M.merge(M.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),x=x.merge(N),E=E.merge(N.append("line").attr("stroke","currentColor").attr(c+"2",l*a)),A=A.merge(N.append("text").attr("fill","currentColor").attr(c,l*m).attr("dy",1===t?"0em":3===t?"0.71em":"0.32em")),h!==w&&(M=M.transition(h),x=x.transition(h),E=E.transition(h),A=A.transition(h),S=S.transition(h).attr("opacity",On).attr("transform",function(t){return isFinite(t=b(t))?f(t+u):this.getAttribute("transform")}),N.attr("opacity",On).attr("transform",function(t){var e=this.parentNode.__axis;return f((e&&isFinite(e=e(t))?e:b(t))+u)})),S.remove(),M.attr("d",4===t||2===t?o?"M"+l*o+","+v+"H"+u+"V"+y+"H"+l*o:"M"+u+","+v+"V"+y:o?"M"+v+","+l*o+"V"+u+"H"+y+"V"+l*o:"M"+v+","+u+"H"+y),x.attr("opacity",1).attr("transform",function(t){return f(b(t)+u)}),E.attr(c+"2",l*a),A.attr(c,l*m).text(p),w.filter(Wn).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===t?"start":4===t?"end":"middle"),w.each(function(){this.__axis=b})}return h.scale=function(t){return arguments.length?(e=t,h):e},h.ticks=function(){return n=Array.from(arguments),h},h.tickArguments=function(t){return arguments.length?(n=null==t?[]:Array.from(t),h):n.slice()},h.tickValues=function(t){return arguments.length?(r=null==t?null:Array.from(t),h):r&&r.slice()},h.tickFormat=function(t){return arguments.length?(i=t,h):i},h.tickSize=function(t){return arguments.length?(a=o=+t,h):a},h.tickSizeInner=function(t){return arguments.length?(a=+t,h):a},h.tickSizeOuter=function(t){return arguments.length?(o=+t,h):o},h.tickPadding=function(t){return arguments.length?(s=+t,h):s},h.offset=function(t){return arguments.length?(u=+t,h):u},h}function Gn(t){for(var e=t.length/6|0,n=new Array(e),r=0;r<e;)n[r]="#"+t.slice(6*r,6*++r);return n}var Xn,Qn=Gn("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),Un=on((Xn=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(Gn))[Xn.length-1]);function Kn(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}var Jn=Kn(Gn("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));function Yn(t){return function(){return t}}Kn(Gn("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),Kn(Gn("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),Kn(Gn("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));const Zn=Math.abs,tr=Math.atan2,er=Math.cos,nr=Math.max,rr=Math.min,ir=Math.sin,ar=Math.sqrt,or=1e-12,sr=Math.PI,ur=sr/2,lr=2*sr;function cr(t){return t>=1?ur:t<=-1?-ur:Math.asin(t)}const fr=Math.PI,hr=2*fr,dr=1e-6,pr=hr-dr;function mr(t){this._+=t[0];for(let e=1,n=t.length;e<n;++e)this._+=arguments[e]+t[e]}class gr{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==t?mr:function(t){let e=Math.floor(t);if(!(e>=0))throw new Error(`invalid digits: ${t}`);if(e>15)return mr;const n=10**e;return function(t){this._+=t[0];for(let e=1,r=t.length;e<r;++e)this._+=Math.round(arguments[e]*n)/n+t[e]}}(t)}moveTo(t,e){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,e){this._append`L${this._x1=+t},${this._y1=+e}`}quadraticCurveTo(t,e,n,r){this._append`Q${+t},${+e},${this._x1=+n},${this._y1=+r}`}bezierCurveTo(t,e,n,r,i,a){this._append`C${+t},${+e},${+n},${+r},${this._x1=+i},${this._y1=+a}`}arcTo(t,e,n,r,i){if(t=+t,e=+e,n=+n,r=+r,(i=+i)<0)throw new Error(`negative radius: ${i}`);let a=this._x1,o=this._y1,s=n-t,u=r-e,l=a-t,c=o-e,f=l*l+c*c;if(null===this._x1)this._append`M${this._x1=t},${this._y1=e}`;else if(f>dr)if(Math.abs(c*s-u*l)>dr&&i){let h=n-a,d=r-o,p=s*s+u*u,m=h*h+d*d,g=Math.sqrt(p),v=Math.sqrt(f),y=i*Math.tan((fr-Math.acos((p+f-m)/(2*g*v)))/2),b=y/v,w=y/g;Math.abs(b-1)>dr&&this._append`L${t+b*l},${e+b*c}`,this._append`A${i},${i},0,0,${+(c*h>l*d)},${this._x1=t+w*s},${this._y1=e+w*u}`}else this._append`L${this._x1=t},${this._y1=e}`}arc(t,e,n,r,i,a){if(t=+t,e=+e,a=!!a,(n=+n)<0)throw new Error(`negative radius: ${n}`);let o=n*Math.cos(r),s=n*Math.sin(r),u=t+o,l=e+s,c=1^a,f=a?r-i:i-r;null===this._x1?this._append`M${u},${l}`:(Math.abs(this._x1-u)>dr||Math.abs(this._y1-l)>dr)&&this._append`L${u},${l}`,n&&(f<0&&(f=f%hr+hr),f>pr?this._append`A${n},${n},0,1,${c},${t-o},${e-s}A${n},${n},0,1,${c},${this._x1=u},${this._y1=l}`:f>dr&&this._append`A${n},${n},0,${+(f>=fr)},${c},${this._x1=t+n*Math.cos(i)},${this._y1=e+n*Math.sin(i)}`)}rect(t,e,n,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${n=+n}v${+r}h${-n}Z`}toString(){return this._}}function vr(t){let e=3;return t.digits=function(n){if(!arguments.length)return e;if(null==n)e=null;else{const t=Math.floor(n);if(!(t>=0))throw new RangeError(`invalid digits: ${n}`);e=t}return t},()=>new gr(e)}function yr(t){return t.innerRadius}function br(t){return t.outerRadius}function wr(t){return t.startAngle}function Mr(t){return t.endAngle}function xr(t){return t&&t.padAngle}function Sr(t,e,n,r,i,a,o){var s=t-n,u=e-r,l=(o?a:-a)/ar(s*s+u*u),c=l*u,f=-l*s,h=t+c,d=e+f,p=n+c,m=r+f,g=(h+p)/2,v=(d+m)/2,y=p-h,b=m-d,w=y*y+b*b,M=i-a,x=h*m-p*d,S=(b<0?-1:1)*ar(nr(0,M*M*w-x*x)),N=(x*b-y*S)/w,E=(-x*y-b*S)/w,A=(x*b+y*S)/w,C=(-x*y+b*S)/w,q=N-g,k=E-v,_=A-g,F=C-v;return q*q+k*k>_*_+F*F&&(N=A,E=C),{cx:N,cy:E,x01:-c,y01:-f,x11:N*(i/M-1),y11:E*(i/M-1)}}function Nr(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function Er(t){this._context=t}function Ar(t){return new Er(t)}function Cr(t){return t[0]}function qr(t){return t[1]}function kr(t,e){var n=Yn(!0),r=null,i=Ar,a=null,o=vr(s);function s(s){var u,l,c,f=(s=Nr(s)).length,h=!1;for(null==r&&(a=i(c=o())),u=0;u<=f;++u)!(u<f&&n(l=s[u],u,s))===h&&((h=!h)?a.lineStart():a.lineEnd()),h&&a.point(+t(l,u,s),+e(l,u,s));if(c)return a=null,c+""||null}return t="function"==typeof t?t:void 0===t?Cr:Yn(t),e="function"==typeof e?e:void 0===e?qr:Yn(e),s.x=function(e){return arguments.length?(t="function"==typeof e?e:Yn(+e),s):t},s.y=function(t){return arguments.length?(e="function"==typeof t?t:Yn(+t),s):e},s.defined=function(t){return arguments.length?(n="function"==typeof t?t:Yn(!!t),s):n},s.curve=function(t){return arguments.length?(i=t,null!=r&&(a=i(r)),s):i},s.context=function(t){return arguments.length?(null==t?r=a=null:a=i(r=t),s):r},s}function _r(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}function Fr(t){return t}function Tr(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function Dr(t){this._context=t}Er.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}},Dr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Tr(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Tr(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var Ir={select:function(t){return"string"==typeof t?new Bt([[document.querySelector(t)]],[document.documentElement]):new Bt([[t]],jt)},selectAll:function(t){return"string"==typeof t?new Bt([document.querySelectorAll(t)],[document.documentElement]):new Bt([$(t)],jt)},scaleLinear:function t(){var e=function(){var t,e,n,r,i,a,o=yn,s=yn,u=mn,l=bn;function c(){var t,e,n,u=Math.min(o.length,s.length);return l!==bn&&((t=o[0])>(e=o[u-1])&&(n=t,t=e,e=n),l=function(n){return Math.max(t,Math.min(e,n))}),r=u>2?xn:Mn,i=a=null,f}function f(e){return null==e||isNaN(e=+e)?n:(i||(i=r(o.map(t),s,u)))(t(l(e)))}return f.invert=function(n){return l(e((a||(a=r(s,o.map(t),cn)))(n)))},f.domain=function(t){return arguments.length?(o=Array.from(t,vn),c()):o.slice()},f.range=function(t){return arguments.length?(s=Array.from(t),c()):s.slice()},f.rangeRound=function(t){return s=Array.from(t),u=gn,c()},f.clamp=function(t){return arguments.length?(l=!!t||bn,c()):l!==bn},f.interpolate=function(t){return arguments.length?(u=t,c()):u},f.unknown=function(t){return arguments.length?(n=t,f):n},function(n,r){return t=n,e=r,c()}}()(bn,bn);return e.copy=function(){return n=e,t().domain(n.domain()).range(n.range()).interpolate(n.interpolate()).clamp(n.clamp()).unknown(n.unknown());var n},me.apply(e,arguments),Pn(e)},scaleBand:be,scalePoint:function(){return we(be.apply(null,arguments).paddingInner(1))},scaleOrdinal:ye,scaleSequential:function t(){var e=Pn(function(){var t,e,n,r,i,a=0,o=1,s=bn,u=!1;function l(e){return null==e||isNaN(e=+e)?i:s(0===n?.5:(e=(r(e)-t)*n,u?Math.max(0,Math.min(1,e)):e))}function c(t){return function(e){var n,r;return arguments.length?([n,r]=e,s=t(n,r),l):[s(0),s(1)]}}return l.domain=function(i){return arguments.length?([a,o]=i,t=r(a=+a),e=r(o=+o),n=t===e?0:1/(e-t),l):[a,o]},l.clamp=function(t){return arguments.length?(u=!!t,l):u},l.interpolator=function(t){return arguments.length?(s=t,l):s},l.range=c(mn),l.rangeRound=c(gn),l.unknown=function(t){return arguments.length?(i=t,l):i},function(i){return r=i,t=i(a),e=i(o),n=t===e?0:1/(e-t),l}}()(bn));return e.copy=function(){return n=e,t().domain(n.domain()).interpolator(n.interpolator()).clamp(n.clamp()).unknown(n.unknown());var n},ge.apply(e,arguments)},extent:Ut,max:ce,min:fe,sum:function(t,e){let n=0;if(void 0===e)for(let e of t)(e=+e)&&(n+=e);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n},deviation:function(t,e){const n=function(t,e){let n,r=0,i=0,a=0;if(void 0===e)for(let e of t)null!=e&&(e=+e)>=e&&(n=e-i,i+=n/++r,a+=n*(e-i));else{let o=-1;for(let s of t)null!=(s=e(s,++o,t))&&(s=+s)>=s&&(n=s-i,i+=n/++r,a+=n*(s-i))}if(r>1)return a/(r-1)}(t,e);return n?Math.sqrt(n):n},mean:function(t,e){let n=0,r=0;if(void 0===e)for(let e of t)null!=e&&(e=+e)>=e&&(++n,r+=e);else{let i=-1;for(let a of t)null!=(a=e(a,++i,t))&&(a=+a)>=a&&(++n,r+=a)}if(n)return r/n},quantile:function(t,e,n){if(t=Float64Array.from(function*(t,e){if(void 0===e)for(let e of t)null!=e&&(e=+e)>=e&&(yield e);else{let n=-1;for(let r of t)null!=(r=e(r,++n,t))&&(r=+r)>=r&&(yield r)}}(t,n)),(r=t.length)&&!isNaN(e=+e)){if(e<=0||r<2)return fe(t);if(e>=1)return ce(t);var r,i=(r-1)*e,a=Math.floor(i),o=ce(he(t,a).subarray(0,a+1));return o+(fe(t.subarray(a+1))-o)*(i-a)}},histogram:function(){var t=Zt,e=Ut,n=le;function r(r){Array.isArray(r)||(r=Array.from(r));var i,a,o,s=r.length,u=new Array(s);for(i=0;i<s;++i)u[i]=t(r[i],i,r);var l=e(u),c=l[0],f=l[1],h=n(u,c,f);if(!Array.isArray(h)){const t=f,n=+h;if(e===Ut&&([c,f]=function(t,e,n){let r;for(;;){const i=ue(t,e,n);if(i===r||0===i||!isFinite(i))return[t,e];i>0?(t=Math.floor(t/i)*i,e=Math.ceil(e/i)*i):i<0&&(t=Math.ceil(t*i)/i,e=Math.floor(e*i)/i),r=i}}(c,f,n)),(h=se(c,f,n))[0]<=c&&(o=ue(c,f,n)),h[h.length-1]>=f)if(t>=f&&e===Ut){const t=ue(c,f,n);isFinite(t)&&(t>0?f=(Math.floor(f/t)+1)*t:t<0&&(f=(Math.ceil(f*-t)+1)/-t))}else h.pop()}for(var d=h.length,p=0,m=d;h[p]<=c;)++p;for(;h[m-1]>f;)--m;(p||m<d)&&(h=h.slice(p,m),d=m-p);var g,v=new Array(d+1);for(i=0;i<=d;++i)(g=v[i]=[]).x0=i>0?h[i-1]:c,g.x1=i<d?h[i]:f;if(isFinite(o)){if(o>0)for(i=0;i<s;++i)null!=(a=u[i])&&c<=a&&a<=f&&v[Math.min(d,Math.floor((a-c)/o))].push(r[i]);else if(o<0)for(i=0;i<s;++i)if(null!=(a=u[i])&&c<=a&&a<=f){const t=Math.floor((c-a)*o);v[Math.min(d,t+(h[t]<=a))].push(r[i])}}else for(i=0;i<s;++i)null!=(a=u[i])&&c<=a&&a<=f&&v[Qt(h,a,0,d)].push(r[i]);return v}return r.value=function(e){return arguments.length?(t="function"==typeof e?e:ne(e),r):t},r.domain=function(t){return arguments.length?(e="function"==typeof t?t:ne([t[0],t[1]]),r):e},r.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:ne(Array.isArray(t)?ee.call(t):t),r):n},r},range:pe,axisBottom:function(t){return Hn(3,t)},axisLeft:function(t){return Hn(4,t)},line:kr,area:function(t,e,n){var r=null,i=Yn(!0),a=null,o=Ar,s=null,u=vr(l);function l(l){var c,f,h,d,p,m=(l=Nr(l)).length,g=!1,v=new Array(m),y=new Array(m);for(null==a&&(s=o(p=u())),c=0;c<=m;++c){if(!(c<m&&i(d=l[c],c,l))===g)if(g=!g)f=c,s.areaStart(),s.lineStart();else{for(s.lineEnd(),s.lineStart(),h=c-1;h>=f;--h)s.point(v[h],y[h]);s.lineEnd(),s.areaEnd()}g&&(v[c]=+t(d,c,l),y[c]=+e(d,c,l),s.point(r?+r(d,c,l):v[c],n?+n(d,c,l):y[c]))}if(p)return s=null,p+""||null}function c(){return kr().defined(i).curve(o).context(a)}return t="function"==typeof t?t:void 0===t?Cr:Yn(+t),e="function"==typeof e?e:Yn(void 0===e?0:+e),n="function"==typeof n?n:void 0===n?qr:Yn(+n),l.x=function(e){return arguments.length?(t="function"==typeof e?e:Yn(+e),r=null,l):t},l.x0=function(e){return arguments.length?(t="function"==typeof e?e:Yn(+e),l):t},l.x1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:Yn(+t),l):r},l.y=function(t){return arguments.length?(e="function"==typeof t?t:Yn(+t),n=null,l):e},l.y0=function(t){return arguments.length?(e="function"==typeof t?t:Yn(+t),l):e},l.y1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:Yn(+t),l):n},l.lineX0=l.lineY0=function(){return c().x(t).y(e)},l.lineY1=function(){return c().x(t).y(n)},l.lineX1=function(){return c().x(r).y(e)},l.defined=function(t){return arguments.length?(i="function"==typeof t?t:Yn(!!t),l):i},l.curve=function(t){return arguments.length?(o=t,null!=a&&(s=o(a)),l):o},l.context=function(t){return arguments.length?(null==t?a=s=null:s=o(a=t),l):a},l},curveBasis:function(t){return new Dr(t)},pie:function(){var t=Fr,e=_r,n=null,r=Yn(0),i=Yn(lr),a=Yn(0);function o(o){var s,u,l,c,f,h=(o=Nr(o)).length,d=0,p=new Array(h),m=new Array(h),g=+r.apply(this,arguments),v=Math.min(lr,Math.max(-lr,i.apply(this,arguments)-g)),y=Math.min(Math.abs(v)/h,a.apply(this,arguments)),b=y*(v<0?-1:1);for(s=0;s<h;++s)(f=m[p[s]=s]=+t(o[s],s,o))>0&&(d+=f);for(null!=e?p.sort(function(t,n){return e(m[t],m[n])}):null!=n&&p.sort(function(t,e){return n(o[t],o[e])}),s=0,l=d?(v-h*b)/d:0;s<h;++s,g=c)m[u=p[s]]={data:o[u],index:s,value:f=m[u],startAngle:g,endAngle:c=g+(f>0?f*l:0)+b,padAngle:y};return m}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:Yn(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,n=null,o):e},o.sort=function(t){return arguments.length?(n=t,e=null,o):n},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:Yn(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:Yn(+t),o):i},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:Yn(+t),o):a},o},arc:function(){var t=yr,e=br,n=Yn(0),r=null,i=wr,a=Mr,o=xr,s=null,u=vr(l);function l(){var l,c,f=+t.apply(this,arguments),h=+e.apply(this,arguments),d=i.apply(this,arguments)-ur,p=a.apply(this,arguments)-ur,m=Zn(p-d),g=p>d;if(s||(s=l=u()),h<f&&(c=h,h=f,f=c),h>or)if(m>lr-or)s.moveTo(h*er(d),h*ir(d)),s.arc(0,0,h,d,p,!g),f>or&&(s.moveTo(f*er(p),f*ir(p)),s.arc(0,0,f,p,d,g));else{var v,y,b=d,w=p,M=d,x=p,S=m,N=m,E=o.apply(this,arguments)/2,A=E>or&&(r?+r.apply(this,arguments):ar(f*f+h*h)),C=rr(Zn(h-f)/2,+n.apply(this,arguments)),q=C,k=C;if(A>or){var _=cr(A/f*ir(E)),F=cr(A/h*ir(E));(S-=2*_)>or?(M+=_*=g?1:-1,x-=_):(S=0,M=x=(d+p)/2),(N-=2*F)>or?(b+=F*=g?1:-1,w-=F):(N=0,b=w=(d+p)/2)}var T=h*er(b),D=h*ir(b),I=f*er(x),V=f*ir(x);if(C>or){var z,P=h*er(w),R=h*ir(w),O=f*er(M),L=f*ir(M);if(m<sr)if(z=function(t,e,n,r,i,a,o,s){var u=n-t,l=r-e,c=o-i,f=s-a,h=f*u-c*l;if(!(h*h<or))return[t+(h=(c*(e-a)-f*(t-i))/h)*u,e+h*l]}(T,D,O,L,P,R,I,V)){var j=T-z[0],B=D-z[1],$=P-z[0],W=R-z[1],H=1/ir(function(t){return t>1?0:t<-1?sr:Math.acos(t)}((j*$+B*W)/(ar(j*j+B*B)*ar($*$+W*W)))/2),G=ar(z[0]*z[0]+z[1]*z[1]);q=rr(C,(f-G)/(H-1)),k=rr(C,(h-G)/(H+1))}else q=k=0}N>or?k>or?(v=Sr(O,L,T,D,h,k,g),y=Sr(P,R,I,V,h,k,g),s.moveTo(v.cx+v.x01,v.cy+v.y01),k<C?s.arc(v.cx,v.cy,k,tr(v.y01,v.x01),tr(y.y01,y.x01),!g):(s.arc(v.cx,v.cy,k,tr(v.y01,v.x01),tr(v.y11,v.x11),!g),s.arc(0,0,h,tr(v.cy+v.y11,v.cx+v.x11),tr(y.cy+y.y11,y.cx+y.x11),!g),s.arc(y.cx,y.cy,k,tr(y.y11,y.x11),tr(y.y01,y.x01),!g))):(s.moveTo(T,D),s.arc(0,0,h,b,w,!g)):s.moveTo(T,D),f>or&&S>or?q>or?(v=Sr(I,V,P,R,f,-q,g),y=Sr(T,D,O,L,f,-q,g),s.lineTo(v.cx+v.x01,v.cy+v.y01),q<C?s.arc(v.cx,v.cy,q,tr(v.y01,v.x01),tr(y.y01,y.x01),!g):(s.arc(v.cx,v.cy,q,tr(v.y01,v.x01),tr(v.y11,v.x11),!g),s.arc(0,0,f,tr(v.cy+v.y11,v.cx+v.x11),tr(y.cy+y.y11,y.cx+y.x11),g),s.arc(y.cx,y.cy,q,tr(y.y11,y.x11),tr(y.y01,y.x01),!g))):s.arc(0,0,f,x,M,g):s.lineTo(I,V)}else s.moveTo(0,0);if(s.closePath(),l)return s=null,l+""||null}return l.centroid=function(){var n=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +a.apply(this,arguments))/2-sr/2;return[er(r)*n,ir(r)*n]},l.innerRadius=function(e){return arguments.length?(t="function"==typeof e?e:Yn(+e),l):t},l.outerRadius=function(t){return arguments.length?(e="function"==typeof t?t:Yn(+t),l):e},l.cornerRadius=function(t){return arguments.length?(n="function"==typeof t?t:Yn(+t),l):n},l.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:Yn(+t),l):r},l.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:Yn(+t),l):i},l.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:Yn(+t),l):a},l.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:Yn(+t),l):o},l.context=function(t){return arguments.length?(s=null==t?null:t,l):s},l},schemeCategory10:Qn,interpolateViridis:Jn,interpolateRdYlBu:Un},Vr=/*#__PURE__*/function(){function t(t){void 0===t&&(t="dataviz-container"),this.containerId=t,this.defaultWidth=800,this.defaultHeight=600,this.defaultMargin={top:40,right:40,bottom:60,left:60},this.colors=Ir.schemeCategory10}var e=t.prototype;return e.createContainer=function(t,e,n){void 0===e&&(e=this.defaultWidth),void 0===n&&(n=this.defaultHeight);var r=t||this.containerId,i=Ir.select("#"+r);i.empty()&&(i=Ir.select("body").append("div").attr("id",r).style("margin","20px")),i.selectAll("*").remove();var a=i.append("svg").attr("width",e).attr("height",n).style("background","#fff").style("border","1px solid #ddd").style("border-radius","8px");return{container:i,svg:a}},e.histogram=function(t,e){void 0===e&&(e={});var n=e.title,r=void 0===n?"Histogram":n,i=e.xlabel,a=void 0===i?"Value":i,o=e.ylabel,s=void 0===o?"Frequency":o,u=e.bins,l=void 0===u?30:u,c=e.color,f=void 0===c?"#4299e1":c,h=e.width,d=void 0===h?this.defaultWidth:h,p=e.height,m=void 0===p?this.defaultHeight:p,g=e.containerId,v=this.createContainer(void 0===g?null:g,d,m).svg,y=this.defaultMargin,b=d-y.left-y.right,w=m-y.top-y.bottom,M=v.append("g").attr("transform","translate("+y.left+","+y.top+")"),x=Ir.scaleLinear().domain(Ir.extent(t)).range([0,b]),S=Ir.histogram().domain(x.domain()).thresholds(x.ticks(l))(t),N=Ir.scaleLinear().domain([0,Ir.max(S,function(t){return t.length})]).range([w,0]);return M.selectAll("rect").data(S).join("rect").attr("x",function(t){return x(t.x0)+1}).attr("width",function(t){return Math.max(0,x(t.x1)-x(t.x0)-2)}).attr("y",function(t){return N(t.length)}).attr("height",function(t){return w-N(t.length)}).attr("fill",f).attr("opacity",.8).on("mouseover",function(){Ir.select(this).attr("opacity",1)}).on("mouseout",function(){Ir.select(this).attr("opacity",.8)}),M.append("g").attr("transform","translate(0,"+w+")").call(Ir.axisBottom(x)).append("text").attr("x",b/2).attr("y",40).attr("fill","#000").attr("text-anchor","middle").text(a),M.append("g").call(Ir.axisLeft(N)).append("text").attr("transform","rotate(-90)").attr("x",-w/2).attr("y",-40).attr("fill","#000").attr("text-anchor","middle").text(s),v.append("text").attr("x",d/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(r),this},e.boxplot=function(t,e){void 0===e&&(e={});var n=e.title,r=void 0===n?"Box Plot":n,i=e.xlabel,a=void 0===i?"Category":i,o=e.ylabel,s=void 0===o?"Value":o,u=e.labels,l=void 0===u?null:u,c=e.color,f=void 0===c?"#4299e1":c,h=e.width,d=void 0===h?this.defaultWidth:h,p=e.height,m=void 0===p?this.defaultHeight:p,g=e.containerId,v=this.createContainer(void 0===g?null:g,d,m).svg,y=this.defaultMargin,b=d-y.left-y.right,w=m-y.top-y.bottom,M=v.append("g").attr("transform","translate("+y.left+","+y.top+")"),x=Array.isArray(t[0])?t:[t],S=l||x.map(function(t,e){return"Group "+(e+1)}),N=x.map(function(t,e){var n=[].concat(t).sort(function(t,e){return t-e}),r=Ir.quantile(n,.25),i=Ir.quantile(n,.5),a=Ir.quantile(n,.75),o=a-r,s=Math.max(Ir.min(n),r-1.5*o),u=Math.min(Ir.max(n),a+1.5*o),l=n.filter(function(t){return t<s||t>u});return{label:S[e],q1:r,median:i,q3:a,min:s,max:u,outliers:l}}),E=Ir.scaleBand().domain(S).range([0,b]).padding(.3),A=Ir.scaleLinear().domain([Ir.min(N,function(t){return t.min}),Ir.max(N,function(t){return t.max})]).nice().range([w,0]);return N.forEach(function(t,e){var n=E(t.label)+E.bandwidth()/2,r=E.bandwidth();M.append("line").attr("x1",n).attr("x2",n).attr("y1",A(t.min)).attr("y2",A(t.max)).attr("stroke","#000").attr("stroke-width",1),M.append("rect").attr("x",E(t.label)).attr("y",A(t.q3)).attr("width",r).attr("height",A(t.q1)-A(t.q3)).attr("fill",f).attr("stroke","#000").attr("opacity",.7),M.append("line").attr("x1",E(t.label)).attr("x2",E(t.label)+r).attr("y1",A(t.median)).attr("y2",A(t.median)).attr("stroke","#000").attr("stroke-width",2),[t.min,t.max].forEach(function(t){M.append("line").attr("x1",n-r/4).attr("x2",n+r/4).attr("y1",A(t)).attr("y2",A(t)).attr("stroke","#000").attr("stroke-width",1)}),t.outliers.forEach(function(t){M.append("circle").attr("cx",n).attr("cy",A(t)).attr("r",3).attr("fill","red").attr("opacity",.6)})}),M.append("g").attr("transform","translate(0,"+w+")").call(Ir.axisBottom(E)).append("text").attr("x",b/2).attr("y",40).attr("fill","#000").attr("text-anchor","middle").text(a),M.append("g").call(Ir.axisLeft(A)).append("text").attr("transform","rotate(-90)").attr("x",-w/2).attr("y",-40).attr("fill","#000").attr("text-anchor","middle").text(s),v.append("text").attr("x",d/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(r),this},e.scatter=function(t,e,n){void 0===n&&(n={});var r=n.title,i=void 0===r?"Scatter Plot":r,a=n.xlabel,o=void 0===a?"X":a,s=n.ylabel,u=void 0===s?"Y":s,l=n.color,c=void 0===l?"#4299e1":l,f=n.size,h=void 0===f?5:f,d=n.labels,p=void 0===d?null:d,m=n.width,g=void 0===m?this.defaultWidth:m,v=n.height,y=void 0===v?this.defaultHeight:v,b=n.containerId,w=this.createContainer(void 0===b?null:b,g,y).svg,M=this.defaultMargin,x=g-M.left-M.right,S=y-M.top-M.bottom,N=w.append("g").attr("transform","translate("+M.left+","+M.top+")"),E=t.map(function(t,n){return{x:t,y:e[n],label:p?p[n]:null}}),A=Ir.scaleLinear().domain(Ir.extent(t)).nice().range([0,x]),C=Ir.scaleLinear().domain(Ir.extent(e)).nice().range([S,0]),q=Ir.select("body").append("div").style("position","absolute").style("background","rgba(0,0,0,0.8)").style("color","#fff").style("padding","8px").style("border-radius","4px").style("font-size","12px").style("pointer-events","none").style("opacity",0);return N.selectAll("circle").data(E).join("circle").attr("cx",function(t){return A(t.x)}).attr("cy",function(t){return C(t.y)}).attr("r",h).attr("fill",c).attr("opacity",.7).on("mouseover",function(t,e){Ir.select(this).attr("r",1.5*h).attr("opacity",1),q.style("opacity",1).html("X: "+e.x.toFixed(2)+"<br>Y: "+e.y.toFixed(2)+(e.label?"<br>"+e.label:"")).style("left",t.pageX+10+"px").style("top",t.pageY-10+"px")}).on("mouseout",function(){Ir.select(this).attr("r",h).attr("opacity",.7),q.style("opacity",0)}),N.append("g").attr("transform","translate(0,"+S+")").call(Ir.axisBottom(A)).append("text").attr("x",x/2).attr("y",40).attr("fill","#000").attr("text-anchor","middle").text(o),N.append("g").call(Ir.axisLeft(C)).append("text").attr("transform","rotate(-90)").attr("x",-S/2).attr("y",-40).attr("fill","#000").attr("text-anchor","middle").text(u),w.append("text").attr("x",g/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(i),this},e.line=function(t,e,n){void 0===n&&(n={});var r=n.title,i=void 0===r?"Line Chart":r,a=n.xlabel,o=void 0===a?"X":a,s=n.ylabel,u=void 0===s?"Y":s,l=n.color,c=void 0===l?"#4299e1":l,f=n.lineWidth,h=void 0===f?2:f,d=n.showPoints,p=void 0===d||d,m=n.width,g=void 0===m?this.defaultWidth:m,v=n.height,y=void 0===v?this.defaultHeight:v,b=n.containerId,w=this.createContainer(void 0===b?null:b,g,y).svg,M=this.defaultMargin,x=g-M.left-M.right,S=y-M.top-M.bottom,N=w.append("g").attr("transform","translate("+M.left+","+M.top+")"),E=t.map(function(t,n){return{x:t,y:e[n]}}),A=Ir.scaleLinear().domain(Ir.extent(t)).range([0,x]),C=Ir.scaleLinear().domain(Ir.extent(e)).nice().range([S,0]),q=Ir.line().x(function(t){return A(t.x)}).y(function(t){return C(t.y)});return N.append("path").datum(E).attr("fill","none").attr("stroke",c).attr("stroke-width",h).attr("d",q),p&&N.selectAll("circle").data(E).join("circle").attr("cx",function(t){return A(t.x)}).attr("cy",function(t){return C(t.y)}).attr("r",4).attr("fill",c),N.append("g").attr("transform","translate(0,"+S+")").call(Ir.axisBottom(A)).append("text").attr("x",x/2).attr("y",40).attr("fill","#000").attr("text-anchor","middle").text(o),N.append("g").call(Ir.axisLeft(C)).append("text").attr("transform","rotate(-90)").attr("x",-S/2).attr("y",-40).attr("fill","#000").attr("text-anchor","middle").text(u),w.append("text").attr("x",g/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(i),this},e.bar=function(t,e,n){void 0===n&&(n={});var r=n.title,i=void 0===r?"Bar Chart":r,a=n.xlabel,o=void 0===a?"Category":a,s=n.ylabel,u=void 0===s?"Value":s,l=n.color,c=void 0===l?"#4299e1":l,f=n.horizontal,h=void 0!==f&&f,d=n.width,p=void 0===d?this.defaultWidth:d,m=n.height,g=void 0===m?this.defaultHeight:m,v=n.containerId,y=this.createContainer(void 0===v?null:v,p,g).svg,b=this.defaultMargin,w=p-b.left-b.right,M=g-b.top-b.bottom,x=y.append("g").attr("transform","translate("+b.left+","+b.top+")"),S=t.map(function(t,n){return{category:t,value:e[n]}});if(h){var N=Ir.scaleLinear().domain([0,Ir.max(e)]).nice().range([0,w]),E=Ir.scaleBand().domain(t).range([0,M]).padding(.2);x.selectAll("rect").data(S).join("rect").attr("x",0).attr("y",function(t){return E(t.category)}).attr("width",function(t){return N(t.value)}).attr("height",E.bandwidth()).attr("fill",c).attr("opacity",.8).on("mouseover",function(){Ir.select(this).attr("opacity",1)}).on("mouseout",function(){Ir.select(this).attr("opacity",.8)}),x.append("g").attr("transform","translate(0,"+M+")").call(Ir.axisBottom(N)),x.append("g").call(Ir.axisLeft(E))}else{var A=Ir.scaleBand().domain(t).range([0,w]).padding(.2),C=Ir.scaleLinear().domain([0,Ir.max(e)]).nice().range([M,0]);x.selectAll("rect").data(S).join("rect").attr("x",function(t){return A(t.category)}).attr("y",function(t){return C(t.value)}).attr("width",A.bandwidth()).attr("height",function(t){return M-C(t.value)}).attr("fill",c).attr("opacity",.8).on("mouseover",function(){Ir.select(this).attr("opacity",1)}).on("mouseout",function(){Ir.select(this).attr("opacity",.8)}),x.append("g").attr("transform","translate(0,"+M+")").call(Ir.axisBottom(A)).selectAll("text").attr("transform","rotate(-45)").style("text-anchor","end"),x.append("g").call(Ir.axisLeft(C))}return y.append("text").attr("x",p/2).attr("y",g-10).attr("text-anchor","middle").text(o),y.append("text").attr("transform","rotate(-90)").attr("x",-g/2).attr("y",15).attr("text-anchor","middle").text(u),y.append("text").attr("x",p/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(i),this},e.pie=function(t,e,n){void 0===n&&(n={});var r=n.title,i=void 0===r?"Pie Chart":r,a=n.width,o=void 0===a?this.defaultWidth:a,s=n.height,u=void 0===s?this.defaultHeight:s,l=n.showLabels,c=void 0===l||l,f=n.showPercentage,h=void 0===f||f,d=n.containerId,p=this.createContainer(void 0===d?null:d,o,u).svg,m=Math.min(o,u)/2-40,g=p.append("g").attr("transform","translate("+o/2+","+u/2+")"),v=t.map(function(t,n){return{label:t,value:e[n]}}),y=Ir.sum(e),b=Ir.scaleOrdinal().domain(t).range(this.colors),w=Ir.pie().value(function(t){return t.value}),M=Ir.arc().innerRadius(0).outerRadius(m),x=Ir.arc().innerRadius(.7*m).outerRadius(.7*m),S=g.selectAll("arc").data(w(v)).join("g").attr("class","arc");return S.append("path").attr("d",M).attr("fill",function(t){return b(t.data.label)}).attr("stroke","#fff").attr("stroke-width",2).attr("opacity",.8).on("mouseover",function(){Ir.select(this).attr("opacity",1)}).on("mouseout",function(){Ir.select(this).attr("opacity",.8)}),c&&S.append("text").attr("transform",function(t){return"translate("+x.centroid(t)+")"}).attr("text-anchor","middle").style("font-size","12px").style("font-weight","bold").style("fill","#fff").text(function(t){if(h){var e=(t.data.value/y*100).toFixed(1);return t.data.label+"\n"+e+"%"}return t.data.label}),p.append("text").attr("x",o/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(i),this},e.heatmap=function(t,e){void 0===e&&(e={});for(var n=e.title,r=void 0===n?"Heatmap":n,i=e.labels,a=void 0===i?null:i,o=e.colorScheme,s=void 0===o?"RdYlBu":o,u=e.showValues,l=void 0===u||u,c=e.width,f=void 0===c?this.defaultWidth:c,h=e.height,d=void 0===h?this.defaultHeight:h,p=e.containerId,m=this.createContainer(void 0===p?null:p,f,d).svg,g=f-80-40,v=d-80-80,y=m.append("g").attr("transform","translate(80,80)"),b=t.length,w=a||Array.from({length:b},function(t,e){return"Var"+(e+1)}),M=a||Array.from({length:b},function(t,e){return"Var"+(e+1)}),x=[],S=0;S<b;S++)for(var N=0;N<b;N++)x.push({row:S,col:N,value:t[S][N],rowLabel:w[S],colLabel:M[N]});var E=Ir.scaleBand().domain(M).range([0,g]).padding(.05),A=Ir.scaleBand().domain(w).range([0,v]).padding(.05),C=Ir.scaleSequential().domain([-1,1]).interpolator(Ir["interpolate"+s]);y.selectAll("rect").data(x).join("rect").attr("x",function(t){return E(t.colLabel)}).attr("y",function(t){return A(t.rowLabel)}).attr("width",E.bandwidth()).attr("height",A.bandwidth()).attr("fill",function(t){return C(t.value)}).attr("stroke","#fff").attr("stroke-width",1),l&&y.selectAll("text.value").data(x).join("text").attr("class","value").attr("x",function(t){return E(t.colLabel)+E.bandwidth()/2}).attr("y",function(t){return A(t.rowLabel)+A.bandwidth()/2}).attr("text-anchor","middle").attr("dominant-baseline","middle").style("font-size","10px").style("fill",function(t){return Math.abs(t.value)>.5?"#fff":"#000"}).text(function(t){return t.value.toFixed(2)}),y.append("g").attr("transform","translate(0,"+v+")").call(Ir.axisBottom(E)).selectAll("text").attr("transform","rotate(-45)").style("text-anchor","end"),y.append("g").call(Ir.axisLeft(A));var q=m.append("g").attr("transform","translate("+(f-40-200)+",40)"),k=Ir.scaleLinear().domain([-1,1]).range([0,200]),_=Ir.axisBottom(k).ticks(5);return q.selectAll("rect").data(Ir.range(-1,1,.01)).join("rect").attr("x",function(t){return k(t)}).attr("y",0).attr("width",1).attr("height",20).attr("fill",function(t){return C(t)}),q.append("g").attr("transform","translate(0,20)").call(_),m.append("text").attr("x",f/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(r),this},e.violin=function(t,e){void 0===e&&(e={});var n=e.title,r=void 0===n?"Violin Plot":n,i=e.xlabel,a=void 0===i?"Category":i,o=e.ylabel,s=void 0===o?"Value":o,u=e.labels,l=void 0===u?null:u,c=e.color,f=void 0===c?"#4299e1":c,h=e.width,d=void 0===h?this.defaultWidth:h,p=e.height,m=void 0===p?this.defaultHeight:p,g=e.containerId,v=this.createContainer(void 0===g?null:g,d,m).svg,y=this.defaultMargin,b=d-y.left-y.right,w=m-y.top-y.bottom,M=v.append("g").attr("transform","translate("+y.left+","+y.top+")"),x=Array.isArray(t[0])?t:[t],S=l||x.map(function(t,e){return"Group "+(e+1)}),N=Ir.scaleBand().domain(S).range([0,b]).padding(.3),E=x.flat(),A=Ir.scaleLinear().domain(Ir.extent(E)).nice().range([w,0]);return x.forEach(function(t,e){var n=function(t,e){return void 0===e&&(e=.5),A.ticks(50).map(function(n){var r=Ir.mean(t,function(t){return Math.exp(-.5*Math.pow((t-n)/e,2))/(e*Math.sqrt(2*Math.PI))});return[n,r]})}(t),r=Ir.max(n,function(t){return t[1]}),i=Ir.scaleLinear().domain([0,r]).range([0,N.bandwidth()/2]),a=Ir.area().x0(function(t){return N(S[e])+N.bandwidth()/2-i(t[1])}).x1(function(t){return N(S[e])+N.bandwidth()/2+i(t[1])}).y(function(t){return A(t[0])}).curve(Ir.curveBasis);M.append("path").datum(n).attr("fill",f).attr("opacity",.6).attr("stroke","#000").attr("stroke-width",1).attr("d",a)}),M.append("g").attr("transform","translate(0,"+w+")").call(Ir.axisBottom(N)).append("text").attr("x",b/2).attr("y",40).attr("fill","#000").attr("text-anchor","middle").text(a),M.append("g").call(Ir.axisLeft(A)).append("text").attr("transform","rotate(-90)").attr("x",-w/2).attr("y",-40).attr("fill","#000").attr("text-anchor","middle").text(s),v.append("text").attr("x",d/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(r),this},e.qqplot=function(t,e){var n=this;void 0===e&&(e={});var r=e.title,i=void 0===r?"Q-Q Plot":r,a=e.xlabel,o=void 0===a?"Theoretical Quantiles":a,s=e.ylabel,u=void 0===s?"Sample Quantiles":s,l=e.color,c=void 0===l?"#4299e1":l,f=e.width,h=void 0===f?this.defaultWidth:f,d=e.height,p=void 0===d?this.defaultHeight:d,m=e.containerId,g=this.createContainer(void 0===m?null:m,h,p).svg,v=this.defaultMargin,y=h-v.left-v.right,b=p-v.top-v.bottom,w=g.append("g").attr("transform","translate("+v.left+","+v.top+")"),M=[].concat(t).sort(function(t,e){return t-e}),x=M.length,S=M.map(function(t,e){return n.invNormalCDF((e+.5)/x)}),N=S.map(function(t,e){return{x:t,y:M[e]}}),E=Ir.scaleLinear().domain(Ir.extent(S)).nice().range([0,y]),A=Ir.scaleLinear().domain(Ir.extent(M)).nice().range([b,0]),C=Math.max(E.domain()[0],A.domain()[0]),q=Math.min(E.domain()[1],A.domain()[1]);return w.append("line").attr("x1",E(C)).attr("y1",A(C)).attr("x2",E(q)).attr("y2",A(q)).attr("stroke","red").attr("stroke-width",2).attr("stroke-dasharray","5,5"),w.selectAll("circle").data(N).join("circle").attr("cx",function(t){return E(t.x)}).attr("cy",function(t){return A(t.y)}).attr("r",4).attr("fill",c).attr("opacity",.7),w.append("g").attr("transform","translate(0,"+b+")").call(Ir.axisBottom(E)).append("text").attr("x",y/2).attr("y",40).attr("fill","#000").attr("text-anchor","middle").text(o),w.append("g").call(Ir.axisLeft(A)).append("text").attr("transform","rotate(-90)").attr("x",-b/2).attr("y",-40).attr("fill","#000").attr("text-anchor","middle").text(u),g.append("text").attr("x",h/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(i),this},e.invNormalCDF=function(t){var e,n,r=-.00778489400243029,i=-.322396458041136,a=-2.40075827716184,o=-2.54973253934373,s=4.37466414146497,u=2.93816398269878,l=.00778469570904146,c=.32246712907004,f=2.445134137143,h=3.75440866190742;return t<.02425?(((((r*(e=Math.sqrt(-2*Math.log(t)))+i)*e+a)*e+o)*e+s)*e+u)/((((l*e+c)*e+f)*e+h)*e+1):t<=.97575?(((((-39.6968302866538*(n=(e=t-.5)*e)+220.946098424521)*n-275.928510446969)*n+138.357751867269)*n-30.6647980661472)*n+2.50662827745924)*e/(((((-54.4760987982241*n+161.585836858041)*n-155.698979859887)*n+66.8013118877197)*n-13.2806815528857)*n+1):-(((((r*(e=Math.sqrt(-2*Math.log(1-t)))+i)*e+a)*e+o)*e+s)*e+u)/((((l*e+c)*e+f)*e+h)*e+1)},e.density=function(t,e){void 0===e&&(e={});var n=e.title,r=void 0===n?"Density Plot":n,i=e.xlabel,a=void 0===i?"Value":i,o=e.ylabel,s=void 0===o?"Density":o,u=e.color,l=void 0===u?"#4299e1":u,c=e.bandwidth,f=void 0===c?null:c,h=e.width,d=void 0===h?this.defaultWidth:h,p=e.height,m=void 0===p?this.defaultHeight:p,g=e.containerId,v=this.createContainer(void 0===g?null:g,d,m).svg,y=this.defaultMargin,b=d-y.left-y.right,w=m-y.top-y.bottom,M=v.append("g").attr("transform","translate("+y.left+","+y.top+")"),x=f||1.06*Ir.deviation(t)*Math.pow(t.length,-.2),S=Ir.extent(t),N=S[1]-S[0],E=Ir.range(S[0]-.1*N,S[1]+.1*N,N/200),A=E.map(function(e){var n=Ir.mean(t,function(t){return Math.exp(-.5*Math.pow((t-e)/x,2))/(x*Math.sqrt(2*Math.PI))});return{x:e,y:n}}),C=Ir.scaleLinear().domain([E[0],E[E.length-1]]).range([0,b]),q=Ir.scaleLinear().domain([0,Ir.max(A,function(t){return t.y})]).nice().range([w,0]),k=Ir.area().x(function(t){return C(t.x)}).y0(w).y1(function(t){return q(t.y)}).curve(Ir.curveBasis),_=Ir.line().x(function(t){return C(t.x)}).y(function(t){return q(t.y)}).curve(Ir.curveBasis);return M.append("path").datum(A).attr("fill",l).attr("opacity",.3).attr("d",k),M.append("path").datum(A).attr("fill","none").attr("stroke",l).attr("stroke-width",2).attr("d",_),M.append("g").attr("transform","translate(0,"+w+")").call(Ir.axisBottom(C)).append("text").attr("x",b/2).attr("y",40).attr("fill","#000").attr("text-anchor","middle").text(a),M.append("g").call(Ir.axisLeft(q)).append("text").attr("transform","rotate(-90)").attr("x",-w/2).attr("y",-40).attr("fill","#000").attr("text-anchor","middle").text(s),v.append("text").attr("x",d/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(r),this},e.parallel=function(t,e,n){void 0===n&&(n={});var r=n.title,i=void 0===r?"Parallel Coordinates":r,a=n.colors,o=void 0===a?null:a,s=n.width,u=void 0===s?this.defaultWidth:s,l=n.height,c=void 0===l?this.defaultHeight:l,f=n.containerId,h=this.createContainer(void 0===f?null:f,u,c).svg,d=u-40-40,p=c-60-40,m=h.append("g").attr("transform","translate(40,60)"),g={};e.forEach(function(e){g[e]=Ir.scaleLinear().domain(Ir.extent(t,function(t){return t[e]})).range([p,0])});var v=Ir.scalePoint().domain(e).range([0,d]),y=Ir.line(),b=o?Ir.scaleOrdinal().domain(Ir.range(t.length)).range(o):Ir.scaleSequential(Ir.interpolateViridis).domain([0,t.length]);return m.selectAll("path.line").data(t).join("path").attr("class","line").attr("d",function(t){return y(e.map(function(e){return[v(e),g[e](t[e])]}))}).attr("fill","none").attr("stroke",function(t,e){return b(e)}).attr("opacity",.3).attr("stroke-width",2).on("mouseover",function(){Ir.select(this).attr("opacity",1).attr("stroke-width",3)}).on("mouseout",function(){Ir.select(this).attr("opacity",.3).attr("stroke-width",2)}),e.forEach(function(t){m.append("g").attr("transform","translate("+v(t)+",0)").call(Ir.axisLeft(g[t])).append("text").attr("y",-10).attr("text-anchor","middle").style("fill","#000").style("font-weight","bold").text(t)}),h.append("text").attr("x",u/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(i),this},e.pairplot=function(t,e,n){void 0===n&&(n={});var r=n.title,i=void 0===r?"Pair Plot":r,a=n.color,o=void 0===a?"#4299e1":a,s=n.size,u=void 0===s?3:s,l=n.width,c=void 0===l?900:l,f=n.height,h=void 0===f?900:f,d=n.containerId,p=this.createContainer(void 0===d?null:d,c,h).svg,m=e.length,g=(Math.min(c,h)-120)/m,v={};e.forEach(function(e){v[e]=Ir.scaleLinear().domain(Ir.extent(t,function(t){return t[e]})).range([0,g-20])});for(var y=0;y<m;y++)for(var b=function(){var n=e[w],r=e[y],i=p.append("g").attr("transform","translate("+(60+w*g)+","+(60+y*g)+")");if(y===w){var a=t.map(function(t){return t[n]}),s=Ir.histogram().domain(v[n].domain()).thresholds(20)(a),l=Ir.scaleLinear().domain([0,Ir.max(s,function(t){return t.length})]).range([g-20,0]);i.selectAll("rect").data(s).join("rect").attr("x",function(t){return v[n](t.x0)}).attr("y",function(t){return l(t.length)}).attr("width",function(t){return v[n](t.x1)-v[n](t.x0)-1}).attr("height",function(t){return g-20-l(t.length)}).attr("fill",o).attr("opacity",.7)}else i.selectAll("circle").data(t).join("circle").attr("cx",function(t){return v[n](t[n])}).attr("cy",function(t){return v[r](t[r])}).attr("r",u).attr("fill",o).attr("opacity",.5);y===m-1&&i.append("g").attr("transform","translate(0,"+(g-20)+")").call(Ir.axisBottom(v[n]).ticks(3)),0===w&&i.append("g").call(Ir.axisLeft(v[r]).ticks(3)),y===m-1&&i.append("text").attr("x",(g-20)/2).attr("y",g-5).attr("text-anchor","middle").style("font-size","10px").text(n),0===w&&i.append("text").attr("transform","rotate(-90)").attr("x",-(g-20)/2).attr("y",-25).attr("text-anchor","middle").style("font-size","10px").text(r)},w=0;w<m;w++)b();return p.append("text").attr("x",c/2).attr("y",30).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(i),this},e.multiline=function(t,e){void 0===e&&(e={});var n=e.title,r=void 0===n?"Multi-Line Chart":n,i=e.xlabel,a=void 0===i?"X":i,o=e.ylabel,s=void 0===o?"Y":o,u=e.legend,l=void 0===u||u,c=e.width,f=void 0===c?this.defaultWidth:c,h=e.height,d=void 0===h?this.defaultHeight:h,p=e.containerId,m=this.createContainer(void 0===p?null:p,f,d).svg,g=this.defaultMargin,v=f-g.left-g.right,y=d-g.top-g.bottom,b=m.append("g").attr("transform","translate("+g.left+","+g.top+")"),w=t.flatMap(function(t){return t.data.map(function(t){return t.x})}),M=t.flatMap(function(t){return t.data.map(function(t){return t.y})}),x=Ir.scaleLinear().domain(Ir.extent(w)).range([0,v]),S=Ir.scaleLinear().domain(Ir.extent(M)).nice().range([y,0]),N=Ir.scaleOrdinal().domain(t.map(function(t){return t.name})).range(this.colors),E=Ir.line().x(function(t){return x(t.x)}).y(function(t){return S(t.y)});if(t.forEach(function(t){b.append("path").datum(t.data).attr("fill","none").attr("stroke",N(t.name)).attr("stroke-width",2).attr("d",E)}),b.append("g").attr("transform","translate(0,"+y+")").call(Ir.axisBottom(x)).append("text").attr("x",v/2).attr("y",40).attr("fill","#000").attr("text-anchor","middle").text(a),b.append("g").call(Ir.axisLeft(S)).append("text").attr("transform","rotate(-90)").attr("x",-y/2).attr("y",-40).attr("fill","#000").attr("text-anchor","middle").text(s),l){var A=m.append("g").attr("transform","translate("+(f-g.right-100)+","+g.top+")");t.forEach(function(t,e){var n=A.append("g").attr("transform","translate(0,"+25*e+")");n.append("line").attr("x1",0).attr("x2",30).attr("y1",10).attr("y2",10).attr("stroke",N(t.name)).attr("stroke-width",2),n.append("text").attr("x",35).attr("y",15).style("font-size","12px").text(t.name)})}return m.append("text").attr("x",f/2).attr("y",20).attr("text-anchor","middle").style("font-size","16px").style("font-weight","bold").text(r),this},t}(),zr=/*#__PURE__*/function(){function t(){this.dataLoader=new c,this.validator=new f,this.utils=new h,this.centralTendency=new d,this.dispersion=new p,this.position=new m,this.shape=new g,this.hypothesisTesting=new v,this.confidenceIntervals=new y,this.normalityTests=new b,this.correlation=new w,this.regression=new M,this.reportGenerator=new x,this.patternDetector=new S,this.interpreter=new N,this.autoAnalyzer=new E(this),this.ml=new I,this.viz=new Vr}var e=t.prototype;return e.loadCSV=function(t,e){void 0===e&&(e={});try{return Promise.resolve(this.dataLoader.loadCSV(t,e))}catch(t){return Promise.reject(t)}},e.loadJSON=function(t,e){void 0===e&&(e={});try{return Promise.resolve(this.dataLoader.loadJSON(t,e))}catch(t){return Promise.reject(t)}},e.cleanData=function(t){return this.dataLoader.cleanData(t)},e.getColumn=function(t,e){return this.dataLoader.getColumn(t,e)},e.getColumns=function(t,e){return this.dataLoader.getColumns(t,e)},e.validateData=function(t){return this.validator.validateData(t)},e.getDataInfo=function(t){return this.dataLoader.getDataInfo(t)},e.mean=function(t){return this.centralTendency.mean(t)},e.median=function(t){return this.centralTendency.median(t)},e.mode=function(t){return this.centralTendency.mode(t)},e.geometricMean=function(t){return this.centralTendency.geometricMean(t)},e.harmonicMean=function(t){return this.centralTendency.harmonicMean(t)},e.trimmedMean=function(t,e){return this.centralTendency.trimmedMean(t,e)},e.variance=function(t){return this.dispersion.variance(t)},e.standardDeviation=function(t){return this.dispersion.standardDeviation(t)},e.range=function(t){return this.dispersion.range(t)},e.interquartileRange=function(t){return this.dispersion.interquartileRange(t)},e.coefficientOfVariation=function(t){return this.dispersion.coefficientOfVariation(t)},e.meanAbsoluteDeviation=function(t){return this.dispersion.meanAbsoluteDeviation(t)},e.quantile=function(t,e){return this.position.quantile(t,e)},e.percentile=function(t,e){return this.position.percentile(t,e)},e.quartiles=function(t){return this.position.quartiles(t)},e.quintiles=function(t){return this.position.quintiles(t)},e.deciles=function(t){return this.position.deciles(t)},e.percentileRank=function(t,e){return this.position.percentileRank(t,e)},e.zScore=function(t,e){return this.position.zScore(t,e)},e.boxplotStats=function(t){return this.position.boxplotStats(t)},e.fiveNumberSummary=function(t){return this.position.fiveNumberSummary(t)},e.rank=function(t,e){return void 0===e&&(e="average"),this.position.rank(t,e)},e.normalizedRank=function(t){return this.position.normalizedRank(t)},e.standardizedValues=function(t){return this.position.standardizedValues(t)},e.skewness=function(t){return this.shape.skewness(t)},e.kurtosis=function(t){return this.shape.kurtosis(t)},e.isNormalDistribution=function(t){return this.shape.isNormalDistribution(t)},e.correlationPearson=function(t,e){return this.correlation.pearson(t,e)},e.correlationSpearman=function(t,e){return this.correlation.spearman(t,e)},e.correlationMatrix=function(t){return this.correlation.matrix(t)},e.covariance=function(t,e){return this.correlation.covariance(t,e)},e.tTest=function(t,e,n){return void 0===n&&(n="two-sample"),this.hypothesisTesting.tTest(t,e,n)},e.zTest=function(t,e,n){return this.hypothesisTesting.zTest(t,e,n)},e.anovaTest=function(t){return this.hypothesisTesting.anovaTest(t)},e.chiSquareTest=function(t,e){return this.hypothesisTesting.chiSquareTest(t,e)},e.confidenceInterval=function(t,e){return void 0===e&&(e=.95),this.confidenceIntervals.mean(t,e)},e.shapiroWilkTest=function(t){return this.normalityTests.shapiroWilk(t)},e.linearRegression=function(t,e){return this.regression.linear(t,e)},e.detectOutliers=function(t,e){return void 0===e&&(e="iqr"),this.utils.detectOutliers(t,e)},e.frequencyTable=function(t){return this.utils.frequencyTable(t)},e.groupBy=function(t,e,n){return this.utils.groupBy(t,e,n)},e.sample=function(t,e,n){return void 0===n&&(n="random"),this.utils.sample(t,e,n)},e.generateSummaryReport=function(t){return this.reportGenerator.summary(t)},e.identifyPatterns=function(t){return this.patternDetector.analyze(t)},e.interpretResults=function(t){return this.interpreter.interpret(t)},e.autoAnalyze=function(t,e){return void 0===e&&(e={}),this.autoAnalyzer.autoAnalyze(t,e)},e.autoAnalyzeFromFile=function(t,e,n){void 0===e&&(e={}),void 0===n&&(n={});try{var r,i=function(t){return a.autoAnalyze(r,n)},a=this,o=t.toLowerCase(),s=o.endsWith(".csv")?Promise.resolve(a.loadCSV(t,e)).then(function(t){r=t}):function(){if(o.endsWith(".json"))return Promise.resolve(a.loadJSON(t,e)).then(function(t){r=t});throw new Error("Formato de arquivo nĆ£o suportado. Use CSV ou JSON.")}();return Promise.resolve(s&&s.then?s.then(i):i())}catch(t){return Promise.reject(t)}},e.quickAnalysis=function(t,e){void 0===e&&(e={});try{return Promise.resolve(this.autoAnalyzeFromFile(t,{},e)).then(function(t){return console.log("\n"+"=".repeat(60)),console.log("š AUTO REPORT"),console.log("=".repeat(60)),console.log("\nš EXECUTIVE RESUME:"),console.log("⢠Total insights: "+t.summary.totalInsights),console.log("⢠Priority Insights: "+t.summary.highPriorityInsights),console.log("\nš MAIN INSIGHTS:"),t.summary.keyFindings.forEach(function(t,e){console.log(e+1+". "+t.title),console.log(" "+t.description)}),console.log("\nš” RECOMMENDATIONS:"),t.summary.recommendations.forEach(function(t,e){console.log(e+1+". "+t)}),console.log("\n"+"=".repeat(60)),t})}catch(t){return Promise.reject(t)}},e.createLinearRegression=function(t){return this.ml.createLinearRegression(t)},e.createLogisticRegression=function(t){return this.ml.createLogisticRegression(t)},e.createKNN=function(t){return this.ml.createKNN(t)},e.createDecisionTree=function(t){return this.ml.createDecisionTree(t)},e.createRandomForest=function(t){return this.ml.createRandomForest(t)},e.createNaiveBayes=function(t){return this.ml.createNaiveBayes(t)},e.createSVM=function(t){return this.ml.createSVM(t)},e.trainTestSplit=function(t,e,n,r){return void 0===n&&(n=.2),void 0===r&&(r=!0),this.ml.trainTestSplit(t,e,n,r)},e.crossValidate=function(t,e,n,r,i){return void 0===r&&(r=5),void 0===i&&(i="classification"),this.ml.crossValidate(t,e,n,r,i)},e.compareModels=function(t,e,n,r){return void 0===r&&(r="classification"),this.ml.compareModels(t,e,n,r)},e.quickTrain=function(t,e,n,r){return void 0===r&&(r={}),this.ml.quickTrain(t,e,n,r)},e.polynomialFeatures=function(t,e){return void 0===e&&(e=2),this.ml.polynomialFeatures(t,e)},e.standardScaler=function(t){return this.ml.standardScaler(t)},e.minMaxScaler=function(t,e){return void 0===e&&(e=[0,1]),this.ml.minMaxScaler(t,e)},e.rocCurve=function(t,e){return this.ml.rocCurve(t,e)},e.precisionRecallCurve=function(t,e){return this.ml.precisionRecallCurve(t,e)},e.plotHistogram=function(t,e){return this.viz.histogram(t,e)},e.plotBoxplot=function(t,e){return this.viz.boxplot(t,e)},e.plotScatter=function(t,e,n){return this.viz.scatter(t,e,n)},e.plotLine=function(t,e,n){return this.viz.line(t,e,n)},e.plotBar=function(t,e,n){return this.viz.bar(t,e,n)},e.plotPie=function(t,e,n){return this.viz.pie(t,e,n)},e.plotHeatmap=function(t,e){return this.viz.heatmap(t,e)},e.plotViolin=function(t,e){return this.viz.violin(t,e)},e.plotDensity=function(t,e){return this.viz.density(t,e)},e.plotQQ=function(t,e){return this.viz.qqplot(t,e)},e.plotParallel=function(t,e,n){return this.viz.parallel(t,e,n)},e.plotPairplot=function(t,e,n){return this.viz.pairplot(t,e,n)},e.plotMultiline=function(t,e){return this.viz.multiline(t,e)},e.plotCorrelationMatrix=function(t,e){var r=this;void 0===e&&(e={});for(var i=Object.keys(t[0]).filter(function(e){return"number"==typeof t[0][e]}),a=i.length,o=Array(a).fill(0).map(function(){return Array(a).fill(0)}),s=function(e){for(var n=function(n){var a=t.map(function(t){return t[i[e]]}),s=t.map(function(t){return t[i[n]]});o[e][n]=r.correlationPearson(a,s)},s=0;s<a;s++)n(s)},u=0;u<a;u++)s(u);return this.viz.heatmap(o,n({title:"Correlation Matrix",labels:i},e))},e.plotDistribution=function(t,e,r){void 0===r&&(r={});var i=t.map(function(t){return t[e]}).filter(function(t){return!isNaN(t)});return this.viz.histogram(i,n({title:"Distribution of "+e,xlabel:e,ylabel:"Frequency"},r))},e.plotMultipleDistributions=function(t,e,r){void 0===r&&(r={});var i=e.map(function(e){return t.map(function(t){return t[e]}).filter(function(t){return!isNaN(t)})});return this.viz.boxplot(i,n({title:"Distribution Comparison",labels:e},r))},t}();return zr});
|