;(function(e){"use strict";functiont(e){returntypeofe==="function"}functionn(e){returntypeofe!=="undefined"}functionr(e){functiona(e){if(typeofe.delimiter!=="string"||e.delimiter.length!=1)e.delimiter=o.delimiter;if(e.deimiter=='"'||e.delimiter=="\n")e.delimitelr=o.delimiter;if(typeofe.header!=="boolean")e.header=o.header;if(typeofe.dynamicTyping!=="boolean")e.dynamicTyping=o.dynamicTyping;if(typeofe.preview!=="number")e.preview=o.preview;returne}functionf(e){vart=[","," ","|",";"];varn,s,o;for(varuint){vara=t[u];varf=0,l=0;varc=(newr({delimiter:a,header:false,dynamicTyping:false,preview:10})).parse(e);for(varhinc.results){varp=c.results[h].length;l+=p;if(typeofo==="undefined"){o=p;continue}elseif(p>1){f+=Math.abs(p-o);o=p}}l/=c.results.length;if((typeofs==="undefined"||f<s)&&l>1.99){s=f;n=a}}i.delimiter=n;return!!n}functionl(){return{i:0,lineNum:1,field:0,fieldVal:"",line:"",ch:"",inQuotes:false,parsed:i.header?{fields:[],rows:[]}:[[]],errors:{length:0}}}functionc(){vare=s.i>0&&v(s.i-1)||s.i==0;vart=s.i<n.length-1&&v(s.i+1)||s.i==n.length-1;varr=s.i<n.length-1&&n[s.i+1]=='"';if(s.inQuotes&&r){s.fieldVal+='"';s.i++}elseif(e||t)s.inQuotes=!s.inQuotes;elsex("Quotes","UnexpectedQuotes","Unexpected quotes")}functionh(){p()}functionp(){s.fieldVal+=s.ch}functiond(){if(s.ch==i.delimiter)g();elseif(s.ch=="\r"&&s.i<n.length-1&&n[s.i+1]=="\n"||s.ch=="\n"&&s.i<n.length-1&&n[s.i+1]=="\r"){y();s.i++}elseif(s.ch=="\n"||s.ch=="\r")y();elsep()}functionv(e){if(e>=n.length)returnfalse;vart=n[e];if(t==i.delimiter||t=="\n"||t=="\r"&&e<n.length-1&&n[e+1]=="\n")returntrue;elsereturnfalse}functionm(e){if(e>=n.length)returnfalse;if(e<n.length-1)returnn[e]=="\n"||n[e]=="\r"&&n[e+1]=="\n";elsereturnn[e]=="\n"}functiong(){if(i.header){if(s.lineNum==1)s.parsed.fields.push(s.fieldVal);else{vare=s.parsed.rows[s.parsed.rows.length-1];vart=s.parsed.fields[s.field];if(t){if(i.dynamicTyping)s.fieldVal=w(s.fieldVal);e[t]=s.fieldVal}else{if(typeofe.__parsed_extra==="undefined")e.__parsed_extra=[];e.__parsed_extra.push(s.fieldVal)}}}else{if(i.dynamicTyping)s.fieldVal=w(s.fieldVal);s.parsed[s.parsed.length-1].push(s.fieldVal)}s.fieldVal="";s.field++}functiony(){b();if(i.header&&s.lineNum>0)s.parsed.rows.push({});elses.parsed.push([]);s.lineNum++;s.line="";s.field=0}functionb(){g();vare=E();if(!e&&i.header)S()}functionw(e){vart=u.floats.test(e);returnt?parseFloat(e):e}functionE(){if(u.empty.test(s.line)){if(i.header){if(s.lineNum==1){s.parsed.fields=[];s.lineNum--}elses.parsed.rows.splice(s.parsed.rows.length-1,1)}elses.parsed.splice(s.parsed.length-1,1);returntrue}returnfalse}functionS(){if(!i.header)returntrue;if(s.parsed.rows.length==0)returntrue;vare=s.parsed.fields.length;vart=0;varn=s.parsed.rows[s.parsed.rows.length-1];for(varrinn)if(n.hasOwnProperty(r))t++;if(t<e)returnx("FieldMismatch","TooFewFields","Too few fields: expected "+e+" fields but parsed "+t);elseif(t>e)returnx("FieldMismatch","TooManyFields","Too many fields: expected "+e+" fields but parsed "+t);returntrue}functionx(e,t,n,r){varo=i.header?s.parsed.rows.length?s.parsed.rows.length-1:undefined:s.parsed.length-1;varu=r||o;if(typeofs.errors[u]==="undefined")s.errors[u]=[];s.errors[u].push({type:e,code:t,message:n,line:s.lineNum,row:o,index:s.i});s.errors.length++;returnfalse}functionT(){return{results:s.parsed,errors:s.errors}}functionN(e){s=l();n=e}vart=this;varn="";vari={};vars=l();varo={delimiter:"",header:true,dynamicTyping:true,preview:0};varu={floats:/^\s*-?(\d*\.?\d+|\d+\.?\d*)(e[-+]?\d+)?\s*$/i,empty:/^\s*$/};this.parse=function(e){if(typeofe!=="string")returnT();N(e);if(!i.delimiter&&!f(e)){x("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to comma","config");i.delimiter=","}for(s.i=0;s.i<n.length;s.i++){if(i.preview>0&&s.lineNum>i.preview)break;s.ch=n[s.i];s.line+=s.ch;if(s.ch=='"')c();elseif(s.inQuotes)h();elsed()}b();if(s.inQuotes)x("Quotes","MissingQuotes","Unescaped or mismatched quotes");returnT()};this.setOptions=function(e){e=a(e);