ScatterDraw: Added some equations, GuessCoeff and EvalExpr

git-svn-id: svn://ultimatepp.org/upp/trunk@8123 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
koldo 2015-02-01 17:29:54 +00:00
parent cc244b818f
commit 8aa0c8084e
20 changed files with 588 additions and 149 deletions

View file

@ -31,6 +31,59 @@ double DataSource::Avg(Getdatafun getdata) {
return ret/GetCount();
}
double DataSource::Variance(Getdatafun getdata, double avg) {
if (IsNull(avg))
avg = Avg(getdata);
double ret = 0;
for (int64 i = 0; i < GetCount(); ++i) {
double val = Membercall(getdata)(i) - avg;
ret += val*val;
}
return ret/(GetCount() - 1);
}
double DataSource::StdDev(Getdatafun getdata, double avg) {
return sqrt(Variance(getdata, avg));
}
double DataSource::SinEstim_Amplitude(double avg) {
return sqrt(2.*VarianceY(avg));
}
bool DataSource::SinEstim_FreqPhase(double &frequency, double &phase, double avg) {
if (GetCount() < 4)
return false;
if (IsNull(avg))
avg = AvgY();
bool firstIsToPositive = (y(int64(0)) - avg) < 0;
bool isPossitive = !firstIsToPositive;
double T = 0;
int numT = 0;
double lastZero = Null;
double firstZero;
for (int64 id = 1; id < GetCount(); ++id) {
double kk = y(id);
if (((y(id) - avg) > 0) != isPossitive) {
isPossitive = !isPossitive;
double zero = x(id-1) - (y(id-1) - avg)*(x(id) - x(id-1))/(y(id) - y(id-1));
if (IsNull(lastZero))
firstZero = zero;
else {
T += zero - lastZero;
numT++;
}
lastZero = zero;
}
}
T = 2*T/numT;
frequency = 2*M_PI/T;
phase = -frequency*firstZero;
if (!firstIsToPositive)
phase += M_PI;
return true;
}
double CArray::xn(int n, int64 id) {
switch (n) {
case 0: ASSERT(yData);

View file

@ -28,16 +28,21 @@ public:
virtual double MaxY() {return Max(&DataSource::y);}
virtual double MaxX() {return Max(&DataSource::x);}
virtual double AvgY() {return Avg(&DataSource::y);}
virtual double AvgX() {return Avg(&DataSource::x);}
virtual double AvgY() {return Avg(&DataSource::y);}
virtual double StdDevY(double avg = Null) {return StdDev(&DataSource::y, avg);}
virtual double VarianceY(double avg = Null) {return Variance(&DataSource::y, avg);}
double Min(Getdatafun getdata);
double Max(Getdatafun getdata);
double Avg(Getdatafun getdata);
double StdDev(Getdatafun getdata, double avg = Null);
double Variance(Getdatafun getdata, double avg = Null);
double SinEstim_Amplitude(double avg = Null);
bool SinEstim_FreqPhase(double &frequency, double &phase, double avg = Null);
protected:
bool isParam, isExplicit;
virtual double Min(Getdatafun getdata);
virtual double Max(Getdatafun getdata);
virtual double Avg(Getdatafun getdata);
private:
int key;
};

View file

@ -34,7 +34,7 @@ ExplicitEquation::FitError ExplicitEquation::Fit(DataSource &series, double &r2)
if (series.GetCount() < coeff.GetCount())
return SmallDataSource;
ptrdiff_t numUnknowns = coeff.GetCount();
VectorXd x(numUnknowns);
@ -73,7 +73,6 @@ ExplicitEquation::FitError ExplicitEquation::Fit(DataSource &series, double &r2)
return NoError;
}
int ExplicitEquation::numDigits = 3;
int ExplicitEquation::maxFitFunctionEvaluations = 1000;
@ -84,17 +83,17 @@ double PolynomialEquation::f(double x) {
return y;
}
String PolynomialEquation::GetEquation() {
String PolynomialEquation::GetEquation(int numDigits) {
if (coeff.IsEmpty())
return String();
String y;
y = FormatDoubleFix(coeff[0], numDigits);
String ret = FormatCoeff(0, numDigits);
if (coeff.GetCount() == 1)
return y;
y += " " + String(coeff[1] >= 0 ? "+" : "-") + " " + FormatDoubleFix(fabs(coeff[1]), numDigits) + "*x";
return ret;
ret += Format(" + %s*x", FormatCoeff(1, numDigits));
for (int i = 2; i < coeff.GetCount(); ++i)
y += " " + String(coeff[i] >= 0 ? "+" : "-") + " " + FormatDoubleFix(fabs(coeff[i]), numDigits) + "*x^" + FormatInt(i);
return y;
ret += Format(" + %s*x^%s", FormatCoeff(i, numDigits), FormatInt(i));
ret.Replace("+ -", "- ");
return ret;
}
double FourierEquation::f(double x) {
@ -107,20 +106,207 @@ double FourierEquation::f(double x) {
return y;
}
String FourierEquation::GetEquation() {
String FourierEquation::GetEquation(int numDigits) {
if (coeff.GetCount() < 4)
return String();
String y = FormatDoubleFix(coeff[0], numDigits);
String ret = FormatCoeff(0, numDigits);
for (int i = 2; i < coeff.GetCount(); i += 2) {
int n = 1 + (i - 2)/2;
String nwx = Format("%d*%s*x", n, FormatDoubleFix(fabs(coeff[1]), numDigits));
String signA = coeff[i] >= 0 ? "+" : "-";
String signB = coeff[i+1] >= 0 ? "+" : "-";
y += " " + signA + " " + FormatDoubleFix(fabs(coeff[i]), numDigits) + "*cos(" + nwx + ")";
y += " " + signB + " " + FormatDoubleFix(fabs(coeff[i+1]), numDigits) + "*sin(" + nwx + ")";
String nwx = Format("%d*%s*x", n, FormatCoeff(1, numDigits));
ret += Format(" + %s*cos(%s)", FormatCoeff(i, numDigits), nwx);
ret += Format(" + %s*sin(%s)", FormatCoeff(i + 1, numDigits), nwx);
}
return y;
ret.Replace("+ -", "- ");
return ret;
}
EvalExpr::EvalExpr() {
constants.Add("PI", M_PI);
constants.Add("M_PI", M_PI);
constants.Add("e", exp(1.0));
functions.Add("abs", fabs);
functions.Add("sqrt", sqrt);
functions.Add("sin", sin);
functions.Add("cos", cos);
functions.Add("tan", tan);
functions.Add("asin", asin);
functions.Add("acos", acos);
functions.Add("atan", atan);
functions.Add("sinh", sinh);
functions.Add("cosh", cosh);
functions.Add("tanh", tanh);
}
/*
void *EvalExpr::Functions_Get(CParser& p) {
for (int i = 0; i < functions.GetCount(); ++i) {
if (p.Id(functions.GetKey(i)))
return (void *)functions[i];
}
return 0;
}*/
double EvalExpr::Term(CParser& p) {
if(p.IsId()) {
String strId = p.ReadId();
if(double (*function)(double) = functions.Get(strId, 0)) {
p.PassChar('(');
double x = Exp(p);
p.PassChar(')');
return function(x);
}
double ret = constants.Get(strId, Null);
if (IsNull(ret))
ret = variables.GetAdd(strId, 0);
return ret;
}
if(p.Char('(')) {
double x = Exp(p);
p.PassChar(')');
return x;
}
return p.ReadDouble();
}
double EvalExpr::Mul(CParser& p) {
double x = Term(p);
for(;;)
if(p.Char('*'))
x = x * Term(p);
else if(p.Char('/')) {
double y = Term(p);
if(y == 0)
p.ThrowError(t_("Divide by zero"));
x = x / y;
} else if(p.Char('^'))
x = pow(x, Term(p));
else
return x;
}
double EvalExpr::Exp(CParser& p) {
double x = Mul(p);
for(;;) {
if(p.Char('+'))
x = x + Mul(p);
else if(p.Char('-'))
x = x - Mul(p);
else
return x;
}
}
double EvalExpr::Eval(String line) {
line = TrimBoth(line);
if (line.IsEmpty())
return Null;
CParser p(line);
try {
if(p.IsId()) {
CParser::Pos pos = p.GetPos();
String var = p.ReadId();
if(p.Char('=')) {
double ret = Exp(p);
variables.GetAdd(var) = ret;
return ret;
} else {
p.SetPos(pos);
return Exp(p);
}
} else
return Exp(p);
}
catch(CParser::Error e) {
DLOG(Format(t_("Error evaluating '%s': %s"), line, e));
return Null;
}
}
String EvalExpr::TermStr(CParser& p, int numDigits) {
if(p.IsId()) {
String strId = p.ReadId();
if(functions.Find(strId) >= 0) {
p.PassChar('(');
String x = ExpStr(p, numDigits);
p.PassChar(')');
return strId + "(" + x + ")";
}
if (IsNull(numDigits)) {
if (constants.Find(strId) < 0)
variables.GetAdd(strId, 0);
return strId;
} else {
if (constants.Find(strId) >= 0)
return strId;
else {
double dat = variables.GetAdd(strId, 0);
return FormatDoubleFix(dat, numDigits);
}
}
}
if(p.Char('(')) {
String x = ExpStr(p, numDigits);
p.PassChar(')');
return "(" + x + ")";
}
return FormatDoubleFix(p.ReadDouble(), IsNull(numDigits) ? 3 : numDigits);
}
String EvalExpr::MulStr(CParser& p, int numDigits) {
String x = TermStr(p, numDigits);
for(;;)
if(p.Char('*'))
x = x + "*" + TermStr(p, numDigits);
else if(p.Char('/'))
x = x + "/" + TermStr(p, numDigits);
else if(p.Char('^'))
x = x + "^" + TermStr(p, numDigits);
else
return x;
}
String EvalExpr::ExpStr(CParser& p, int numDigits) {
String x = MulStr(p, numDigits);
for(;;) {
if(p.Char('+'))
x = x + " + " + MulStr(p, numDigits);
else if(p.Char('-'))
x = x + " - " + MulStr(p, numDigits);
else {
x.Replace("+ -", "- ");
return x;
}
}
}
String EvalExpr::EvalStr(String line, int numDigits) {
line = TrimBoth(line);
if (line.IsEmpty())
return Null;
CParser p(line);
try {
if(p.IsId()) {
CParser::Pos pos = p.GetPos();
String var = p.ReadId();
if(p.Char('=')) {
String ret = ExpStr(p, numDigits);
variables.GetAdd(var, 0);
return var + " = " + ret;
} else {
p.SetPos(pos);
return ExpStr(p, numDigits);
}
} else
return ExpStr(p, numDigits);
}
catch(CParser::Error e) {
DLOG(Format(t_("Error evaluating '%s': %s"), line, e));
return Null;
}
}
END_UPP_NAMESPACE

View file

@ -3,9 +3,12 @@
NAMESPACE_UPP
#define FormatCoeff(id, numDigits) (IsNull(numDigits) ? (String("C") + FormatInt(id)) : FormatDoubleFix(coeff[id], numDigits))
class ExplicitEquation : public DataSource {
public:
ExplicitEquation() {isExplicit = true;}
ExplicitEquation() {isExplicit = true;}
virtual void SetDegree(int num) = 0;
enum FitError {
@ -17,13 +20,14 @@ public:
};
FitError Fit(DataSource &series, double &r2);
FitError Fit(DataSource &series) {double dummy; return Fit(series, dummy);}
virtual void GuessCoeff(DataSource &series) = 0;
virtual double f(double x1) = 0;
virtual double f(double x1, double x2) {NEVER(); return Null;}
virtual double f(Vector <double> x) {NEVER(); return Null;}
virtual String GetName() = 0;
virtual String GetFullName() {return GetName();}
virtual String GetEquation() = 0;
virtual String GetEquation(int numDigits = 3) = 0;
void SetNumDigits(int n) {numDigits = n;}
int GetNumDigits() {return numDigits;}
@ -53,10 +57,13 @@ public:
LinearEquation(double c0, double c1){SetCoeff(c0, c1);}
double f(double x) {return coeff[0] + x*coeff[1];}
virtual String GetName() {return t_("Linear");}
virtual String GetEquation() {return FormatDoubleFix(coeff[0], numDigits) + " " +
(coeff[1] >= 0 ? "+" : "-") + " " +
FormatDoubleFix(fabs(coeff[1]), numDigits) + "*x";}
virtual String GetEquation(int numDigits = 3) {
String ret = Format("%s + %s*x", FormatCoeff(0, numDigits), FormatCoeff(1, numDigits));
ret.Replace("+ -", "- ");
return ret;
}
void SetDegree(int num) {NEVER();}
virtual void GuessCoeff(DataSource &series) {coeff[0] = AvgY();}
};
class PolynomialEquation : public ExplicitEquation {
@ -66,23 +73,37 @@ public:
double f(double x);
virtual String GetName() {return t_("Polynomial");}
virtual String GetFullName() {return t_("Polynomial") + String(" n = ") + FormatInt(degree);}
virtual String GetEquation();
virtual String GetEquation(int numDigits = 3);
virtual void GuessCoeff(DataSource &series) {}
void SetDegree(int num) {degree = num; SetNumCoeff(num + 1);}
};
class SinEquation : public ExplicitEquation {
public:
SinEquation() {coeff.Clear(); coeff << 0. << 0.1 << 0.1 << 0.1;}
SinEquation(double offset, double A, double w, double phi) {coeff.Clear(); coeff << offset << A << w << phi;}
SinEquation(double offset, double A, double w, double phi) {Init(offset, A, w, phi);}
void Init(double offset, double A, double w, double phi) {coeff.Clear(); coeff << offset << A << w << phi;}
double f(double x) {return coeff[0] + coeff[1]*sin(coeff[2]*x + coeff[3]);}
virtual String GetName() {return t_("Sinusoidal");}
virtual String GetEquation() {return FormatDoubleFix(coeff[0], numDigits) + " + " +
FormatDoubleFix(coeff[1], numDigits) + "*sin(" +
FormatDoubleFix(coeff[2], numDigits) + "*t + " +
FormatDoubleFix(coeff[3], numDigits) + ")";}
void SetDegree(int num) {NEVER();}
virtual String GetName() {return t_("Sine");}
virtual String GetEquation(int numDigits = 3) {
String ret = Format("%s + %s*sin(%s*t + %s)", FormatCoeff(0, numDigits), FormatCoeff(1, numDigits)
, FormatCoeff(2, numDigits), FormatCoeff(3, numDigits));
ret.Replace("+ -", "- ");
return ret;
}
void SetDegree(int num) {NEVER();}
virtual void GuessCoeff(DataSource &series) {
coeff[0] = series.AvgY();
double A;
coeff[1] = A = series.SinEstim_Amplitude(coeff[0]);
double frequency, phase;
if (series.SinEstim_FreqPhase(frequency, phase, coeff[0])) {
coeff[2] = frequency;
coeff[3] = phase;
}
}
};
class FourierEquation : public ExplicitEquation {
public:
FourierEquation() {}
@ -90,7 +111,8 @@ public:
double f(double x);
virtual String GetName() {return t_("Fourier");}
virtual String GetFullName() {return t_("Fourier") + String(" n = ") + FormatInt(degree);}
virtual String GetEquation();
virtual String GetEquation(int numDigits = 3);
virtual void GuessCoeff(DataSource &series) {}
void SetDegree(int num) {degree = num; SetNumCoeff(2*num + 2);}
};
@ -100,8 +122,12 @@ public:
ExponentialEquation(double c0, double c1) {SetCoeff(c0, c1);}
double f(double x) {return coeff[0]*exp(-x) + coeff[1];}
virtual String GetName() {return t_("Exponential");}
virtual String GetEquation() {return FormatDoubleFix(fabs(coeff[0]), numDigits) + "*e^-x " +
(coeff[1] >= 0 ? "+" : "-") + " " + FormatDoubleFix(coeff[1], numDigits);}
virtual String GetEquation(int numDigits = 3) {
String ret = Format("%s*e^-x + %s", FormatCoeff(0, numDigits), FormatCoeff(1, numDigits));
ret.Replace("+ -", "- ");
return ret;
}
virtual void GuessCoeff(DataSource &series) {}
void SetDegree(int num) {NEVER();}
};
@ -111,13 +137,68 @@ public:
Rational1Equation(double c0, double c1, double c2) {SetCoeff(c0, c1, c2);}
double f(double x) {return coeff[0]/(x + coeff[1]) + coeff[2];}
virtual String GetName() {return t_("Rational_1");}
virtual String GetEquation() {return FormatDoubleFix(fabs(coeff[0]), numDigits) + "/(x " + (coeff[1] >= 0 ? "+" : "-") + " " +
FormatDoubleFix(fabs(coeff[1]), numDigits) + ") " + (coeff[2] >= 0 ? "+" : "-") + " " +
FormatDoubleFix(fabs(coeff[2]), numDigits);}
virtual String GetEquation(int numDigits = 3) {
String ret = Format("%s/(x + %s) + %s", FormatCoeff(0, numDigits), FormatCoeff(1, numDigits), FormatCoeff(2, numDigits));
ret.Replace("+ -", "- ");
return ret;
}
virtual void GuessCoeff(DataSource &series) {}
void SetDegree(int num) {NEVER();}
};
class EvalExpr {
public:
EvalExpr();
double Eval(String line);
String EvalStr(String line, int numDigits = 3);
VectorMap<String, double> constants;
VectorMap<String, double> variables;
VectorMap<String, double (*)(double)> functions;
private:
void *Functions_Get(CParser& p);
double Term(CParser& p);
double Mul(CParser& p);
double Exp(CParser& p);
String TermStr(CParser& p, int numDigits);
String MulStr(CParser& p, int numDigits);
String ExpStr(CParser& p, int numDigits);
};
class UserEquation : public ExplicitEquation {
public:
UserEquation() {}
UserEquation(String _name, String _strEquation) {Init(_name, _strEquation);}
void Init(String _name, String _strEquation, String varHoriz = "x") {
name = _name;
strEquation = _strEquation;
eval.constants.GetAdd(varHoriz);
idx = eval.constants.GetCount() - 1;
eval.EvalStr(strEquation);
coeff.SetCount(eval.variables.GetCount());
}
double f(double x) {
eval.constants[idx] = x;
for (int i = 0; i < coeff.GetCount(); ++i)
eval.variables[i] = coeff[i];
return eval.Eval(strEquation);
}
String SetName(String _name) {name = _name;}
virtual String GetName() {return name;}
virtual String GetEquation(int numDigits = 3) {return eval.EvalStr(strEquation, numDigits);}
virtual void GuessCoeff(DataSource &series) {}
void SetDegree(int num) {NEVER();}
private:
String name;
String strEquation;
EvalExpr eval;
int idx;
};
END_UPP_NAMESPACE
#endif

View file

@ -1639,7 +1639,7 @@ void debug_h() {
; // It does nothing. Just to set a breakpoint in templated functions
}
INITBLOCK{
INITBLOCK {
SeriesPlot::Register<LineSeriesPlot>("Line");
SeriesPlot::Register<StaggeredSeriesPlot>("Staggered");
SeriesPlot::Register<BarSeriesPlot>("Bar");

View file

@ -0,0 +1,42 @@
topic "class EvalExpr";
[ $$0,0#00000000000000000000000000000000:Default]
[i448;a25;kKO9; $$1,0#37138531426314131252341829483380:structitem]
[l288;2 $$2,0#27521748481378242620020725143825:desc]
[0 $$3,0#96390100711032703541132217272105:end]
[H6;0 $$4,0#05600065144404261032431302351956:begin]
[i448;a25;kKO9;2 $$5,0#37138531426314131252341829483370:codeitem]
[{_}
[ {{10000@3 [s0;%% [*@(229)4 EvalExpr]]}}&]
[s3;%% &]
[s1;:EvalExpr`:`:class: [@(0.0.255) class]_[* EvalExpr]&]
[s2;%% &]
[s3; &]
[s4; &]
[s5;:EvalExpr`:`:EvalExpr`(`): [* EvalExpr]()&]
[s2;%% &]
[s3; &]
[s4; &]
[s5;:EvalExpr`:`:Eval`(String`): [@(0.0.255) double]_[* Eval]([_^String^ String]_[*@3 line])&]
[s2;%% [%-*@3 line] .&]
[s3;%% &]
[s4; &]
[s5;:EvalExpr`:`:EvalStr`(String`,int`): [_^String^ String]_[* EvalStr]([_^String^ String]_
[*@3 line], [@(0.0.255) int]_[*@3 numDigits]_`=_[@3 3])&]
[s2;%% [%-*@3 line] [%-*@3 numDigits] .&]
[s3;%% &]
[s4; &]
[s5;:EvalExpr`:`:constants: [_^VectorMap^ VectorMap]<[_^String^ String],
[@(0.0.255) double]>_[* constants]&]
[s2;%% &]
[s3; &]
[s4; &]
[s5;:EvalExpr`:`:variables: [_^VectorMap^ VectorMap]<[_^String^ String],
[@(0.0.255) double]>_[* variables]&]
[s2;%% &]
[s3; &]
[s4; &]
[s5;:EvalExpr`:`:functions: [_^VectorMap^ VectorMap]<[_^String^ String],
[@(0.0.255) double]_(`*)([@(0.0.255) double])>_[* functions]&]
[s2;%% &]
[s3; &]
[s0;%% ]]

View file

@ -0,0 +1,5 @@
TITLE("class EvalExpr")
COMPRESSED
120,156,173,148,95,107,219,48,20,197,191,138,96,205,176,67,22,164,123,37,91,182,183,145,135,22,6,99,236,97,176,23,161,196,174,227,6,51,215,41,254,83,6,33,223,125,215,78,234,52,109,74,22,54,63,88,178,174,206,209,239,92,108,27,118,117,197,39,252,29,63,115,133,215,217,93,210,22,141,53,185,148,58,74,64,69,191,190,126,15,34,146,11,146,163,47,80,43,20,18,60,186,9,20,160,0,165,208,16,72,141,168,121,88,55,85,155,54,121,147,221,91,83,128,214,17,144,18,72,9,190,2,225,75,45,181,64,95,3,25,0,231,192,125,80,66,162,6,21,46,179,58,181,134,211,118,164,237,129,135,1,23,156,251,66,112,4,159,163,146,66,32,144,5,248,32,184,10,179,114,105,205,23,47,234,4,178,11,166,60,194,247,200,77,74,78,238,157,76,162,64,14,168,68,160,188,240,54,91,229,229,203,88,29,157,58,155,203,231,97,186,94,102,187,84,155,197,150,25,182,217,136,174,93,51,100,166,230,209,104,196,204,120,230,0,4,174,100,55,143,73,113,243,251,161,178,
118,187,125,111,77,141,93,185,155,136,40,124,170,197,97,28,166,69,82,215,33,51,51,135,79,249,20,148,114,89,191,100,23,102,124,48,233,132,240,228,128,81,63,200,221,160,142,253,134,185,19,187,100,251,204,195,113,47,115,137,157,31,77,149,151,171,222,231,25,222,114,221,222,22,217,192,103,29,179,152,239,118,206,217,110,236,106,212,147,34,47,51,123,56,148,153,209,135,97,153,77,143,154,242,54,5,57,14,32,147,188,108,122,154,83,7,178,253,238,51,60,147,163,44,100,184,47,150,237,253,117,190,202,27,106,124,252,105,97,104,5,223,100,223,63,28,36,127,149,38,93,151,117,147,148,77,221,7,248,153,165,205,186,250,150,60,204,217,48,181,31,95,163,79,78,245,254,115,151,119,240,187,224,237,120,76,170,60,33,135,255,197,48,248,93,192,112,215,150,244,111,32,248,127,103,88,56,241,216,117,78,20,220,158,110,56,233,36,93,255,193,90,251,7,110,32,124,187,

View file

@ -25,8 +25,12 @@ trend lines and non linear regression.]&]
[s0;2 &]
[s0; [2 Its normal use is subclassed to equation types like ][^topic`:`/`/ScatterDraw`/src`/LinearEquation`$en`-us^2 L
inearEquation][2 , ][^topic`:`/`/ScatterDraw`/src`/PolynomialEquation`$en`-us^2 Polyn
omialEquation ][2 or ][^topic`:`/`/ScatterDraw`/src`/FourierEquation`$en`-us^2 Fourie
rEquation][2 .]&]
omialEquation, ][^topic`:`/`/ScatterDraw`/src`/FourierEquation`$en`-us^2 FourierEqu
ation, ][^topic`:`/`/ScatterDraw`/src`/Rational1Equation`$en`-us^2 Rational1Equatio
n][^topic`:`/`/ScatterDraw`/src`/FourierEquation`$en`-us^2 , ][^topic`:`/`/ScatterDraw`/src`/ExponentialEquation`$en`-us^2 E
xponentialEquation][^topic`:`/`/ScatterDraw`/src`/FourierEquation`$en`-us^2 ,
][^topic`:`/`/ScatterDraw`/src`/UserEquation`$en`-us^2 UserEquation][^topic`:`/`/ScatterDraw`/src`/FourierEquation`$en`-us^2 .
]&]
[s0;2 &]
[s1; &]
[ {{10000F(128)G(128)@1 [s0; [*2 Public Member List]]}}&]
@ -74,6 +78,12 @@ ataSource]_`&[*@3 series])&]
[s4; Simplified version of [@(0.0.255) bool]_[* Fit]([_^DataSource^ DataSource]_`&[*@3 series
], [@(0.0.255) double]_`&[*@3 r2]) that do not return [*@3 r2].&]
[s1; &]
[s3;%- &]
[s5;:ExplicitEquation`:`:GuessCoeff`(DataSource`&`):%- [@(0.0.255) virtual]
[@(0.0.255) void]_[* GuessCoeff]([_^DataSource^ DataSource]_`&[*@3 series])_`=_[@3 0]&]
[s4; Guesses a set of initial values for the equation coefficients
that matches [%-*@3 series], based on previous knowledge of equation.&]
[s1; &]
[s3; &]
[s5;:ExplicitEquation`:`:f`(double`): [@(0.0.255) virtual] [@(0.0.255) double]_[* f]([@(0.0.255) d
ouble]_[*@3 x1])&]

View file

@ -1,11 +1,11 @@
TITLE("2.1 ExplicitEquation")
COMPRESSED
120,156,189,88,237,118,226,54,26,190,21,157,116,50,135,204,130,227,15,8,4,218,238,236,105,146,105,182,77,102,78,51,237,31,142,65,194,8,208,25,91,242,202,114,128,206,206,222,207,94,199,222,88,95,89,182,177,129,36,36,237,108,126,4,140,222,207,231,253,148,135,232,213,43,187,105,127,99,63,241,215,191,160,51,146,134,202,31,218,192,225,0,199,249,153,119,110,59,182,221,117,28,219,115,187,182,215,105,59,142,231,186,78,215,237,186,142,221,233,83,62,245,135,172,221,238,13,136,219,25,124,250,233,253,249,192,5,94,23,120,189,174,227,245,58,158,211,118,207,224,159,227,57,110,199,245,218,78,207,61,111,247,60,175,103,247,131,144,36,137,63,252,241,108,160,213,121,218,192,206,25,152,113,214,113,218,237,182,13,124,90,105,219,115,60,219,245,58,206,121,231,172,63,161,115,198,253,97,232,246,122,153,158,118,179,253,141,219,237,128,61,237,94,187,231,120,221,158,11,108,174,109,187,118,215,5,49,94,207,237,244,167,52,9,246,25,217,121,210,200,46,24,41,166,148,41,
26,249,195,207,227,47,199,151,183,173,95,239,208,16,125,254,236,104,192,222,122,104,152,216,3,52,124,243,182,225,186,231,39,109,116,185,138,67,22,48,117,249,175,148,40,38,184,239,127,249,242,218,31,38,206,0,233,15,119,208,223,166,192,125,108,144,232,163,225,219,134,109,217,150,219,233,156,120,40,71,199,67,99,127,248,198,219,17,140,250,200,175,209,199,233,4,8,54,12,23,68,145,59,145,202,128,250,90,179,13,46,155,79,52,116,119,165,73,26,75,154,80,174,18,68,208,156,114,42,89,128,104,78,133,104,65,166,214,49,109,34,181,32,10,177,4,41,129,18,178,110,2,199,44,229,65,70,176,70,248,59,52,107,172,156,38,90,185,77,100,89,22,28,195,3,49,15,39,104,185,160,146,2,153,102,95,80,52,165,49,164,16,232,69,247,68,50,50,9,65,188,97,70,4,232,52,9,227,187,68,96,37,159,86,5,151,212,73,76,3,54,3,227,3,65,103,240,201,180,79,22,186,18,18,220,33,81,28,210,190,191,193,161,245,239,218,67,102,189,135,223,172,240,200,69,248,
111,200,133,175,8,183,144,179,7,66,227,136,86,201,211,104,66,101,130,188,38,114,51,187,112,203,41,237,41,161,171,217,179,71,222,181,66,1,225,40,73,227,88,72,5,114,214,123,240,79,4,98,25,244,105,66,167,26,255,5,232,11,65,147,4,128,80,200,120,142,12,7,90,253,68,36,68,118,14,145,77,128,123,191,214,4,136,101,68,66,45,82,75,78,210,73,150,122,70,126,45,242,9,200,252,68,33,239,70,74,196,44,128,204,61,197,167,119,1,81,138,202,11,73,150,248,52,145,1,62,253,57,83,92,230,247,43,202,113,43,77,0,209,250,129,15,234,155,79,10,251,32,194,53,23,17,35,225,30,129,187,135,72,75,133,88,63,37,246,10,42,131,209,125,70,110,157,104,121,117,224,76,41,23,45,224,170,225,184,189,147,119,217,255,183,78,209,14,192,180,172,28,209,13,213,185,1,158,39,170,104,5,158,105,5,157,253,173,224,142,170,11,29,49,138,27,140,43,124,82,235,10,232,158,73,149,146,208,175,255,40,216,212,31,15,223,160,146,215,111,84,207,65,142,62,134,
102,5,153,234,159,104,229,237,129,38,78,80,249,43,34,69,61,106,126,36,102,181,228,181,208,53,135,42,143,75,184,55,121,97,210,49,35,94,197,130,235,34,205,153,23,108,190,160,137,2,174,37,32,144,255,184,183,152,173,220,164,235,76,150,164,33,81,144,125,75,166,22,245,18,50,133,166,69,85,139,169,48,61,211,39,43,94,52,183,127,126,136,31,10,70,45,82,35,37,16,186,71,172,152,90,239,128,80,233,227,143,199,240,138,41,220,216,244,95,252,26,55,167,2,242,65,127,219,10,40,144,94,74,41,100,22,63,120,128,200,141,71,27,214,81,181,141,143,241,235,44,94,9,52,103,154,248,205,154,32,163,160,164,145,110,37,208,68,6,16,9,52,19,6,134,137,142,10,248,57,97,220,224,186,13,200,150,227,166,223,71,68,101,82,170,38,160,41,88,151,63,88,232,35,240,0,75,88,193,46,99,98,124,110,226,170,82,201,33,176,140,103,103,195,209,66,169,216,20,40,84,159,181,100,159,88,76,167,140,96,75,200,57,62,213,207,248,244,135,141,97,120,44,102,120,60,
165,80,201,81,110,250,168,106,184,86,90,59,245,81,129,69,37,195,160,205,37,117,221,108,174,213,171,116,53,35,17,11,215,185,122,157,169,43,108,197,139,24,255,93,49,5,193,251,238,134,48,142,199,31,200,28,226,114,169,185,124,196,116,182,68,160,188,68,242,48,183,126,166,247,148,67,50,206,241,241,165,139,143,123,54,62,62,247,110,136,4,252,228,20,60,37,225,92,72,40,128,104,132,54,164,173,146,0,234,181,32,64,19,162,123,53,40,175,106,94,46,151,216,138,130,4,91,132,135,216,154,139,123,248,245,63,145,144,20,159,142,208,63,193,18,138,110,132,252,223,127,125,68,97,216,132,214,129,118,223,92,223,126,248,199,15,63,141,80,254,197,135,102,203,96,39,131,150,16,178,137,36,114,93,129,218,68,60,233,155,95,152,211,177,7,239,161,61,238,150,76,255,86,100,85,96,8,67,189,169,161,171,98,165,200,165,192,96,10,2,154,204,210,48,92,91,121,171,32,249,33,180,146,48,133,196,102,243,121,86,234,48,71,127,167,82,88,79,43,190,230,100,154,229,57,221,
20,90,213,138,247,60,92,87,179,28,38,176,38,73,178,249,158,207,106,58,181,74,209,89,51,137,137,36,17,85,122,133,42,22,35,195,192,133,170,48,61,109,221,29,204,229,112,191,97,31,107,253,44,243,191,44,220,220,94,5,219,65,182,164,77,74,104,244,22,164,75,212,96,244,72,79,52,92,98,162,32,229,15,50,245,58,138,165,136,169,188,230,113,170,62,24,0,96,41,218,50,25,48,208,56,0,41,52,171,40,41,90,1,211,76,5,108,192,85,219,215,244,110,74,179,137,144,249,21,145,53,34,122,228,129,193,252,30,202,130,242,128,30,96,224,71,33,110,96,169,42,210,234,82,67,150,157,109,163,10,38,44,196,52,41,197,103,96,0,158,34,76,77,55,20,176,246,134,98,25,174,255,204,68,248,235,230,64,217,231,117,47,130,213,23,128,2,187,147,162,29,85,148,76,132,8,191,198,160,49,3,98,42,178,252,206,43,178,214,121,15,194,104,134,27,249,148,60,100,233,41,204,0,111,102,245,117,103,115,2,22,172,156,18,159,95,242,62,162,19,206,244,139,98,206,237,
172,217,101,75,221,93,89,52,159,145,252,34,215,154,95,197,197,253,17,50,167,238,95,15,64,190,4,172,28,228,235,118,87,232,121,22,30,191,209,64,9,137,191,205,241,248,254,37,136,140,71,70,202,8,153,79,127,252,237,30,234,239,115,32,190,66,34,232,30,107,132,243,103,120,255,142,170,91,104,116,184,241,176,207,227,209,29,140,15,62,31,33,243,153,185,156,243,249,141,125,142,108,150,100,32,209,43,49,62,50,215,45,124,212,132,239,155,155,18,62,210,83,0,31,229,247,28,124,244,44,195,175,96,252,190,212,248,130,247,79,58,128,184,190,165,187,91,126,152,95,61,112,7,213,222,102,60,114,169,121,142,223,229,227,11,252,46,175,146,143,251,13,179,48,14,137,158,136,116,165,154,26,129,236,117,4,110,121,109,253,46,194,41,94,70,228,239,39,106,214,31,183,158,184,83,222,166,209,5,236,105,42,41,174,149,192,241,208,29,178,164,125,240,26,89,191,68,102,23,181,225,113,203,28,61,252,214,163,178,107,76,51,249,250,29,10,223,220,11,38,235,131,48,180,158,225,
249,187,154,231,187,110,231,62,161,119,53,175,31,13,211,215,243,40,119,229,128,104,222,144,21,140,240,221,85,230,144,232,62,200,251,242,104,71,100,197,162,52,170,160,81,162,69,55,242,161,31,115,154,65,146,47,32,39,208,63,245,213,84,223,15,183,238,166,21,136,205,196,121,102,208,31,1,232,209,36,120,4,156,125,73,241,255,115,188,204,13,228,251,127,0,248,213,228,44,
120,156,189,88,235,114,219,54,22,126,21,140,27,103,236,172,76,243,34,217,178,220,116,179,83,219,169,183,181,147,169,211,253,163,161,4,136,130,36,76,72,128,11,130,182,212,108,246,125,246,57,246,197,246,0,32,41,82,162,175,109,54,63,34,147,56,215,239,28,156,11,135,232,213,43,183,227,126,231,62,242,111,112,70,103,36,143,85,56,116,129,195,3,142,147,163,224,196,245,92,247,216,243,220,192,63,118,131,94,215,243,2,223,247,142,253,99,223,115,123,3,202,167,225,144,117,187,253,83,226,247,78,63,255,252,225,228,212,7,94,31,120,131,99,47,232,247,2,175,235,31,193,127,94,224,249,61,63,232,122,125,255,164,219,15,130,190,59,136,98,146,101,225,240,167,163,83,173,46,208,6,246,142,192,140,163,158,215,237,118,93,224,211,74,187,129,23,184,126,208,243,78,122,71,131,9,157,51,30,14,99,191,223,55,122,186,157,238,119,254,113,15,236,233,246,187,125,47,56,238,251,192,230,187,174,239,30,251,32,38,232,251,189,193,148,102,81,155,145,189,71,141,60,6,35,197,
148,50,69,147,112,248,101,252,117,247,252,250,224,183,27,52,68,95,190,120,26,176,119,1,26,102,238,41,26,190,121,183,231,251,39,251,93,116,190,76,99,22,49,117,254,207,156,40,38,120,24,126,253,250,58,28,102,222,41,210,63,254,233,96,147,2,15,176,69,98,128,134,239,246,92,199,117,252,94,111,63,64,5,58,1,26,135,195,55,193,150,96,52,64,97,131,62,205,39,64,176,102,56,35,138,220,136,92,70,52,212,154,93,112,217,254,162,161,191,45,77,210,84,210,140,114,149,33,130,230,148,83,201,34,68,11,42,68,75,50,181,74,105,7,169,5,81,136,101,72,9,148,145,85,7,56,102,57,143,12,193,10,225,183,104,182,183,244,58,104,233,119,144,227,56,112,12,15,196,62,236,163,187,5,149,20,200,52,251,130,162,41,77,33,133,64,47,186,37,146,145,73,12,226,45,51,34,64,167,73,24,223,38,2,43,249,180,46,184,162,206,82,26,177,25,24,31,9,58,131,95,166,125,114,208,133,144,224,14,73,210,152,14,194,53,14,7,255,106,60,24,235,3,252,102,137,
71,62,194,127,65,62,252,137,240,1,242,90,32,180,142,104,149,60,79,38,84,102,40,232,32,223,216,133,15,188,202,158,10,186,134,61,45,242,46,21,138,8,71,89,158,166,66,42,144,179,106,193,63,19,136,25,232,243,140,78,53,254,11,208,23,131,38,9,0,161,152,241,2,25,14,180,250,137,72,136,236,28,34,155,1,119,187,214,12,136,101,66,98,45,82,75,206,242,137,73,61,43,191,17,249,12,100,126,166,144,119,35,37,82,22,65,230,30,226,195,155,136,40,69,229,153,36,119,248,48,147,17,62,252,197,40,174,242,251,21,229,248,32,207,0,209,230,65,8,234,59,143,10,251,40,226,21,23,9,35,113,139,192,237,195,199,5,94,192,157,96,180,205,188,141,147,199,69,253,106,232,72,236,181,8,219,58,123,185,93,143,27,2,215,89,112,72,172,118,148,90,78,191,165,49,191,101,173,140,245,215,47,87,223,204,97,91,85,203,106,124,177,231,249,253,253,247,230,255,119,94,89,153,33,75,76,101,68,87,84,95,83,72,194,76,149,85,57,176,85,185,215,94,149,111,168,
58,211,151,135,226,61,198,21,222,111,20,104,116,203,164,202,73,28,54,95,10,54,13,199,195,55,168,226,13,247,234,231,32,71,31,67,223,128,162,17,238,107,229,221,83,77,156,161,234,45,34,101,105,212,252,72,204,26,117,196,65,151,28,10,110,90,101,254,250,138,218,202,96,136,139,136,151,204,11,54,95,208,76,1,215,29,32,80,188,108,173,171,78,97,210,165,145,37,105,76,20,20,130,59,166,22,205,106,102,107,158,22,85,175,107,165,233,70,159,172,121,209,217,124,125,31,63,212,46,181,200,173,148,72,232,114,189,100,106,181,5,66,173,165,62,28,195,11,166,240,222,186,21,226,215,184,51,21,144,15,250,175,141,128,2,233,185,148,66,154,248,193,3,68,110,60,90,179,142,234,29,117,140,95,155,120,65,78,51,154,133,157,134,32,171,160,162,145,126,45,208,68,70,16,9,52,19,22,134,137,142,10,248,57,97,220,226,186,9,200,134,227,182,245,38,68,25,41,117,19,208,20,172,43,30,28,244,9,120,128,37,174,97,103,152,24,159,219,184,170,92,114,8,44,227,230,
108,56,90,40,149,218,219,8,87,205,185,99,159,89,74,167,140,96,71,200,57,62,212,207,248,240,199,181,97,120,44,102,120,60,165,112,109,147,194,244,81,221,112,173,180,113,26,162,18,139,90,134,65,199,201,154,186,217,92,171,87,249,114,70,18,22,175,10,245,58,83,151,216,73,23,41,254,171,98,10,130,247,246,138,48,142,199,31,201,28,226,114,174,185,66,196,116,182,36,160,188,66,242,105,110,253,66,111,41,135,100,156,227,221,115,31,239,246,93,188,123,18,92,17,9,248,201,41,120,74,226,185,144,112,1,146,17,90,147,30,84,4,112,95,75,2,52,33,186,109,130,242,186,230,187,187,59,236,36,81,134,29,194,99,236,204,197,45,188,253,119,34,36,197,135,35,244,119,176,132,162,43,33,255,251,159,16,81,232,251,177,243,68,187,175,46,175,63,254,237,199,159,71,168,248,35,68,96,5,140,199,80,18,98,54,145,68,174,106,80,219,136,103,3,251,134,121,61,247,244,3,148,199,237,43,51,184,22,230,22,88,194,88,15,205,232,162,156,238,10,41,48,35,68,17,205,
102,121,28,175,156,162,84,144,226,16,74,73,156,67,98,179,249,220,92,117,24,105,126,167,82,56,143,43,190,228,100,106,242,156,174,47,90,221,138,15,60,94,213,179,28,134,33,77,146,153,81,171,24,155,232,212,169,68,155,98,146,18,73,18,170,244,52,91,206,168,150,129,11,85,99,122,220,186,27,24,145,226,118,195,62,53,234,153,241,191,186,184,133,189,10,6,53,51,47,79,42,104,244,64,170,175,168,197,232,129,154,104,185,196,68,65,202,63,201,212,203,36,149,34,165,242,146,167,185,250,104,1,128,249,116,195,100,192,64,227,0,164,80,172,146,172,44,5,76,51,149,176,1,87,99,116,214,107,2,53,29,193,248,149,144,21,34,186,229,129,193,252,22,174,5,229,17,125,130,129,159,132,184,130,249,182,76,171,115,13,153,57,219,68,21,76,88,136,105,86,137,55,96,0,158,34,206,109,53,20,176,129,196,226,46,94,253,145,142,240,231,245,129,170,206,235,90,4,91,8,0,5,118,103,101,57,170,41,153,8,17,127,139,70,99,27,196,84,152,252,46,110,100,163,242,86,
24,237,30,60,132,210,123,200,225,204,20,252,45,176,128,241,233,115,208,90,206,115,96,28,227,183,227,33,60,187,97,1,168,17,163,175,186,185,75,128,37,227,76,207,179,229,109,43,251,105,235,182,181,209,52,119,15,26,128,86,53,27,22,224,91,38,96,246,248,204,33,163,232,116,110,102,175,231,143,28,128,88,49,98,60,101,98,44,99,8,88,205,154,179,226,250,4,204,93,122,85,114,253,90,20,97,237,175,45,182,229,144,176,181,46,86,190,109,207,123,154,207,74,14,95,226,90,231,155,184,216,158,222,246,212,255,243,1,40,38,168,165,135,66,221,43,74,61,207,194,227,31,52,82,66,226,239,11,60,126,120,9,34,227,145,149,50,66,246,55,28,127,223,66,253,67,1,196,55,72,4,125,169,172,112,254,12,239,223,83,117,13,93,2,239,221,239,243,120,116,3,189,151,207,71,200,254,218,154,96,249,194,189,54,71,214,27,6,144,232,125,2,239,216,207,6,120,167,3,127,175,55,126,188,163,91,40,222,41,118,69,188,243,44,195,47,96,118,121,169,241,37,239,31,116,0,
113,253,181,201,223,240,195,190,13,192,29,212,248,42,247,192,70,248,28,191,171,199,23,248,93,109,239,15,251,13,131,68,26,19,61,78,208,165,234,104,4,204,103,53,124,16,116,245,55,53,175,252,168,86,124,103,123,70,83,130,61,249,58,79,206,96,200,85,89,185,147,111,118,163,218,2,94,209,222,187,131,55,55,112,179,229,22,237,1,246,137,251,251,201,122,80,155,26,249,250,91,32,95,47,85,147,213,147,48,124,86,59,110,120,190,237,118,225,19,122,223,240,250,193,48,125,59,143,10,87,158,16,205,43,178,132,249,103,123,14,124,74,116,239,229,125,121,180,19,178,100,73,158,212,208,168,208,162,107,249,80,143,57,53,144,20,211,219,62,212,79,189,215,235,229,122,99,177,175,65,108,59,206,51,131,254,0,64,15,38,193,3,224,180,37,197,255,207,241,42,55,80,24,254,15,150,177,225,93,

View file

@ -0,0 +1,24 @@
topic "class ExponentialEquation : public ExplicitEquation";
[ $$0,0#00000000000000000000000000000000:Default]
[i448;a25;kKO9; $$1,0#37138531426314131252341829483380:structitem]
[l288;2 $$2,0#27521748481378242620020725143825:desc]
[0 $$3,0#96390100711032703541132217272105:end]
[i448;a25;kKO9;2 $$4,0#37138531426314131252341829483370:codeitem]
[H6;0 $$5,0#05600065144404261032431302351956:begin]
[{_}%EN-US
[ {{10000@3 [s0; [*@(229)4 ExponentialEquation]]}}&]
[s3;%- &]
[s1;:ExponentialEquation`:`:class:%- [@(0.0.255) class]_[* ExponentialEquation]_:_[@(0.0.255) p
ublic]_[*@3 ExplicitEquation]&]
[s2; &]
[s0; [2 ExponentialEquation represents an exponential equation as y
`= a`*e`^`-x `+ b]&]
[s0; &]
[s3; &]
[ {{10000F(128)G(128)@1 [s0; [* Constructor Detail]]}}&]
[s0; &]
[s4;:ExponentialEquation`:`:ExponentialEquation`(double`,double`):%- [* ExponentialEqua
tion]([@(0.0.255) double]_[*@3 a], [@(0.0.255) double]_[*@3 b])&]
[s2; Initializes equation coefficients [%-*@3 a] and [%-*@3 b].&]
[s3; &]
[s0; ]]

View file

@ -0,0 +1,5 @@
TITLE("class ExponentialEquation : public ExplicitEquation")
COMPRESSED
120,156,133,146,111,171,155,48,20,198,191,74,96,183,67,187,182,228,156,36,26,35,131,194,110,247,135,193,246,98,236,85,200,170,181,233,144,57,237,170,133,187,149,126,247,37,86,215,203,232,229,250,34,49,241,57,207,121,206,15,53,185,187,163,51,250,130,62,243,168,123,187,203,143,85,103,116,201,185,76,115,20,233,143,143,159,147,212,149,131,43,103,49,48,41,24,112,140,220,2,12,80,32,227,32,49,225,146,49,73,85,219,29,142,69,87,118,246,167,209,21,74,153,162,171,68,87,137,177,64,136,185,228,18,88,44,209,25,32,165,72,99,20,192,153,68,161,182,182,45,140,166,78,206,156,60,137,88,66,129,210,24,128,50,140,41,19,28,128,161,179,192,24,129,10,101,235,237,255,25,125,43,254,108,200,152,170,162,217,218,75,196,247,81,234,59,10,79,70,68,110,254,200,197,225,156,186,82,223,151,51,96,20,153,128,68,68,106,99,191,151,181,209,167,245,121,178,250,52,255,250,133,104,114,58,129,135,182,100,68,183,52,37,122,186,12,16,147,144,147,213,195,190,169,109,221,
149,121,181,250,117,204,187,178,169,141,57,159,95,26,221,178,116,50,39,254,5,82,117,67,150,169,76,21,85,222,182,202,201,244,50,160,11,186,64,33,66,210,95,154,181,158,222,52,95,171,245,99,241,254,184,169,202,194,171,93,54,167,119,135,178,251,39,246,221,49,237,67,248,212,120,203,145,28,236,254,96,91,119,217,146,188,38,246,170,32,118,148,228,45,249,77,178,215,36,207,166,54,251,150,205,31,72,246,138,108,204,224,123,25,214,111,35,167,183,1,160,12,223,245,235,18,70,102,228,77,83,95,126,155,230,64,238,109,151,151,213,200,106,112,225,79,146,186,117,29,108,27,55,189,205,102,195,30,246,36,111,99,11,30,67,187,232,7,104,185,153,145,39,63,110,76,56,48,252,80,151,222,176,252,99,219,43,151,162,177,187,157,35,222,195,211,147,249,197,207,97,220,142,167,141,89,92,241,248,49,141,249,11,48,53,14,172,

File diff suppressed because one or more lines are too long

View file

@ -1,26 +1,26 @@
TITLE("2.1.3 Fourier Equation")
COMPRESSED
120,156,133,121,233,111,98,89,150,231,191,98,169,187,90,153,53,157,89,94,34,50,34,35,190,228,72,93,61,45,205,42,181,230,83,40,186,34,171,210,85,21,170,172,204,156,140,200,153,145,106,74,194,102,223,119,48,24,48,155,217,204,106,176,49,152,125,49,96,48,59,102,177,217,49,54,24,204,106,118,195,60,103,45,83,149,211,82,223,15,239,241,238,59,231,252,206,61,231,190,115,206,61,188,90,250,219,191,93,254,251,229,191,89,254,55,198,139,127,88,255,229,231,223,125,249,254,245,171,101,128,99,5,224,248,244,147,181,79,151,87,150,151,159,173,172,44,175,173,62,91,94,123,250,100,101,101,109,117,117,229,217,234,179,213,149,229,167,47,214,191,250,226,245,171,183,79,158,60,127,249,249,234,211,151,191,249,143,255,245,211,151,171,0,239,42,192,187,246,108,101,237,249,211,181,149,39,171,159,0,151,149,181,149,213,167,171,107,79,86,158,175,126,250,228,249,218,218,243,229,23,191,248,242,243,119,239,94,191,250,167,79,94,62,194,173,61,42,248,244,19,64,141,79,158,174,
60,121,242,100,25,224,123,4,125,178,182,178,182,188,186,246,116,229,211,167,159,188,248,249,250,175,222,126,245,175,1,62,249,55,1,159,1,128,95,127,177,254,246,253,250,111,95,191,250,114,245,249,243,239,249,158,254,253,211,191,89,125,246,20,88,208,147,231,79,158,175,172,61,123,190,10,176,175,46,47,175,46,63,91,5,244,88,123,190,250,244,197,23,235,239,126,241,250,213,239,126,246,251,31,253,244,191,124,244,223,255,121,233,213,210,239,126,183,242,104,176,207,214,150,94,189,91,126,185,244,234,199,159,125,176,186,250,233,135,79,150,254,241,235,239,190,125,187,254,237,79,255,199,119,159,191,127,251,245,87,175,95,255,254,247,127,247,250,213,187,149,151,75,143,183,213,151,47,126,64,240,230,197,155,63,216,225,197,143,62,90,122,245,217,7,203,31,47,127,188,250,244,233,135,107,75,127,180,206,218,210,207,94,191,250,241,218,15,5,47,189,88,122,253,87,228,223,124,247,243,47,223,254,226,255,209,255,244,127,127,3,60,191,125,255,103,77,30,241,151,129,53,255,225,190,244,
106,245,255,19,249,237,250,55,223,174,191,91,255,234,253,187,165,207,151,190,122,255,235,165,47,214,127,245,237,250,58,0,244,47,191,126,255,254,27,64,213,159,188,249,201,250,87,111,62,254,95,111,127,243,246,155,245,47,222,126,254,230,227,175,191,253,213,155,159,60,62,191,249,201,31,197,189,249,217,187,117,224,254,238,95,254,12,176,244,135,137,215,0,228,210,151,111,127,179,254,175,168,242,209,255,121,124,251,217,103,111,127,251,249,175,214,95,0,110,92,249,187,213,229,79,65,96,255,134,14,244,231,49,242,176,154,236,113,42,158,224,111,123,156,16,170,91,184,225,48,131,15,186,10,29,106,234,146,15,119,15,244,29,47,77,175,139,198,15,101,98,215,105,68,135,6,201,124,27,186,141,238,48,2,242,157,81,220,196,253,125,34,129,160,199,36,93,62,166,142,7,197,6,16,190,251,209,3,199,128,31,50,164,121,76,143,81,44,224,146,224,225,20,30,106,95,155,47,123,185,222,93,203,32,184,206,73,247,98,60,135,210,221,116,237,44,230,53,91,141,20,176,213,106,181,234,
98,241,32,182,80,40,80,74,138,201,162,202,234,115,163,220,107,107,93,26,218,177,112,184,93,114,33,167,23,250,214,245,245,181,56,47,20,182,237,81,151,20,18,142,8,138,110,24,206,46,157,207,231,130,19,204,236,104,208,72,149,220,104,58,155,205,14,177,141,87,198,26,63,46,145,68,194,173,168,45,169,202,47,72,157,8,2,135,155,55,245,154,124,127,50,42,99,245,214,217,195,195,176,145,6,95,164,21,153,3,99,167,124,6,43,185,246,194,69,236,73,56,106,115,58,28,119,240,99,180,17,86,184,189,109,223,150,203,78,176,29,92,130,239,152,167,231,211,65,185,84,42,13,135,67,174,129,203,181,120,92,174,17,97,60,150,158,24,80,212,246,57,106,23,59,139,238,114,252,247,245,132,115,196,46,176,88,52,121,170,141,12,115,54,193,224,252,98,129,126,224,57,225,70,131,1,132,221,82,115,247,246,252,214,233,32,16,8,28,54,221,23,164,3,191,223,239,73,224,216,199,213,51,166,236,176,235,70,36,121,14,38,143,215,198,90,110,194,220,58,198,20,17,156,76,7,
208,166,54,46,178,90,119,66,61,79,0,207,49,203,108,15,102,163,145,137,183,45,224,36,18,105,208,188,0,137,69,34,26,149,154,216,60,118,203,226,41,45,165,114,216,62,109,99,46,131,173,96,48,153,76,138,210,143,240,179,217,44,10,143,70,117,42,142,105,36,81,139,197,112,188,190,21,201,227,240,120,235,228,30,87,63,32,201,28,110,5,24,228,128,5,251,131,78,181,195,59,21,65,122,105,101,88,235,167,171,202,40,15,137,76,166,10,207,160,53,84,6,1,197,178,26,119,147,110,197,7,233,156,24,176,219,173,203,163,72,24,175,117,56,28,96,56,78,220,200,91,243,190,76,188,39,145,60,132,83,182,86,254,210,64,38,16,184,251,244,126,68,224,241,235,142,231,243,217,232,46,123,76,205,2,178,80,25,56,116,142,53,233,116,125,149,85,51,239,246,122,206,147,11,198,65,253,190,83,114,59,235,10,85,246,120,48,233,183,107,187,181,24,143,63,24,216,199,228,198,98,62,45,183,88,134,158,139,102,57,237,215,162,80,79,146,23,42,113,54,187,176,224,4,206,230,
112,238,90,173,60,86,127,151,221,0,195,75,181,22,138,204,117,184,205,48,48,154,229,86,201,229,215,253,126,159,146,158,20,233,78,56,85,108,59,181,79,55,192,83,249,6,62,117,19,167,22,119,153,20,202,130,82,24,0,226,91,102,230,152,224,51,10,11,32,34,216,51,43,22,139,54,190,31,143,64,132,57,41,208,45,164,4,110,165,173,233,180,84,42,141,82,113,157,200,62,4,121,122,151,191,60,34,146,72,37,209,161,47,26,178,46,102,189,197,108,212,241,122,189,105,179,246,250,81,92,226,196,205,27,16,118,153,237,4,175,171,191,160,83,100,211,115,27,116,136,66,163,167,87,219,118,91,45,38,134,179,89,172,70,179,57,21,220,215,175,220,33,93,26,132,42,117,246,13,134,241,69,122,255,138,148,233,105,182,185,220,194,197,97,243,0,188,177,49,30,143,137,196,28,209,58,159,236,5,182,7,168,4,24,102,48,24,160,199,195,214,160,211,169,57,147,202,236,189,171,157,42,34,154,213,74,229,210,72,187,247,199,167,138,8,106,43,225,167,214,236,33,235,197,3,4,
47,85,239,42,175,79,46,46,46,42,181,142,160,211,73,120,157,77,48,70,214,127,152,220,199,111,174,139,14,168,190,149,163,232,149,130,197,109,82,217,196,199,37,17,154,226,66,158,241,114,64,131,205,162,82,118,105,136,158,200,176,17,12,158,232,218,62,108,26,69,229,19,76,157,171,197,228,123,141,152,56,212,11,145,204,226,30,193,232,72,61,72,41,178,115,155,116,251,234,240,46,107,188,14,178,26,168,11,82,180,145,209,141,144,224,86,74,93,12,176,25,218,61,2,44,3,147,246,81,12,69,206,60,209,3,219,72,178,21,76,90,172,243,81,217,133,36,7,238,57,199,90,4,183,218,243,18,5,4,233,130,192,80,65,202,113,240,124,222,27,21,225,209,227,84,10,153,2,80,229,98,113,91,124,116,52,26,119,175,88,144,227,114,107,63,39,157,167,78,109,188,202,41,117,176,119,182,173,247,156,28,203,6,77,153,128,58,164,96,92,118,241,67,43,18,81,71,128,207,45,196,49,111,224,217,199,231,9,103,92,21,43,37,164,49,177,136,22,216,82,247,174,131,206,83,44,
70,215,198,91,103,249,112,36,210,193,91,231,57,245,142,48,122,172,214,206,201,183,212,205,195,13,244,176,113,195,135,165,211,105,61,20,10,5,150,165,137,248,192,91,173,194,21,211,34,103,167,176,27,250,70,44,77,186,185,139,202,101,81,90,53,116,41,111,177,88,199,195,59,7,20,221,111,58,224,210,40,5,122,221,60,184,77,122,131,227,58,190,95,139,209,149,89,18,170,69,219,139,9,71,152,7,120,216,133,189,14,237,12,175,193,113,197,89,52,54,142,29,223,215,33,193,91,51,198,75,27,245,66,214,218,142,105,28,13,23,184,71,153,10,119,211,143,36,23,196,66,44,93,75,205,141,33,224,226,81,186,236,73,226,253,38,35,24,166,11,88,103,35,53,55,16,7,243,46,55,139,198,43,57,33,176,173,41,185,224,59,242,89,65,178,135,74,56,239,77,61,213,176,149,123,216,153,14,67,161,144,120,203,203,54,246,17,72,230,34,59,55,107,114,110,5,34,106,43,137,89,85,163,96,63,111,153,49,230,78,50,218,4,39,48,10,68,242,6,68,113,89,12,7,142,142,
20,138,179,99,204,65,157,43,245,214,229,85,253,109,40,169,12,135,195,164,45,55,222,50,145,200,100,168,76,29,202,193,84,154,140,123,36,12,135,108,100,143,85,201,96,80,105,7,195,198,100,209,217,126,220,2,70,50,200,116,229,214,125,70,113,80,79,152,198,61,11,250,161,31,155,0,31,123,42,94,173,138,70,180,185,21,136,95,48,8,4,82,128,193,78,92,46,211,67,126,112,161,50,117,81,37,38,77,47,16,97,183,245,122,75,63,234,191,60,168,76,125,164,90,76,100,158,162,239,142,163,33,192,23,22,96,31,214,194,60,167,233,238,78,25,60,194,120,61,210,132,161,119,237,12,109,92,1,67,195,34,35,58,195,33,189,15,18,57,98,16,220,142,229,114,203,136,137,94,159,102,141,247,231,229,9,76,116,52,238,37,171,105,237,181,190,22,179,84,43,94,162,151,126,161,65,92,109,113,179,245,155,217,129,96,112,19,1,167,97,140,250,233,22,216,67,219,185,113,222,170,172,56,107,222,108,50,101,244,173,144,154,162,38,56,245,55,160,81,217,52,106,23,122,161,137,
213,122,19,225,183,219,164,246,145,249,190,30,239,167,56,140,98,11,72,112,19,67,66,239,242,120,60,165,30,116,159,213,25,214,217,137,219,254,77,100,11,135,207,21,180,33,203,182,154,91,0,65,184,56,164,16,190,71,219,84,183,171,246,33,194,94,191,62,99,66,167,173,82,222,129,37,147,51,49,109,245,172,146,71,71,33,244,246,208,55,212,4,91,121,11,20,77,183,180,70,37,180,47,99,11,157,21,28,247,173,43,138,201,186,3,135,195,189,81,197,126,212,17,159,148,50,230,211,130,34,117,115,209,50,71,221,188,13,103,248,36,229,156,187,233,121,132,231,161,147,72,230,205,128,237,115,18,76,138,105,152,220,131,100,68,20,150,194,227,176,21,211,186,84,236,186,193,131,64,92,46,87,230,50,68,180,89,183,219,109,144,28,29,113,211,93,143,155,47,150,38,164,24,255,238,20,35,39,157,245,59,29,78,45,165,230,181,15,251,36,132,147,193,236,186,206,40,16,108,254,97,200,30,36,116,69,39,140,129,228,47,24,241,45,12,149,66,201,234,202,30,28,224,145,43,101,
222,202,73,138,204,72,172,91,91,66,31,208,111,199,188,126,36,126,207,157,145,77,32,44,246,12,3,98,104,129,12,19,9,222,155,242,230,201,61,1,103,212,236,75,98,242,102,1,174,112,194,176,229,27,75,188,188,31,160,163,9,249,198,62,45,130,221,35,237,195,237,69,32,99,194,32,51,72,120,84,222,232,52,117,1,44,199,175,85,15,36,82,4,24,14,214,237,64,116,55,4,201,236,6,182,8,221,198,165,224,99,178,249,90,108,241,134,66,173,113,61,75,64,76,239,111,183,147,187,126,186,52,99,155,148,125,209,83,51,59,66,208,40,49,44,82,187,180,209,45,39,224,50,115,199,130,180,206,186,126,2,143,227,108,183,93,165,253,179,42,36,109,93,88,245,100,247,97,49,2,36,0,252,220,212,245,142,58,229,93,196,67,180,130,146,100,179,231,89,3,113,209,17,55,183,51,7,211,34,148,174,62,159,101,10,44,225,245,13,155,112,124,55,217,128,115,56,182,97,223,3,141,207,72,71,40,15,30,118,227,92,208,195,144,201,253,109,249,174,2,129,201,211,90,209,225,
116,120,215,188,56,164,170,174,103,6,196,13,77,145,186,16,45,26,59,85,97,236,84,66,171,131,117,126,112,182,231,38,151,202,229,86,179,217,60,40,51,164,211,186,221,166,178,76,100,116,173,86,123,52,23,154,50,194,69,151,206,194,232,118,65,246,98,16,41,173,184,51,252,205,2,52,122,77,155,14,26,197,9,154,198,7,34,2,7,188,177,237,190,225,20,57,121,72,104,8,164,145,219,163,83,43,156,191,113,224,183,111,29,205,119,13,104,180,127,152,151,47,84,68,200,156,100,42,249,99,58,146,104,247,6,119,197,172,131,237,108,118,159,205,96,11,207,133,26,170,12,82,13,177,88,248,233,68,74,115,91,249,165,233,9,202,141,132,23,203,206,99,221,189,64,165,82,137,128,253,9,132,81,53,246,190,192,168,110,140,43,132,13,44,132,120,231,176,146,161,2,130,98,91,87,59,219,20,81,142,59,24,41,53,181,201,148,107,207,193,20,108,0,142,64,48,157,97,170,209,186,152,207,246,193,80,56,103,226,53,221,222,226,199,234,225,253,237,121,205,167,114,34,55,105,200,
179,75,160,64,20,154,174,208,135,134,249,131,49,118,67,190,60,210,224,98,97,171,145,42,131,199,60,89,226,109,105,183,195,35,84,189,66,160,180,1,235,88,167,14,184,37,178,91,84,169,229,193,76,95,212,195,32,124,67,190,98,84,184,29,121,89,38,53,195,52,227,246,55,4,165,222,17,91,126,146,211,105,6,210,66,1,23,136,1,163,114,208,41,241,43,179,89,199,3,29,237,18,227,91,248,24,8,123,201,106,108,153,70,244,182,0,111,65,13,247,117,53,121,175,56,119,105,88,39,1,42,129,167,98,134,29,6,36,15,201,208,218,99,185,168,192,208,72,19,247,119,81,130,77,4,10,230,211,241,49,174,246,30,231,92,30,62,231,131,225,117,92,161,158,27,95,179,247,187,240,147,189,112,64,239,203,207,98,48,83,36,106,231,103,188,16,183,187,103,151,138,16,59,138,140,238,200,22,8,208,100,100,144,68,220,69,142,231,8,122,60,100,25,11,89,210,161,205,109,228,195,34,147,163,188,193,224,171,48,168,178,27,56,18,83,35,223,139,138,241,102,48,136,211,180,210,
228,144,133,40,14,111,231,72,34,12,218,134,146,204,157,7,67,135,4,38,178,4,24,221,134,54,116,26,221,43,182,193,233,72,85,29,155,160,173,54,115,219,75,197,203,21,136,244,241,37,69,221,198,96,48,178,51,142,202,58,139,214,79,236,8,138,8,72,13,18,104,59,192,196,5,14,218,97,219,157,169,149,51,201,105,129,177,115,14,120,190,74,22,89,184,232,196,130,136,226,16,74,96,24,86,160,163,231,58,210,189,243,7,69,61,46,33,90,173,40,43,137,154,32,159,58,14,51,80,38,224,190,179,10,138,5,146,113,178,48,240,206,21,238,44,204,189,104,145,211,100,210,137,107,231,132,76,245,10,53,44,137,24,133,199,139,69,165,0,73,50,246,121,176,105,255,61,68,27,103,230,114,185,14,38,165,52,111,57,115,9,243,148,65,23,241,180,110,90,148,55,145,103,141,124,10,93,82,83,225,136,132,65,17,17,56,116,240,21,126,93,228,48,80,118,47,180,251,251,147,97,11,111,13,65,224,81,125,126,118,208,195,158,219,213,180,115,110,146,64,24,239,247,248,60,59,
77,201,164,21,25,97,62,159,47,220,105,52,207,163,54,91,82,121,137,196,210,162,85,116,176,160,162,48,44,236,192,142,37,75,159,186,112,26,137,11,146,246,184,99,101,194,49,99,166,11,83,109,51,164,160,170,237,115,205,249,137,157,117,21,153,20,85,124,65,78,80,28,100,14,110,221,152,164,36,7,196,99,9,87,28,209,238,67,226,24,87,26,109,150,73,36,54,20,94,119,151,205,160,114,176,43,102,151,208,212,87,130,42,30,143,199,79,144,113,86,245,198,144,91,228,114,157,92,173,221,120,163,8,37,32,100,50,153,135,204,110,246,135,119,89,234,157,239,196,193,75,64,52,20,254,140,148,58,188,61,151,243,52,30,65,83,136,20,168,115,20,38,69,22,112,80,170,254,61,199,253,214,126,170,130,48,80,227,10,150,72,184,176,51,152,134,43,44,166,136,162,165,8,49,129,211,246,48,155,185,146,86,97,30,225,204,102,217,59,60,65,207,75,63,220,162,28,195,44,15,211,1,113,114,121,52,4,74,212,20,142,109,48,247,45,154,91,44,125,147,12,85,220,72,25,198,
51,28,24,109,227,25,145,82,192,109,80,106,85,212,36,34,15,69,187,161,93,159,9,237,131,143,48,172,40,215,195,153,6,8,199,93,41,172,39,14,106,93,98,208,162,202,184,134,32,54,188,8,207,89,32,230,217,33,219,11,106,101,1,204,38,111,43,219,59,51,210,118,112,8,36,208,192,44,224,69,163,178,13,167,137,91,232,116,58,148,214,14,18,137,140,94,23,181,197,98,124,1,195,5,82,101,180,107,38,240,224,107,167,45,30,146,213,69,214,197,28,194,153,139,214,5,23,192,120,28,176,17,157,64,241,59,219,179,218,69,45,235,3,13,143,169,137,133,34,145,3,89,181,161,205,190,10,143,38,22,233,51,92,101,27,143,234,94,143,218,197,190,50,182,205,54,77,184,168,64,178,1,47,160,18,193,77,22,13,44,182,26,174,16,129,88,218,84,191,104,192,76,243,197,168,220,50,15,57,35,3,42,88,13,178,144,183,91,187,69,231,81,37,136,200,177,55,129,204,46,44,235,118,125,39,96,130,78,16,60,170,241,15,252,27,202,66,20,188,111,28,79,27,59,105,45,
82,56,34,187,36,133,86,203,58,27,119,13,205,222,241,238,2,223,133,72,237,190,78,216,120,205,24,87,108,21,230,241,16,162,164,146,221,28,140,46,87,43,93,13,64,212,242,54,164,86,140,10,125,91,221,253,177,208,92,216,119,225,20,109,26,39,18,129,120,136,20,138,203,225,213,168,79,16,130,1,194,211,164,77,6,13,223,189,135,185,1,218,198,163,80,142,237,196,65,90,15,100,206,217,46,152,87,2,42,66,215,131,90,112,76,206,7,157,27,162,27,26,155,173,200,206,236,137,112,111,220,187,6,59,103,168,180,203,14,247,67,49,81,81,132,135,218,39,162,112,151,37,101,246,234,88,72,180,107,99,30,132,95,123,54,190,226,143,253,247,32,78,0,11,246,128,253,118,242,22,117,107,139,46,105,141,175,92,246,230,193,193,168,83,186,219,133,55,48,227,140,174,22,45,137,196,15,152,109,189,114,74,30,222,197,55,132,33,87,155,38,116,76,108,13,161,79,192,213,157,216,78,176,13,38,244,122,151,18,204,228,119,109,141,112,244,108,187,125,8,5,138,54,121,155,163,
222,101,106,15,208,244,184,146,130,146,49,145,202,1,9,92,192,115,32,170,115,153,80,230,64,152,93,16,203,195,196,187,205,64,193,157,35,36,185,136,149,166,168,6,146,81,87,176,143,54,117,61,224,196,156,73,95,236,170,119,42,205,108,196,120,31,207,109,169,165,232,2,80,52,184,172,51,145,219,84,216,83,118,169,38,251,78,167,38,103,85,250,215,143,213,218,9,193,124,43,48,2,229,31,67,158,57,75,112,4,56,183,123,202,218,60,18,68,138,23,36,28,136,188,121,88,187,164,103,145,248,54,156,169,217,61,144,40,249,250,173,20,174,167,89,72,72,179,138,157,127,163,48,21,85,139,121,153,223,45,129,22,58,136,235,206,237,211,55,122,105,254,195,8,163,108,219,182,110,84,185,172,92,141,34,8,164,8,4,176,10,120,17,153,99,14,138,184,126,20,123,174,132,10,188,248,10,234,86,68,119,115,133,29,79,162,171,227,204,52,118,33,80,121,17,47,98,58,132,144,205,236,90,198,80,56,44,36,108,159,28,204,40,115,224,72,236,79,105,202,145,189,171,243,140,151,
74,135,3,153,86,238,5,124,112,198,216,207,66,73,7,141,59,127,194,78,147,167,75,162,196,72,235,75,230,166,216,83,239,185,69,165,61,218,58,198,129,188,178,1,5,204,217,134,234,85,61,178,250,96,131,45,84,106,52,154,83,14,65,123,158,98,1,138,204,4,88,214,102,4,8,253,193,202,206,72,151,207,231,242,228,129,163,207,163,73,236,198,225,221,165,51,61,73,202,198,179,226,185,66,118,113,58,229,69,207,192,144,33,45,157,87,115,42,27,166,211,238,201,184,147,186,58,166,0,7,158,0,195,114,105,108,220,49,82,243,228,195,164,168,11,240,144,65,23,90,182,97,185,29,237,180,208,187,98,241,116,12,27,23,17,242,125,163,69,193,232,70,71,215,210,122,219,44,231,227,128,90,181,162,129,225,34,195,102,38,158,96,85,137,23,205,224,69,48,40,156,81,57,186,195,120,15,130,35,145,12,27,231,41,167,205,113,116,231,190,60,170,33,85,84,90,17,42,195,197,138,152,141,157,242,49,112,220,45,151,54,75,167,192,167,86,42,45,248,2,129,96,134,19,195,76,
46,98,75,175,215,207,99,195,52,213,115,182,189,175,7,138,5,254,76,83,201,80,175,28,84,184,148,163,62,177,249,124,205,6,168,161,246,241,91,157,78,94,99,181,90,59,161,225,3,5,29,237,18,8,4,51,16,221,206,103,186,235,214,116,208,84,92,232,105,24,156,82,166,150,199,59,157,45,148,64,112,4,6,51,192,163,75,230,128,125,220,30,4,188,94,73,31,193,225,251,60,198,43,186,18,113,51,184,0,159,226,133,161,188,129,120,150,155,143,53,87,12,109,53,30,160,147,250,249,219,176,59,130,172,110,25,188,135,213,192,214,166,159,174,44,222,69,34,142,200,149,229,162,104,114,117,24,198,100,50,217,104,240,27,140,170,107,44,3,9,216,158,134,255,64,21,146,107,60,22,76,48,116,194,185,203,144,148,4,194,157,42,103,98,216,34,53,34,40,17,167,198,59,241,77,208,9,115,116,119,119,87,9,86,42,65,246,113,82,158,74,21,171,155,144,14,81,83,153,78,167,254,161,179,229,32,80,40,66,115,134,233,229,198,123,167,103,61,146,108,104,158,14,70,163,212,
200,27,34,248,192,85,219,104,50,129,193,96,231,45,219,142,230,8,206,67,49,4,164,240,60,233,102,88,35,217,172,217,161,151,107,56,0,57,80,50,23,39,68,147,201,116,201,162,13,173,133,4,243,176,9,151,205,164,84,170,76,30,221,188,90,236,176,116,220,146,27,77,163,90,240,140,36,139,101,2,34,0,219,24,147,87,146,241,150,145,200,219,89,228,36,112,167,19,191,168,84,171,131,26,61,234,14,164,37,225,98,67,17,78,217,52,39,72,47,89,28,4,210,164,8,142,69,116,129,140,70,134,136,2,97,158,202,98,153,207,129,243,83,84,107,84,110,166,26,240,73,120,110,80,103,182,237,118,59,37,138,168,134,92,80,212,222,20,228,128,113,232,244,107,103,169,68,98,179,31,236,52,144,215,23,226,152,24,51,26,173,90,175,215,203,228,178,32,214,100,91,23,142,220,130,18,3,18,133,28,107,166,108,243,8,214,35,204,150,26,20,181,48,75,215,18,135,251,108,211,193,133,113,168,212,132,56,232,97,231,204,83,252,62,168,179,1,134,15,110,207,21,115,224,216,113,
120,120,56,217,178,214,92,247,138,157,197,69,136,101,232,49,56,37,113,169,212,247,136,205,45,112,206,52,222,157,223,7,25,128,46,80,18,44,152,3,53,99,226,208,195,9,29,80,210,126,61,166,49,163,67,64,194,174,232,92,84,111,148,232,219,118,248,238,176,84,23,28,30,238,210,48,214,137,88,234,8,0,224,0,219,166,35,107,157,63,8,176,151,23,62,95,45,194,119,103,178,250,242,225,25,243,224,216,8,24,241,106,96,247,115,79,79,103,15,15,116,229,77,54,227,214,70,120,142,57,138,43,220,128,195,96,151,204,90,182,36,38,8,5,59,120,226,81,183,130,0,33,109,64,116,216,229,68,169,46,241,165,161,11,53,71,11,192,42,234,246,184,135,58,196,81,116,109,252,195,116,120,171,26,110,111,57,82,169,173,209,24,221,104,70,107,188,174,39,233,65,163,80,251,251,251,46,23,143,113,0,75,118,90,155,182,162,251,144,42,139,223,72,144,152,217,162,186,3,134,242,254,170,23,252,135,46,249,159,154,235,255,248,193,202,234,243,15,255,195,247,215,207,86,254,212,
104,95,93,250,111,223,119,186,151,254,243,250,111,127,190,254,237,210,127,122,251,238,253,159,186,236,107,47,127,244,209,247,130,158,188,124,241,195,254,247,99,163,253,159,215,223,255,195,247,45,237,55,31,188,253,234,253,155,15,127,208,115,95,250,159,111,191,125,255,221,231,95,190,254,235,201,175,223,126,241,250,103,175,126,188,244,103,238,215,31,252,229,123,64,210,227,235,207,214,150,190,250,238,183,175,63,124,132,127,250,242,145,248,221,210,171,31,125,244,167,249,165,207,223,45,189,255,245,250,227,239,71,173,191,254,229,210,187,183,95,125,240,225,210,47,190,126,7,92,223,61,82,3,115,143,20,127,221,52,255,248,143,242,254,253,15,230,31,169,255,216,158,255,75,148,95,3,48,171,111,126,252,151,83,111,254,221,210,42,0,179,254,203,95,2,230,120,108,238,127,252,23,127,72,0,38,125,253,250,255,2,51,225,137,135,
120,156,133,121,105,211,171,72,114,238,95,121,35,236,113,116,15,158,102,223,78,127,105,86,177,239,32,193,137,227,57,8,16,32,118,1,98,153,59,255,253,214,219,179,184,167,237,8,243,1,80,81,85,153,149,235,147,202,175,31,255,254,239,200,127,34,255,134,252,31,215,23,177,120,164,107,187,124,251,138,128,21,40,88,193,82,56,139,160,8,66,163,40,130,99,52,130,147,4,138,226,24,134,210,24,141,161,8,249,165,232,243,111,95,107,130,96,126,78,49,242,231,70,183,217,159,49,176,22,3,107,113,26,197,25,18,71,9,140,2,55,20,71,49,18,195,9,148,193,88,130,193,113,6,249,146,181,233,60,127,251,170,80,63,127,146,195,63,25,36,41,192,6,69,162,4,65,32,96,221,39,81,2,71,113,4,195,73,148,37,169,47,247,162,172,251,255,141,32,241,127,18,164,1,193,33,47,234,165,232,190,125,109,49,134,249,117,29,249,159,228,191,97,52,9,14,68,48,4,131,226,52,131,129,229,24,130,96,8,141,1,62,112,6,35,191,228,197,156,125,251,250,151,63,255,245,
15,146,245,167,208,255,248,250,241,151,191,160,159,2,251,5,255,248,58,35,63,127,124,253,227,47,63,96,24,251,35,241,33,15,235,171,46,94,210,180,166,75,61,244,223,190,253,245,175,255,241,237,235,140,254,252,241,249,192,126,254,242,187,9,223,191,124,255,155,28,190,252,225,79,31,95,127,249,1,249,9,249,9,35,201,31,241,143,191,75,7,255,248,243,183,175,127,196,127,191,241,199,151,143,111,255,50,125,92,239,109,157,253,247,124,105,31,193,239,122,249,39,39,159,244,17,112,230,191,61,63,190,98,255,99,203,87,49,190,138,185,232,151,249,35,253,232,151,234,35,47,202,87,81,0,66,255,85,45,203,8,88,133,191,195,69,255,253,167,173,110,234,177,200,235,244,251,79,195,171,252,14,127,254,254,14,255,125,187,239,127,158,11,240,156,255,235,159,4,62,254,54,240,13,144,252,104,235,166,248,95,88,249,211,255,251,252,250,203,47,117,151,150,197,23,160,70,244,63,48,132,253,129,67,102,222,226,126,115,41,117,70,39,40,121,149,131,232,194,228,34,207,223,100,205,84,
89,238,140,14,35,240,232,93,56,113,45,8,241,131,143,113,203,50,194,165,126,72,254,34,33,245,198,107,101,224,243,217,59,247,252,16,9,61,79,58,204,145,115,173,237,188,121,82,131,12,238,213,58,185,74,131,20,172,176,99,24,239,114,198,204,200,182,34,56,74,100,225,89,57,113,177,199,21,167,96,32,250,109,23,143,66,247,151,96,8,53,153,206,252,199,3,38,199,212,211,76,247,210,142,212,13,134,97,63,131,90,205,15,175,218,144,201,254,56,217,211,169,110,54,156,173,145,229,134,138,88,239,106,127,95,48,184,39,161,162,31,245,96,219,114,77,154,34,222,27,48,89,230,75,106,124,128,47,42,146,154,182,114,159,49,219,144,107,18,203,251,16,202,237,46,26,135,214,31,38,75,118,145,89,188,189,80,24,110,22,73,21,75,26,162,239,143,71,174,140,159,94,131,195,14,206,178,208,153,112,108,183,92,95,87,42,43,236,75,60,251,175,240,114,177,66,203,224,92,68,19,232,215,106,172,101,82,166,216,242,138,49,75,44,153,139,200,147,12,91,160,119,154,93,141,58,
238,115,156,165,132,82,21,105,101,55,61,162,184,53,163,247,106,116,57,138,117,205,5,190,59,69,6,91,188,162,13,47,115,133,223,174,134,252,220,106,143,16,184,205,1,242,128,217,33,180,21,251,217,144,162,87,110,170,48,191,124,248,141,157,230,105,46,29,126,151,94,145,225,35,111,229,89,97,116,50,35,233,212,131,51,202,69,181,85,83,149,113,8,148,90,92,41,26,187,55,32,159,188,32,39,42,196,176,179,195,231,206,28,142,242,196,166,71,128,80,118,53,56,155,90,248,205,104,96,116,62,247,90,29,95,101,47,138,108,38,156,34,185,60,101,49,217,142,158,51,113,147,182,207,229,113,139,168,123,242,201,19,236,156,12,178,24,254,34,48,133,163,148,155,118,20,138,72,231,111,124,35,28,145,102,41,246,58,161,205,52,10,158,143,113,91,153,216,185,146,236,89,170,232,192,120,78,44,18,206,131,204,222,196,54,249,13,105,70,154,132,201,117,59,168,149,139,101,180,242,58,72,179,145,152,44,181,46,24,208,53,208,209,204,24,194,86,154,138,184,158,143,55,202,106,216,
167,238,20,212,197,76,241,141,27,93,208,104,92,57,191,3,112,206,135,97,137,11,4,59,207,21,191,175,209,248,185,239,50,40,96,95,102,49,2,228,69,195,80,214,91,231,198,36,247,229,58,162,76,161,201,238,129,189,111,192,138,160,183,55,106,215,54,24,82,3,115,31,93,112,119,96,8,92,153,125,179,164,246,69,34,84,164,203,30,90,84,196,72,9,12,56,15,52,98,69,223,145,239,59,10,225,96,57,207,109,121,77,111,67,48,72,134,252,118,109,163,151,194,183,33,156,8,235,184,225,245,241,170,54,162,136,52,134,215,221,248,34,22,212,193,63,217,42,148,175,151,246,50,250,97,107,139,24,12,211,52,77,142,100,99,118,212,120,225,60,14,201,25,160,137,74,109,102,71,224,42,183,47,249,23,111,235,226,157,237,19,44,237,198,41,87,163,44,191,28,21,215,234,247,229,32,154,68,247,227,41,209,144,153,1,142,179,159,64,6,251,97,62,85,236,110,245,191,238,141,70,242,240,136,93,205,123,109,195,77,199,175,100,22,78,203,157,227,129,11,214,196,187,237,16,133,
163,114,187,239,147,35,187,95,208,165,128,111,83,18,70,206,34,55,122,220,75,135,29,180,36,118,215,218,102,25,207,57,21,202,216,90,177,123,112,229,203,91,75,22,158,228,73,119,32,175,105,49,187,237,21,149,91,74,174,247,142,206,33,22,203,110,242,136,82,100,158,135,222,134,169,213,146,116,94,131,27,35,122,176,30,253,138,36,61,10,231,136,202,100,199,129,49,73,164,186,77,75,233,11,198,46,247,196,238,119,230,33,71,190,228,44,220,49,34,240,99,68,163,203,179,218,134,16,191,179,84,248,154,28,56,101,139,245,158,251,3,146,196,203,245,0,209,160,20,177,178,187,172,55,163,245,247,122,178,66,151,241,118,109,6,124,142,207,125,216,39,213,48,77,6,58,131,145,97,207,243,196,250,108,23,40,183,173,71,89,127,93,55,189,187,47,128,101,187,123,216,61,55,222,155,5,44,124,185,26,135,193,241,108,43,102,23,216,175,70,77,82,254,237,234,151,20,45,222,183,95,237,116,232,76,242,230,192,52,200,162,190,38,225,97,177,210,166,170,218,119,181,241,77,119,122,
64,238,107,243,158,168,106,65,143,247,179,226,81,157,198,172,103,156,214,194,105,8,89,175,157,37,81,56,253,65,186,46,77,64,208,113,171,219,248,152,133,138,52,167,72,103,128,230,152,199,5,24,242,162,79,102,196,238,158,228,166,15,246,142,202,94,24,238,102,96,66,133,19,51,185,141,38,145,139,6,1,1,12,58,164,178,46,208,234,45,3,33,206,221,48,211,114,56,32,215,211,69,114,101,127,158,48,100,106,80,131,188,230,109,222,157,87,27,235,88,25,191,103,74,87,47,32,42,38,21,48,182,132,161,50,51,107,196,203,5,46,147,100,152,251,188,182,202,123,62,99,137,54,220,23,117,158,170,123,23,160,199,124,39,55,160,91,90,168,220,5,217,202,98,68,42,95,38,233,232,133,50,149,13,21,47,4,216,17,80,1,226,223,201,248,133,28,30,33,170,185,187,171,120,127,146,112,95,178,238,114,230,192,25,207,5,165,134,192,166,136,93,109,223,79,160,15,232,225,40,189,31,218,66,121,237,220,178,156,87,77,58,0,51,94,118,182,57,37,113,216,133,192,64,164,121,
50,43,99,15,230,101,17,89,6,50,184,50,176,252,10,231,180,202,238,194,57,224,231,61,158,93,69,193,247,114,210,103,29,13,109,38,163,88,156,102,105,22,130,31,32,98,49,253,133,7,236,169,165,118,121,195,144,115,87,138,221,199,84,215,86,123,197,142,169,1,133,160,7,223,67,219,110,51,213,46,36,49,47,5,149,128,102,113,196,155,182,128,44,193,125,53,151,235,48,250,151,97,78,94,249,11,165,104,23,145,57,191,83,25,8,170,1,201,97,156,42,143,50,201,11,150,212,110,106,11,197,153,175,236,195,62,39,146,7,62,17,104,13,118,160,6,37,118,158,121,123,85,21,122,125,69,19,122,223,73,230,164,89,86,118,168,75,16,77,209,37,233,198,119,121,133,167,162,27,135,84,170,56,247,194,55,137,228,25,39,203,46,235,251,237,168,58,81,165,184,74,129,248,120,22,16,107,105,6,110,68,205,145,104,35,66,165,44,4,81,116,56,51,50,239,70,192,230,207,17,209,101,241,222,81,235,249,170,77,95,239,163,245,102,245,46,3,183,201,53,106,77,111,11,178,91,
142,183,184,203,105,173,45,137,21,3,221,180,210,68,186,135,142,223,71,52,134,167,139,246,170,72,6,186,39,51,86,224,105,110,117,164,89,123,135,150,223,235,75,24,171,22,62,165,98,248,100,215,167,87,178,77,66,205,67,204,33,217,149,50,157,215,139,102,108,135,198,152,183,53,225,119,134,9,77,158,7,145,185,228,226,115,39,24,91,252,212,55,12,78,80,51,14,191,173,34,138,82,173,135,40,85,91,209,36,11,195,207,62,178,152,64,217,153,252,172,2,53,203,30,143,9,189,190,17,202,146,98,113,161,203,153,97,160,203,201,151,28,231,150,226,208,52,19,153,10,166,194,119,110,252,228,169,238,97,117,195,237,77,180,176,240,76,236,32,164,173,238,44,188,71,189,249,183,76,121,104,57,45,191,113,154,146,133,189,128,32,91,55,142,232,197,157,16,47,176,5,219,202,198,241,168,136,66,57,44,117,9,103,13,56,179,145,58,87,97,185,218,213,253,78,163,242,224,202,34,34,221,99,120,14,111,183,173,82,224,60,186,221,78,128,17,44,115,120,90,117,186,2,36,161,87,
146,46,122,110,165,76,40,77,77,93,239,93,106,174,212,65,254,23,70,9,9,172,124,7,1,209,14,74,66,181,218,99,71,194,126,138,194,81,52,231,246,169,111,254,249,8,118,230,218,199,179,174,108,64,75,234,182,55,41,211,120,22,207,225,143,199,35,203,243,151,87,109,91,154,8,169,158,160,90,109,182,137,31,46,23,224,19,175,246,36,41,242,241,222,201,219,248,194,44,47,112,64,132,9,111,80,42,35,72,20,160,3,111,50,165,138,89,103,188,37,230,174,6,18,42,219,111,25,98,139,247,213,125,62,47,135,110,217,51,13,206,185,17,177,21,99,37,20,159,134,41,19,179,139,159,234,21,137,145,87,243,50,120,34,38,114,123,139,37,94,22,1,54,82,118,58,4,44,54,235,57,43,241,40,112,182,194,209,238,3,168,211,213,149,125,224,103,24,8,162,19,87,210,233,53,154,86,79,134,125,83,45,226,214,206,27,165,216,162,245,201,98,188,54,252,243,136,12,253,157,224,158,233,19,166,162,105,91,252,214,158,145,155,77,206,77,210,222,240,121,28,36,72,124,176,8,
220,81,61,2,55,72,222,56,3,47,164,141,197,185,52,234,126,231,56,142,161,66,224,248,227,13,245,19,117,24,110,17,154,175,137,12,51,254,99,193,94,17,77,196,225,205,84,206,148,224,143,38,129,106,215,134,104,170,116,179,194,117,30,200,78,68,225,67,172,117,111,131,46,169,100,223,16,53,0,172,189,159,137,234,95,94,114,119,142,61,48,19,128,177,150,234,214,195,70,167,166,218,103,142,73,96,90,99,187,209,156,6,185,155,68,203,124,231,12,18,6,113,103,61,233,2,95,128,161,36,83,241,226,93,29,32,135,105,58,103,218,36,224,218,101,52,135,61,90,114,51,23,149,231,137,144,208,166,107,144,170,131,86,242,145,209,23,240,125,142,31,3,0,110,135,27,240,132,88,122,239,65,89,165,226,182,5,206,27,166,169,148,126,234,111,74,231,151,112,225,47,98,217,174,241,106,28,48,48,135,3,242,42,133,242,29,233,29,88,188,218,141,69,213,118,235,36,186,30,136,246,94,151,107,86,218,204,233,32,145,13,148,41,28,76,77,222,93,126,83,70,189,15,163,92,199,
192,204,233,21,201,125,243,109,80,44,56,40,1,242,196,182,177,87,33,33,75,153,76,56,201,226,121,101,117,159,144,60,236,220,210,157,222,88,214,105,184,226,146,57,229,165,208,213,199,25,149,166,5,92,83,173,249,81,148,131,1,6,216,157,153,135,171,162,244,163,234,92,86,7,10,68,60,7,6,118,248,172,8,172,226,90,231,59,192,37,72,227,216,87,108,189,209,172,221,90,3,110,148,187,184,88,174,179,95,39,158,117,20,220,83,234,241,118,169,36,144,63,29,165,30,184,211,207,252,178,128,66,63,170,12,154,183,175,111,191,203,136,77,101,15,117,129,46,252,11,226,55,198,212,26,230,161,115,188,10,105,231,170,97,243,237,229,239,121,221,150,132,116,6,8,107,5,137,120,171,213,206,99,96,71,81,32,225,234,69,124,233,132,27,154,41,151,45,6,166,179,13,4,3,213,125,118,164,254,121,198,15,90,50,195,4,248,149,80,25,251,40,216,110,83,213,94,119,34,40,233,171,103,11,128,132,218,10,181,45,8,220,168,45,186,106,122,10,7,34,248,233,162,147,42,242,
27,93,166,11,9,46,244,168,16,144,247,204,13,199,241,61,168,158,187,135,76,90,234,115,158,236,61,236,81,43,203,135,17,77,136,43,237,102,59,77,1,39,228,135,240,104,161,154,207,29,231,221,52,189,208,227,94,48,212,124,43,83,171,209,145,71,225,39,114,58,40,130,123,142,18,124,237,208,11,10,194,7,181,211,164,229,56,227,165,15,181,217,31,135,195,216,184,105,112,233,27,190,77,245,101,4,217,128,89,143,243,68,134,23,113,227,68,44,82,186,16,31,12,135,17,216,140,15,29,67,71,212,235,125,14,77,71,48,159,220,49,245,53,4,195,178,54,237,67,25,106,21,200,143,250,115,11,180,193,14,196,104,115,47,4,115,7,85,255,75,58,201,13,120,68,176,111,193,248,34,74,129,189,193,117,69,184,49,200,197,226,221,191,221,122,105,156,208,116,73,23,127,104,238,0,130,147,106,132,122,150,238,182,147,220,245,32,48,54,136,174,168,220,164,44,216,165,135,66,59,136,184,242,74,58,73,67,106,151,93,99,130,54,43,27,211,59,134,122,128,28,237,184,215,129,240,
36,253,176,176,174,225,42,153,172,155,226,11,93,60,229,114,117,146,167,136,191,80,186,243,138,78,189,219,215,112,146,41,67,198,40,89,203,134,212,135,108,233,150,84,130,116,96,110,109,24,22,168,32,2,219,146,103,90,63,160,55,64,96,12,36,85,172,14,244,114,158,98,158,240,179,6,178,224,206,185,69,96,156,234,44,93,141,106,184,18,94,83,171,181,218,244,216,9,114,128,200,69,20,153,213,73,226,147,195,98,199,2,147,56,35,106,2,32,147,67,140,111,155,105,37,241,102,46,135,144,237,218,100,131,132,218,141,131,213,238,105,194,126,233,68,48,181,93,35,15,90,47,111,181,54,159,196,227,158,46,215,183,28,29,207,162,114,231,155,46,228,158,121,170,18,202,237,137,64,35,147,46,60,57,145,246,86,60,26,244,91,119,77,153,138,95,44,204,125,15,233,165,82,219,107,224,208,2,207,30,124,165,74,38,72,208,18,69,9,120,84,105,118,32,29,23,173,236,3,156,94,144,136,158,19,65,205,67,201,76,60,166,105,75,44,101,227,121,14,179,231,221,247,53,21,37,
194,75,229,79,167,164,117,62,181,8,172,87,30,9,87,146,109,238,46,189,16,192,155,215,164,235,245,106,198,241,116,189,242,124,176,49,60,251,80,78,41,162,130,71,109,58,57,238,97,213,0,59,106,123,198,177,189,165,208,3,132,88,41,58,136,28,62,9,38,47,243,245,142,35,206,83,126,181,155,30,84,62,58,232,247,209,18,7,219,112,5,73,155,110,64,255,67,24,105,43,230,9,1,40,94,210,155,246,86,23,141,135,75,80,132,136,32,102,44,166,141,171,35,255,54,251,96,246,123,78,129,187,238,154,169,92,86,170,30,130,154,0,33,5,110,193,109,175,210,204,165,125,94,25,141,241,47,12,141,83,214,69,124,72,167,90,111,99,78,27,71,25,43,242,158,37,254,163,142,59,45,92,63,83,185,28,62,136,212,14,46,166,225,57,199,211,35,96,253,14,228,165,56,186,166,145,132,123,134,254,149,89,5,81,220,64,110,235,3,128,255,81,70,63,97,254,78,195,172,92,66,102,154,250,221,216,168,26,217,8,236,113,245,43,185,206,58,108,18,214,76,133,244,236,253,220,
136,155,187,34,228,202,20,147,160,159,114,62,19,234,43,10,74,53,147,167,2,6,150,169,6,178,205,164,237,123,174,158,39,192,26,206,251,253,40,10,72,29,237,100,166,178,250,58,183,113,104,19,164,68,168,74,172,179,111,99,107,136,35,210,246,210,118,23,193,36,168,84,71,253,237,178,134,165,121,128,170,140,254,132,49,117,26,16,18,226,149,119,236,19,205,182,7,125,51,233,241,1,57,89,221,242,199,77,118,65,237,66,38,146,216,116,207,5,55,170,107,224,121,132,105,93,250,154,124,164,156,92,216,18,117,85,252,81,106,98,19,196,25,167,16,142,93,192,183,118,36,189,208,245,189,86,3,245,69,83,239,94,89,62,243,225,169,220,111,47,140,150,122,212,219,39,238,178,49,186,208,168,247,37,234,240,152,201,108,88,53,43,226,9,240,123,227,111,42,189,6,56,67,139,99,87,94,21,15,89,110,161,28,33,142,3,48,227,67,132,185,49,241,36,73,169,226,221,31,91,169,170,171,139,46,182,103,253,106,49,90,211,100,222,4,49,223,63,45,11,186,134,117,241,184,114,
202,188,89,28,243,48,54,207,140,101,175,140,39,27,38,147,204,227,239,247,136,96,174,198,58,186,153,89,228,19,146,230,70,173,193,152,9,240,239,90,192,143,53,226,46,77,128,184,87,77,210,168,205,62,154,225,224,144,189,225,47,79,111,144,73,42,12,207,101,106,55,27,212,65,13,168,169,202,80,226,109,97,102,68,161,237,94,54,42,236,217,42,171,195,212,149,221,42,13,78,41,146,148,244,58,166,102,106,116,213,201,92,96,231,163,122,217,27,125,131,107,77,194,36,75,247,66,82,122,77,72,108,74,130,165,56,40,181,220,82,236,8,183,30,242,150,79,204,28,201,84,108,234,125,185,222,156,222,3,53,138,119,63,75,253,160,15,57,148,30,76,209,205,253,197,235,19,58,31,17,38,117,169,195,166,62,235,174,75,52,90,104,66,60,159,205,141,86,84,149,80,81,165,106,6,130,107,8,21,163,188,60,175,99,120,227,201,169,181,252,114,29,94,89,44,246,230,14,83,165,15,75,82,77,9,8,67,164,48,68,80,198,65,12,34,12,74,150,213,203,0,112,177,186,250,113,
171,205,215,155,139,83,128,110,111,254,177,73,186,57,214,92,133,73,195,163,18,34,34,205,59,128,15,7,252,106,148,225,83,196,92,157,58,226,219,238,123,187,135,70,199,194,19,187,155,250,10,112,34,15,161,93,117,212,144,148,233,59,185,34,238,206,168,112,40,172,121,144,219,24,2,102,200,79,196,95,90,180,169,35,153,40,80,159,145,85,142,41,196,32,105,142,202,211,81,218,38,13,52,137,231,235,85,237,162,199,83,67,81,146,126,102,0,35,76,208,105,107,37,253,108,202,41,175,92,81,169,86,220,128,65,89,43,134,252,40,80,251,124,151,117,229,105,129,88,116,254,141,191,228,16,144,140,182,131,213,127,64,162,247,184,161,80,192,206,6,162,38,9,111,247,143,245,102,90,73,68,141,36,108,43,160,172,122,235,5,37,251,167,107,225,242,210,62,76,158,108,222,210,120,120,125,187,95,141,25,108,230,109,167,214,102,235,122,174,93,94,1,103,122,85,150,185,85,117,232,27,211,32,65,41,252,124,215,212,181,31,241,133,44,138,139,106,136,42,229,140,237,129,188,171,126,
186,14,172,33,168,246,175,53,7,168,241,194,27,8,132,109,152,145,149,114,191,3,254,206,58,96,90,143,66,34,7,212,83,0,165,218,121,18,187,8,47,216,23,58,179,237,70,51,246,235,181,242,7,59,196,46,102,89,216,52,109,227,75,140,105,245,241,116,91,255,170,213,195,100,63,7,248,176,199,243,148,154,43,131,91,103,30,176,108,23,237,159,255,7,144,51,146,166,6,99,70,67,68,134,106,84,81,205,182,207,162,118,92,209,249,46,242,154,218,177,123,118,191,192,111,26,222,3,184,8,5,214,56,26,77,112,223,61,78,163,239,3,73,224,55,70,167,232,125,33,99,219,152,166,205,144,189,189,227,134,167,74,215,98,73,88,196,77,123,97,74,176,96,129,84,169,147,227,171,234,220,43,235,26,222,140,174,194,174,132,165,139,71,240,88,19,197,186,245,52,73,122,205,153,44,129,41,227,193,35,69,69,57,116,155,120,205,74,44,153,143,216,39,179,53,190,130,184,18,41,173,211,46,149,99,250,137,221,230,64,101,231,124,215,218,206,83,186,137,211,112,229,46,205,232,11,
97,118,143,166,204,96,102,47,247,101,242,95,35,231,222,23,138,233,50,222,163,60,57,138,248,40,204,34,87,240,170,145,184,119,228,154,92,130,6,84,181,116,68,237,113,124,77,133,74,185,120,164,2,192,1,243,198,93,6,192,13,205,109,222,249,168,14,114,112,30,13,122,234,239,140,45,224,4,84,117,149,26,144,162,198,65,224,189,31,46,124,121,191,110,26,180,175,92,81,213,147,233,135,14,125,243,188,222,195,115,140,221,94,217,220,63,81,58,159,109,144,96,6,207,17,55,6,215,118,252,13,241,81,247,76,150,233,125,140,178,23,78,6,103,180,143,29,202,44,157,151,235,61,142,156,1,74,122,237,96,10,71,174,251,200,158,19,235,17,210,231,84,41,56,91,76,92,46,62,97,80,36,119,9,70,229,134,124,202,221,16,94,164,37,180,158,156,153,165,154,116,128,20,4,112,197,56,96,42,83,3,5,120,102,23,88,92,101,156,4,244,88,3,181,201,245,115,45,141,152,86,115,10,81,0,180,168,222,252,150,73,161,96,39,142,167,134,250,68,136,2,63,82,183,22,122,
212,68,165,230,202,13,231,57,243,169,5,36,193,92,60,160,141,245,53,81,171,243,28,80,107,233,3,22,190,189,153,48,196,229,157,113,17,182,213,230,170,17,25,0,228,4,14,121,17,105,66,85,130,23,98,194,86,198,197,231,127,193,35,128,132,159,152,75,60,117,174,116,77,37,95,223,215,215,85,17,171,87,138,45,239,1,78,195,0,125,121,44,12,16,34,201,144,77,65,172,70,205,74,89,255,190,194,197,91,105,218,7,16,70,229,14,175,42,81,47,65,41,46,8,245,112,30,217,29,240,47,243,36,222,92,195,119,94,129,218,179,213,234,251,68,95,244,219,133,185,180,44,164,77,234,25,99,109,121,192,69,93,140,110,19,89,37,8,197,193,160,229,111,156,100,213,13,207,142,172,29,145,84,147,177,87,254,92,102,44,181,238,203,103,158,104,217,89,54,252,102,100,30,55,236,102,180,104,234,221,45,111,200,84,125,208,125,190,34,210,203,165,235,115,98,202,220,81,131,28,41,168,64,153,89,106,174,4,28,165,14,11,57,115,123,176,232,168,114,173,164,216,116,161,26,89,
145,31,153,221,138,193,6,63,222,56,117,176,248,5,209,226,171,246,36,10,119,89,194,181,171,178,25,68,90,98,210,205,167,10,114,170,148,44,110,114,203,10,150,35,194,16,147,253,49,212,185,198,132,1,166,233,137,107,245,227,191,180,108,254,214,204,250,71,15,76,254,1,197,152,31,47,191,222,127,65,255,209,15,195,62,156,95,27,82,31,102,209,221,139,215,135,81,207,203,63,154,97,248,207,127,248,211,175,27,17,63,127,249,125,155,234,179,31,230,23,139,248,107,231,233,251,15,117,191,124,255,241,119,173,177,143,119,253,90,214,180,253,246,175,131,67,157,127,251,243,215,63,126,252,115,245,183,31,126,251,29,236,244,249,249,23,252,163,95,187,111,63,126,146,39,127,254,156,60,127,124,253,195,159,254,49,254,145,206,31,75,85,124,190,127,114,61,60,62,230,186,255,225,199,143,108,152,193,125,254,156,13,198,62,103,252,107,111,235,167,191,239,199,253,110,252,115,246,223,187,104,191,165,82,1,50,216,247,63,254,118,232,59,244,129,1,50,197,227,1,196,241,217,131,251,233,
55,125,67,32,210,111,223,254,63,10,77,176,164,

View file

@ -0,0 +1,24 @@
topic "class Rational1Equation : public ExplicitEquation";
[ $$0,0#00000000000000000000000000000000:Default]
[i448;a25;kKO9; $$1,0#37138531426314131252341829483380:structitem]
[l288;2 $$2,0#27521748481378242620020725143825:desc]
[0 $$3,0#96390100711032703541132217272105:end]
[i448;a25;kKO9;2 $$4,0#37138531426314131252341829483370:codeitem]
[H6;0 $$5,0#05600065144404261032431302351956:begin]
[{_}
[ {{10000@3 [s0;%% [*@(229)4 Rational1Equation]]}}&]
[s3; &]
[s1;:Rational1Equation`:`:class: [@(0.0.255) class]_[* Rational1Equation]_:_[@(0.0.255) publ
ic]_[*@3 ExplicitEquation]&]
[s2;%% &]
[s0; [2 Rational1Equation represents a rational equation as y `= a/(x
`+ b) `+ c .]&]
[s0;2 &]
[s3; &]
[ {{10000F(128)G(128)@1 [s0;%% [* Constructor Detail]]}}&]
[s0; &]
[s4;:SinEquation`:`:SinEquation`(double`,double`,double`,double`): [* Rational1Equation
]([@(0.0.255) double]_[*@3 a], [@(0.0.255) double]_[*@3 b], [@(0.0.255) double]_[*@3 c])&]
[s2;%% Initializes equation coefficients [%-*@3 a], [%-*@3 b] and [%-*@3 c].&]
[s3;%% &]
[s3;%% ]]

View file

@ -0,0 +1,5 @@
TITLE("class Rational1Equation : public ExplicitEquation")
COMPRESSED
120,156,133,146,219,142,211,48,16,134,95,101,36,182,40,89,74,177,199,118,226,56,66,170,196,46,7,113,129,4,151,150,213,186,169,139,44,66,82,154,84,90,168,246,221,177,155,158,196,238,178,185,24,143,51,255,28,252,217,26,174,174,200,152,188,32,207,124,234,198,173,236,182,238,141,246,156,203,210,162,40,127,124,254,82,148,33,157,134,116,150,83,38,5,163,28,179,96,40,163,40,144,113,42,177,224,146,49,73,84,215,111,182,85,239,123,247,211,232,26,165,44,49,100,98,200,196,92,32,205,185,228,146,178,92,98,40,128,132,32,201,81,80,206,36,10,181,116,93,101,52,9,114,22,228,69,198,10,66,9,201,41,37,12,115,194,4,167,148,97,40,129,57,82,34,148,107,150,255,206,24,91,241,103,135,204,137,170,218,165,27,70,252,152,149,177,163,136,100,68,22,206,159,133,113,56,39,33,53,246,229,140,50,130,76,208,66,100,106,225,190,251,198,232,221,236,30,52,236,118,52,226,154,50,208,29,41,71,35,208,215,211,4,177,72,57,124,181,189,111,27,91,211,219,95,219,
189,107,204,253,253,75,163,59,86,66,92,104,169,30,72,230,106,174,170,218,118,157,2,61,77,200,132,76,80,136,20,246,191,204,76,95,63,82,116,166,102,151,210,245,118,81,251,42,106,195,76,183,119,235,176,241,253,73,28,251,98,28,51,58,164,4,141,15,43,194,198,173,55,174,115,77,223,129,133,205,33,12,238,24,182,29,252,134,249,91,176,111,146,59,152,191,130,69,26,109,5,19,51,20,69,56,31,242,200,231,125,66,81,166,31,246,118,74,207,172,224,93,219,12,79,165,221,192,141,235,173,175,143,148,200,64,137,151,234,155,111,46,249,92,110,147,101,27,206,235,230,227,39,214,84,193,163,208,146,75,100,131,246,128,204,154,49,60,25,92,252,47,88,153,244,132,247,83,227,123,111,107,255,199,117,103,112,85,235,86,171,112,29,123,178,122,244,250,212,110,112,23,6,108,179,60,238,42,51,25,48,30,46,107,239,24,243,23,246,31,16,30,

View file

@ -0,0 +1,26 @@
topic "class SinEquation : public ExplicitEquation";
[ $$0,0#00000000000000000000000000000000:Default]
[i448;a25;kKO9; $$1,0#37138531426314131252341829483380:structitem]
[l288;2 $$2,0#27521748481378242620020725143825:desc]
[0 $$3,0#96390100711032703541132217272105:end]
[H6;0 $$4,0#05600065144404261032431302351956:begin]
[i448;a25;kKO9;2 $$5,0#37138531426314131252341829483370:codeitem]
[{_}%EN-US
[ {{10000@3 [s0; [*@(229)4 SinEquation]]}}&]
[s3;%- &]
[s1;:SinEquation`:`:class:%- [@(0.0.255) class]_[* SinEquation]_:_[@(0.0.255) public]_[*@3 Exp
licitEquation]&]
[s2; &]
[s0; [2 SinEquation represents a sine equation as y `= offset `+ A`*sin(w`*x
`+ phi) ]&]
[s0;2 &]
[s3; &]
[ {{10000F(128)G(128)@1 [s0; [* Constructor Detail]]}}&]
[s0; &]
[s5;:SinEquation`:`:SinEquation`(double`,double`,double`,double`): [* SinEquation]([@(0.0.255) d
ouble]_[*@3 offset], [@(0.0.255) double]_[*@3 A], [@(0.0.255) double]_[*@3 w],
[@(0.0.255) double]_[*@3 phi])&]
[s2; Initializes equation coefficients [*@3 offset, ] [*@3 A, ] [*@3 w]
and [*@3 phi].&]
[s3; &]
[s3; ]]

View file

@ -0,0 +1,5 @@
TITLE("class SinEquation : public ExplicitEquation")
COMPRESSED
120,156,133,82,93,111,211,48,20,253,43,87,98,67,73,233,42,251,218,206,135,35,164,86,108,12,132,4,15,19,79,145,213,100,169,11,22,33,41,117,170,14,170,254,119,236,102,237,194,208,182,60,216,190,185,231,28,223,115,146,28,206,206,200,152,188,34,47,60,242,82,47,203,77,221,169,220,112,158,100,37,138,236,199,167,47,105,230,232,212,209,89,76,89,34,24,229,24,185,133,50,138,2,25,167,9,166,60,97,44,33,210,118,235,77,213,153,78,255,84,121,141,73,146,161,99,162,99,98,44,144,198,60,225,9,101,113,130,78,0,9,65,18,163,160,156,37,40,228,66,219,74,229,196,193,153,131,167,17,75,9,37,36,166,148,48,140,9,19,156,82,134,78,2,99,164,68,72,221,44,84,254,33,202,60,129,123,99,34,114,227,71,78,141,115,226,212,61,141,51,202,8,50,65,83,17,201,91,253,205,52,143,109,249,233,196,139,190,98,34,171,118,161,123,87,187,249,254,252,234,243,197,215,27,200,97,183,163,62,180,41,131,220,146,12,242,209,52,64,76,67,14,55,166,185,250,
181,41,59,211,54,74,237,247,175,85,110,89,118,126,1,254,64,51,57,104,23,178,144,85,93,90,43,93,59,159,6,100,66,38,40,68,8,135,151,106,158,143,254,17,155,203,249,16,180,218,220,214,166,242,40,55,195,213,221,202,21,166,59,129,253,109,152,29,46,245,211,225,80,9,214,122,181,214,86,55,157,133,18,172,105,52,232,99,171,180,240,27,138,183,208,46,151,86,119,80,188,129,89,49,114,144,96,91,140,238,124,185,250,110,66,80,189,46,66,239,206,111,199,64,222,7,20,147,240,250,176,78,233,49,28,120,215,54,253,255,209,174,225,82,119,165,169,143,225,144,126,74,241,95,52,195,50,88,180,206,174,46,198,79,236,161,132,71,105,5,195,172,122,212,125,86,189,53,53,134,39,17,179,231,154,219,231,154,46,29,21,222,103,255,177,49,157,41,107,243,71,219,135,124,171,86,47,151,238,75,29,194,31,140,51,6,213,151,179,211,105,171,160,108,22,112,210,157,60,132,237,55,165,254,2,161,98,24,26,

View file

@ -0,0 +1,13 @@
topic "class UserEquation : public ExplicitEquation";
[ $$0,0#00000000000000000000000000000000:Default]
[i448;a25;kKO9; $$1,0#37138531426314131252341829483380:structitem]
[l288;2 $$2,0#27521748481378242620020725143825:desc]
[0 $$3,0#96390100711032703541132217272105:end]
[{_}
[ {{10000@3 [s0;%% [*@(229)4 UserEquation]]}}&]
[s3; &]
[s1;:UserEquation`:`:class: [@(0.0.255) class]_[* UserEquation]_:_[@(0.0.255) public]_[*@3 Exp
licitEquation]&]
[s2;%% &]
[s3; &]
[s0;%% ]]

View file

@ -0,0 +1,5 @@
TITLE("class UserEquation : public ExplicitEquation")
COMPRESSED
120,156,133,142,187,78,195,48,20,134,95,197,18,45,106,43,84,157,139,93,59,246,146,129,78,12,76,76,150,149,134,52,72,17,161,148,218,145,144,170,188,59,78,7,20,38,206,224,35,219,223,127,241,98,177,128,7,184,131,127,198,62,182,111,245,208,167,224,59,41,141,171,73,185,247,167,231,194,101,57,102,57,107,100,163,24,37,237,242,129,140,164,136,37,26,42,164,97,54,96,99,186,12,77,234,82,251,17,124,79,198,56,202,74,202,74,210,138,80,75,35,13,178,54,148,13,8,128,64,147,66,201,134,148,61,182,177,9,30,50,206,25,47,118,92,0,2,104,68,96,210,192,74,34,50,101,11,210,132,160,108,123,58,6,127,173,70,225,197,245,138,83,245,146,133,143,224,150,75,225,55,229,138,168,88,75,241,18,219,203,254,107,168,83,247,121,10,97,28,239,131,143,236,196,180,208,217,249,239,193,30,108,211,215,49,90,225,203,21,108,97,75,74,173,197,237,41,84,126,243,215,170,178,213,156,58,15,175,125,215,76,88,46,177,255,62,231,75,151,126,225,41,141,166,94,179,
244,91,207,16,126,0,15,33,108,213,

View file

@ -6,10 +6,18 @@ TOPIC("DataSource$en-us")
#include "DataSource$en-us.tppi"
END_TOPIC
TOPIC("EvalExpr$en-us")
#include "EvalExpr$en-us.tppi"
END_TOPIC
TOPIC("ExplicitEquation$en-us")
#include "ExplicitEquation$en-us.tppi"
END_TOPIC
TOPIC("ExponentialEquation$en-us")
#include "ExponentialEquation$en-us.tppi"
END_TOPIC
TOPIC("FourierEquation$en-us")
#include "FourierEquation$en-us.tppi"
END_TOPIC
@ -22,10 +30,22 @@ TOPIC("PolynomialEquation$en-us")
#include "PolynomialEquation$en-us.tppi"
END_TOPIC
TOPIC("Rational1Equation$en-us")
#include "Rational1Equation$en-us.tppi"
END_TOPIC
TOPIC("ScatterDraw$en-us")
#include "ScatterDraw$en-us.tppi"
END_TOPIC
TOPIC("SinEquation$en-us")
#include "SinEquation$en-us.tppi"
END_TOPIC
TOPIC("UserEquation$en-us")
#include "UserEquation$en-us.tppi"
END_TOPIC
TOPIC("VectorY$en-us")
#include "VectorY$en-us.tppi"
END_TOPIC