From 80f9acfe4d6626b6d8ae8acf21187c752485967c Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 4 Feb 2020 10:01:23 -0500 Subject: [PATCH 001/233] Network building enhancements --- ReleaseNotes2_3.md | 11 ++++++++ include/epanet2.bas | 5 +++- include/epanet2.def | 6 ++-- include/epanet2.h | 6 +++- include/epanet2.pas | 25 +++++++++++------ include/epanet2.vb | 5 +++- include/epanet2_2.h | 24 ++++++++++++++-- include/epanet2_enums.h | 5 ++-- src/epanet.c | 62 ++++++++++++++++++++++++++++++++++++++++- src/epanet2.c | 12 +++++++- src/errors.dat | 2 +- src/funcs.h | 4 ++- src/hydraul.c | 11 ++------ src/input2.c | 59 +-------------------------------------- src/project.c | 34 ++++++++++++++++++++-- src/quality.c | 10 ++++++- 16 files changed, 188 insertions(+), 93 deletions(-) create mode 100644 ReleaseNotes2_3.md diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md new file mode 100644 index 0000000..1f922fc --- /dev/null +++ b/ReleaseNotes2_3.md @@ -0,0 +1,11 @@ +> +## Release Notes for EPANET 2.3 + +This document describes the changes and updates that have been made in version 2.3 of EPANET. + + - The check for at least two nodes, one tank/reservoir and no unconnected junction nodes was moved from `EN_open` to `EN_openH` and `EN_openQ` so that partial network data files to be opened by the toolkit. + - A `EN_setcurvetype` function was added to allow API clients to set a curve's type (e.g., `EN_PUMP_CURVE,` `EN_VOLUME_CURVE,` etc.). + - A `EN_setvertex` function was added to allow API clients to change the coordinates of a link's vertex. + - The index of a General Purpose Valve's (GPV's) head loss curve was added to the list of editable Link Properties using the symbolic constant name `EN_GPV_CURVE`. + - The `EN_getlinkvalue` and `EN_setlinkvalue` functions were updated to get and set the value of `EN_GPV_CURVE`. + diff --git a/include/epanet2.bas b/include/epanet2.bas index 4b9df87..7b40f36 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -5,7 +5,7 @@ Attribute VB_Name = "Module1" 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) -'Last updated on 11/04/2019 +'Last updated on 02/01/2020 ' These are codes used by the DLL functions Public Const EN_ELEVATION = 0 ' Node parameters @@ -62,6 +62,7 @@ Public Const EN_PUMP_HCURVE = 19 Public Const EN_PUMP_ECURVE = 20 Public Const EN_PUMP_ECOST = 21 Public Const EN_PUMP_EPAT = 22 +Public Const EN_GPV_CURVE = 23 Public Const EN_DURATION = 0 ' Time parameters Public Const EN_HYDSTEP = 1 @@ -340,6 +341,7 @@ Public Const EN_MISSING As Double = -1.0E10 Declare Function ENsetpipedata Lib "epanet2.dll" (ByVal index As Long, ByVal length As Single, ByVal diam As Single, ByVal rough As Single, ByVal mloss As Single) As Long Declare Function ENgetvertexcount Lib "epanet2.dll" (ByVal index As Long, count As Long) As Long Declare Function ENgetvertex Lib "epanet2.dll" (ByVal index As Long, ByVal vertex As Long, x As Double, y As Double) As Long + Declare Function ENsetvertex Lib "epanet2.dll" (ByVal index As Long, ByVal vertex As Long, ByVal x As Double, ByVal y As Double) As Long Declare Function ENsetvertices Lib "epanet2.dll" (ByVal index As Long, xCoords As Any, yCoords As Any, ByVal count As Long) As Long 'Pump Functions @@ -367,6 +369,7 @@ Public Const EN_MISSING As Double = -1.0E10 Declare Function ENsetcurveid Lib "epanet2.dll" (ByVal index As Long, ByVal newid As String) As Long Declare Function ENgetcurvelen Lib "epanet2.dll" (ByVal index As Long, len_ As Long) As Long Declare Function ENgetcurvetype Lib "epanet2.dll" (ByVal index As Long, type_ As Long) As Long + Declare Function ENsetcurvetype Lib "epanet2.dll" (ByVal index As Long, ByVal type_ As Long) As Long Declare Function ENgetcurvevalue Lib "epanet2.dll" (ByVal curveIndex As Long, ByVal pointIndex As Long, x As Single, y As Single) As Long Declare Function ENsetcurvevalue Lib "epanet2.dll" (ByVal curveIndex As Long, ByVal pointIndex As Long, ByVal x As Single, ByVal y As Single) As Long Declare Function ENgetcurve Lib "epanet2.dll" (ByVal index As Long, ByVal id As String, nPoints As Long, xValues As Any, yValues As Any) As Long diff --git a/include/epanet2.def b/include/epanet2.def index 9bf41b4..66b87ed 100644 --- a/include/epanet2.def +++ b/include/epanet2.def @@ -91,7 +91,8 @@ EXPORTS ENsetcontrol = _ENsetcontrol@24 ENsetcoord = _ENsetcoord@20 ENsetcurve = _ENsetcurve@16 - ENsetcurveid = _ENsetcurveid@8 + ENsetcurveid = _ENsetcurveid@8 + ENsetcurvetype = _ENsetcurvetype@8 ENsetcurvevalue = _ENsetcurvevalue@16 ENsetdemandmodel = _ENsetdemandmodel@16 ENsetdemandname = _ENsetdemandname@12 @@ -122,7 +123,8 @@ EXPORTS ENsettankdata = _ENsettankdata@32 ENsetthenaction = _ENsetthenaction@20 ENsettimeparam = _ENsettimeparam@8 - ENsettitle = _ENsettitle@12 + ENsettitle = _ENsettitle@12 + ENsetvertex = _ENsetvertex@24 ENsetvertices = _ENsetvertices@16 ENsolveH = _ENsolveH@0 ENsolveQ = _ENsolveQ@0 diff --git a/include/epanet2.h b/include/epanet2.h index 19c9c67..3779d66 100644 --- a/include/epanet2.h +++ b/include/epanet2.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 10/29/2019 + Last Updated: 02/01/2020 ****************************************************************************** */ @@ -290,6 +290,8 @@ extern "C" { int DLLEXPORT ENgetvertex(int index, int vertex, double *x, double *y); + int DLLEXPORT ENsetvertex(int index, int vertex, double x, double y); + int DLLEXPORT ENsetvertices(int index, double *x, double *y, int count); /******************************************************************** @@ -349,6 +351,8 @@ extern "C" { int DLLEXPORT ENgetcurvelen(int index, int *len); int DLLEXPORT ENgetcurvetype(int index, int *type); + + int DLLEXPORT ENsetcurvetype(int index, int type); int DLLEXPORT ENgetcurvevalue(int curveIndex, int pointIndex, EN_API_FLOAT_TYPE *x, EN_API_FLOAT_TYPE *y); diff --git a/include/epanet2.pas b/include/epanet2.pas index a532134..6eaf7bb 100644 --- a/include/epanet2.pas +++ b/include/epanet2.pas @@ -3,7 +3,7 @@ unit epanet2; { Declarations of imported procedures from the EPANET PROGRAMMERs TOOLKIT } { (EPANET2.DLL) } -{Last updated on 11/12/19} +{Last updated on 02/01/2020} interface @@ -67,6 +67,7 @@ const EN_PUMP_ECURVE = 20; EN_PUMP_ECOST = 21; EN_PUMP_EPAT = 22; + EN_GPV_CURVE = 23; EN_DURATION = 0; { Time parameters } EN_HYDSTEP = 1; @@ -253,8 +254,12 @@ const EN_R_IS_OPEN = 1; { Rule-based control link status } EN_R_IS_CLOSED = 2; EN_R_IS_ACTIVE = 3; - + +{$ifdef WINDOWS} EpanetLib = 'epanet2.dll'; +{$else} + EpanetLib = 'libepanet2.so'; +{$endif} {Project Functions} function ENepanet(F1: PAnsiChar; F2: PAnsiChar; F3: PAnsiChar; F4: Pointer): Integer; stdcall; external EpanetLib; @@ -273,8 +278,8 @@ const function ENsaveH: Integer; stdcall; external EpanetLib; function ENopenH: Integer; stdcall; external EpanetLib; function ENinitH(SaveFlag: Integer): Integer; stdcall; external EpanetLib; - function ENrunH(var T: LongInt): Integer; stdcall; external EpanetLib; - function ENnextH(var Tstep: LongInt): Integer; stdcall; external EpanetLib; + function ENrunH(var T: Integer): Integer; stdcall; external EpanetLib; + function ENnextH(var Tstep: Integer): Integer; stdcall; external EpanetLib; function ENcloseH: Integer; stdcall; external EpanetLib; function ENsavehydfile(F: PAnsiChar): Integer; stdcall; external EpanetLib; function ENusehydfile(F: PAnsiChar): Integer; stdcall; external EpanetLib; @@ -283,9 +288,9 @@ const function ENsolveQ: Integer; stdcall; external EpanetLib; function ENopenQ: Integer; stdcall; external EpanetLib; function ENinitQ(SaveFlag: Integer): Integer; stdcall; external EpanetLib; - function ENrunQ(var T: LongInt): Integer; stdcall; external EpanetLib; - function ENnextQ(var Tstep: LongInt): Integer; stdcall; external EpanetLib; - function ENstepQ(var Tleft: LongInt): Integer; stdcall; external EpanetLib; + function ENrunQ(var T: Integer): Integer; stdcall; external EpanetLib; + function ENnextQ(var Tstep: Integer): Integer; stdcall; external EpanetLib; + function ENstepQ(var Tleft: Integer): Integer; stdcall; external EpanetLib; function ENcloseQ: Integer; stdcall; external EpanetLib; {Reporting Functions} @@ -306,8 +311,8 @@ const function ENsetoption(Code: Integer; Value: Single): Integer; stdcall; external EpanetLib; function ENgetflowunits(var Code: Integer): Integer; stdcall; external EpanetLib; function ENsetflowunits(Code: Integer): Integer; stdcall; external EpanetLib; - function ENgettimeparam(Code: Integer; var Value: LongInt): Integer; stdcall; external EpanetLib; - function ENsettimeparam(Code: Integer; Value: LongInt): Integer; stdcall; external EpanetLib; + function ENgettimeparam(Code: Integer; var Value: Integer): Integer; stdcall; external EpanetLib; + function ENsettimeparam(Code: Integer; Value: Integer): Integer; stdcall; external EpanetLib; function ENgetqualinfo(var QualType: Integer; ChemName: PAnsiChar; ChemUnits: PAnsiChar; var TraceNode: Integer): Integer; stdcall; external EpanetLib; function ENgetqualtype(var QualCode: Integer; var TraceNode: Integer): Integer; stdcall; external EpanetLib; function ENsetqualtype(QualCode: Integer; ChemName: PAnsiChar; ChemUnits: PAnsiChar; TraceNodeID: PAnsiChar): Integer; stdcall; external EpanetLib; @@ -356,6 +361,7 @@ const function ENgetvertexcount(Index: Integer; var Count: Integer): Integer; stdcall; external EpanetLib; function ENgetvertex(Index: Integer; Vertex: Integer; var X: Double; var Y: Double): Integer; stdcall; external EpanetLib; + function ENsetvertex(Index: Integer; Vertex: Integer; X: Double; Y: Double): Integer; stdcall; external EpanetLib; function ENsetvertices(Index: Integer; var X: Double; var Y: Double; Count: Integer): Integer; stdcall; external EpanetLib; {Pump Functions} @@ -383,6 +389,7 @@ const function ENsetcurveid(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; function ENgetcurvelen(Index: Integer; var Len: Integer): Integer; stdcall; external EpanetLib; function ENgetcurvetype(Index: Integer; var CurveType: Integer): Integer; stdcall; external EpanetLib; + function ENsetcurvetype(Index: Integer; CurveType: Integer): Integer; stdcall; external EpanetLib; function ENgetcurvevalue(CurveIndex: Integer; PointIndex: Integer; var X: Single; var Y: Single): Integer; stdcall; external EpanetLib; function ENsetcurvevalue(CurveIndex: Integer; PointIndex: Integer; X: Single; Y: Single): Integer; stdcall; external EpanetLib; function ENgetcurve(Index: Integer; ID: PAnsiChar; var N: Integer; var X: Single; var Y: Single): Integer; stdcall; external EpanetLib; diff --git a/include/epanet2.vb b/include/epanet2.vb index bfe65c2..5d721bc 100644 --- a/include/epanet2.vb +++ b/include/epanet2.vb @@ -4,7 +4,7 @@ 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) for use with VB.Net. -'Last updated on 11/04/2019 +'Last updated on 02/01/2020 Imports System.Runtime.InteropServices Imports System.Text @@ -67,6 +67,7 @@ Public Const EN_PUMP_HCURVE = 19 Public Const EN_PUMP_ECURVE = 20 Public Const EN_PUMP_ECOST = 21 Public Const EN_PUMP_EPAT = 22 +Public Const EN_GPV_CURVE = 23 Public Const EN_DURATION = 0 ' Time parameters Public Const EN_HYDSTEP = 1 @@ -345,6 +346,7 @@ Public Const EN_MISSING As Double = -1.0E10 Declare Function ENsetpipedata Lib "epanet2.dll" (ByVal index As Int32, ByVal length As Single, ByVal diam As Single, ByVal rough As Single, ByVal mloss As Single) As Int32 Declare Function ENgetvertexcount Lib "epanet2.dll" (ByVal index As Int32, count As Int32) As Int32 Declare Function ENgetvertex Lib "epanet2.dll" (ByVal index As Int32, ByVal vertex As Int32, x As Double, y As Double) As Int32 + Declare Function ENsetvertex Lib "epanet2.dll" (ByVal index As Int32, ByVal vertex As Int32, ByVal x As Double, ByVal y As Double) As Int32 Declare Function ENsetvertices Lib "epanet2.dll" (ByVal index As Int32, xCoords As Any, yCoords As Any, ByVal count As Int32) As Int32 'Pump Functions @@ -372,6 +374,7 @@ Public Const EN_MISSING As Double = -1.0E10 Declare Function ENsetcurveid Lib "epanet2.dll" (ByVal index As Int32, ByVal newid As String) As Int32 Declare Function ENgetcurvelen Lib "epanet2.dll" (ByVal index As Int32, len_ As Int32) As Int32 Declare Function ENgetcurvetype Lib "epanet2.dll" (ByVal index As Int32, type_ As Int32) As Int32 + Declare Function ENsetcurvetype Lib "epanet2.dll" (ByVal index As Int32, ByVal type_ As Int32) As Int32 Declare Function ENgetcurvevalue Lib "epanet2.dll" (ByVal curveIndex As Int32, ByVal pointIndex As Int32, x As Single, y As Single) As Int32 Declare Function ENsetcurvevalue Lib "epanet2.dll" (ByVal curveIndex As Int32, ByVal pointIndex As Int32, ByVal x As Single, ByVal y As Single) As Int32 Declare Function ENgetcurve Lib "epanet2.dll" (ByVal index As Int32, ByVal id As String, nPoints As Int32, xValues As Any, yValues As Any) As Int32 diff --git a/include/epanet2_2.h b/include/epanet2_2.h index cbfece3..4760986 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -11,7 +11,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 10/29/2019 + Last Updated: 02/01/2020 ****************************************************************************** */ @@ -1238,7 +1238,7 @@ typedef struct Project *EN_Project; int DLLEXPORT EN_getvertexcount(EN_Project ph, int index, int *count); /** - @brief Retrieves the coordinate's of a vertex point assigned to a link. + @brief Retrieves the coordinates of a vertex point assigned to a link. @param ph an EPANET project handle. @param index a link's index (starting from 1). @param vertex a vertex point index (starting from 1). @@ -1248,6 +1248,17 @@ typedef struct Project *EN_Project; */ int DLLEXPORT EN_getvertex(EN_Project ph, int index, int vertex, double *x, double *y); + /** + @brief Sets the coordinates of a vertex point assigned to a link. + @param ph an EPANET project handle. + @param index a link's index (starting from 1). + @param vertex a vertex point index (starting from 1). + @param x the vertex's X-coordinate value. + @param y the vertex's Y-coordinate value. + @return an error code. + */ + int DLLEXPORT EN_setvertex(EN_Project ph, int index, int vertex, double x, double y); + /** @brief Assigns a set of internal vertex points to a link. @param ph an EPANET project handle. @@ -1475,6 +1486,15 @@ typedef struct Project *EN_Project; */ int DLLEXPORT EN_getcurvetype(EN_Project ph, int index, int *type); + /** + @brief Sets a curve's type. + @param ph an EPANET project handle. + @param index a curve's index (starting from 1). + @param type the curve's type (see @ref EN_CurveType). + @return an error code. + */ + int DLLEXPORT EN_setcurvetype(EN_Project ph, int index, int type); + /** @brief Retrieves the value of a single data point for a curve. @param ph an EPANET project handle. diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index 32d8171..7a665b6 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -9,7 +9,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 11/06/2019 + Last Updated: 02/01/2020 ****************************************************************************** */ @@ -94,7 +94,8 @@ typedef enum { EN_PUMP_HCURVE = 19, //!< Pump head v. flow curve index EN_PUMP_ECURVE = 20, //!< Pump efficiency v. flow curve index EN_PUMP_ECOST = 21, //!< Pump average energy price - EN_PUMP_EPAT = 22 //!< Pump energy price time pattern index + EN_PUMP_EPAT = 22, //!< Pump energy price time pattern index + EN_GPV_CURVE = 23 //!< GPV head loss v. flow curve index } EN_LinkProperty; /// Time parameters diff --git a/src/epanet.c b/src/epanet.c index efc0535..82ece34 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 11/15/2019 + Last Updated: 02/01/2020 ****************************************************************************** */ @@ -3778,6 +3778,12 @@ int DLLEXPORT EN_getlinkvalue(EN_Project p, int index, int property, double *val v = (double)Pump[findpump(&p->network, index)].Epat; } break; + + case EN_GPV_CURVE: + if (Link[index].Type == GPV) + { + v = Link[index].Kc; + } default: return 251; @@ -3985,6 +3991,14 @@ int DLLEXPORT EN_setlinkvalue(EN_Project p, int index, int property, double valu net->Pump[pumpIndex].Epat = patIndex; } break; + + case EN_GPV_CURVE: + if (Link[index].Type == GPV) + { + curveIndex = ROUND(value); + if (curveIndex < 0 || curveIndex > net->Ncurves) return 206; + Link[index].Kc = curveIndex; + } default: return 251; @@ -4088,6 +4102,35 @@ int DLLEXPORT EN_getvertex(EN_Project p, int index, int vertex, double *x, doubl *y = vertices->Y[vertex - 1]; return 0; } + +int DLLEXPORT EN_setvertex(EN_Project p, int index, int vertex, double x, double y) +/*---------------------------------------------------------------- +** Input: index = link index +** vertex = index of a link vertex point +** x = vertex point's X-coordinate +** y = vertex point's Y-coordinate +** Returns: error code +** Purpose: sets the coordinates of a vertex point in a link +**---------------------------------------------------------------- +*/ +{ + Network *net = &p->network; + + Slink *Link = net->Link; + Pvertices vertices; + + // Check that link exists + if (!p->Openflag) return 102; + if (index <= 0 || index > net->Nlinks) return 204; + + // Check that vertex exists + vertices = Link[index].Vertices; + if (vertices == NULL) return 255; + if (vertex <= 0 || vertex > vertices->Npts) return 255; + vertices->X[vertex - 1] = x; + vertices->Y[vertex - 1] = y; + return 0; +} int DLLEXPORT EN_setvertices(EN_Project p, int index, double *x, double *y, int count) /*---------------------------------------------------------------- @@ -4699,6 +4742,23 @@ int DLLEXPORT EN_getcurvetype(EN_Project p, int index, int *type) return 0; } +int DLLEXPORT EN_setcurvetype(EN_Project p, int index, int type) +/*---------------------------------------------------------------- +** Input: index = data curve index +** type = type of data curve (see EN_CurveType) +** Returns: error code +** Purpose: sets the type assigned to a data curve +**---------------------------------------------------------------- +*/ +{ + Network *net = &p->network; + if (!p->Openflag) return 102; + if (index < 1 || index > net->Ncurves) return 206; + if (type < 0 || type > EN_GENERIC_CURVE) return 251; + net->Curve[index].Type = type; + return 0; +} + int DLLEXPORT EN_getcurvevalue(EN_Project p, int curveIndex, int pointIndex, double *x, double *y) /*---------------------------------------------------------------- diff --git a/src/epanet2.c b/src/epanet2.c index f5940cd..1706936 100644 --- a/src/epanet2.c +++ b/src/epanet2.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 11/02/2019 + Last Updated: 02/01/2020 ****************************************************************************** */ @@ -522,6 +522,11 @@ int DLLEXPORT ENgetvertex(int index, int vertex, double *x, double *y) return EN_getvertex(_defaultProject, index, vertex, x, y); } +int DLLEXPORT ENsetvertex(int index, int vertex, double x, double y) +{ + return EN_setvertex(_defaultProject, index, vertex, x, y); +} + int DLLEXPORT ENsetvertices(int index, double *x, double *y, int count) { return EN_setvertices(_defaultProject, index, x, y, count); @@ -662,6 +667,11 @@ int DLLEXPORT ENgetcurvetype(int index, int *type) return EN_getcurvetype(_defaultProject, index, type); } +int DLLEXPORT ENsetcurvetype(int index, int type) +{ + return EN_setcurvetype(_defaultProject, index, type); +} + int DLLEXPORT ENgetcurvevalue(int curveIndex, int pointIndex, EN_API_FLOAT_TYPE *x, EN_API_FLOAT_TYPE *y) { diff --git a/src/errors.dat b/src/errors.dat index 0930b52..4768cc3 100644 --- a/src/errors.dat +++ b/src/errors.dat @@ -43,7 +43,7 @@ DAT(225,"invalid lower/upper levels for tank") DAT(226,"no head curve or power rating for pump") DAT(227,"invalid head curve for pump") DAT(230,"nonincreasing x-values for curve") -DAT(233,"network has unconnected node") +DAT(233,"network has unconnected nodes") // These errors apply only to API functions DAT(240,"nonexistent source") diff --git a/src/funcs.h b/src/funcs.h index d2bf39e..366e5c7 100755 --- a/src/funcs.h +++ b/src/funcs.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 11/15/2019 + Last Updated: 02/03/2020 ****************************************************************************** */ #ifndef FUNCS_H @@ -29,6 +29,8 @@ void freeadjlists(Network *); int incontrols(Project *, int, int); int valvecheck(Project *, int, int, int, int); +int unlinked(Project *); + int findnode(Network *, char *); int findlink(Network *, char *); int findtank(Network *, int); diff --git a/src/hydraul.c b/src/hydraul.c index 732108c..ad24f0e 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 12/05/2019 + Last Updated: 02/03/2020 ****************************************************************************** */ @@ -64,14 +64,7 @@ int openhyd(Project *pr) ERRCODE(allocmatrix(pr)); // Check for unconnected nodes - if (!errcode) for (i = 1; i <= pr->network.Njuncs; i++) - { - if (pr->network.Adjlist[i] == NULL) - { - errcode = 233; - break; - } - } + ERRCODE(unlinked(pr)); // Initialize link flows if (!errcode) for (i = 1; i <= pr->network.Nlinks; i++) diff --git a/src/input2.c b/src/input2.c index 766ce24..a4d7fc8 100644 --- a/src/input2.c +++ b/src/input2.c @@ -7,7 +7,7 @@ Description: reads and interprets network data from an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 10/29/2019 +Last Updated: 02/03/2020 ****************************************************************************** */ @@ -37,7 +37,6 @@ extern int powercurve(double, double, double, double, double, double *, static int newline(Project *, int, char *); static int addpattern(Network *, char *); static int addcurve(Network *, char *); -static int unlinked(Project *); static int getpumpparams(Project *); static void inperrmsg(Project *, int, int, char *); @@ -130,11 +129,6 @@ int netsize(Project *pr) parser->MaxNodes = parser->MaxJuncs + parser->MaxTanks; parser->MaxLinks = parser->MaxPipes + parser->MaxPumps + parser->MaxValves; if (parser->MaxPats < 1) parser->MaxPats = 1; - if (!errcode) - { - if (parser->MaxJuncs < 1) errcode = 223; // Not enough nodes - else if (parser->MaxTanks == 0) errcode = 224; // No tanks - } return errcode; } @@ -263,9 +257,6 @@ int readdata(Project *pr) // Check for errors if (errsum > 0) errcode = 200; - // Check for unlinked nodes - if (!errcode) errcode = unlinked(pr); - // Determine pump curve parameters if (!errcode) errcode = getpumpparams(pr); @@ -572,54 +563,6 @@ int addcurve(Network *network, char *id) return 0; } -int unlinked(Project *pr) -/* -**-------------------------------------------------------------- -** Input: none -** Output: returns error code if any unlinked junctions found -** Purpose: checks for unlinked junctions in network -** -** NOTE: unlinked tanks have no effect on computations. -**-------------------------------------------------------------- -*/ -{ - Network *net = &pr->network; - int *marked; - int i, err, errcode; - - errcode = 0; - err = 0; - - // Create an array to record number of links incident on each node - marked = (int *)calloc(net->Nnodes + 1, sizeof(int)); - ERRCODE(MEMCHECK(marked)); - if (errcode) return errcode; - memset(marked, 0, (net->Nnodes + 1) * sizeof(int)); - - // Mark end nodes of each link - for (i = 1; i <= net->Nlinks; i++) - { - marked[net->Link[i].N1]++; - marked[net->Link[i].N2]++; - } - - // Check each junction - for (i = 1; i <= net->Njuncs; i++) - { - // If not marked then error - if (marked[i] == 0) - { - err++; - sprintf(pr->Msg, "Error 233: %s %s", geterrmsg(233, pr->Msg), net->Node[i].ID); - writeline(pr, pr->Msg); - } - if (err >= MAXERRS) break; - } - if (err > 0) errcode = 200; - free(marked); - return errcode; -} - int findmatch(char *line, char *keyword[]) /* **-------------------------------------------------------------- diff --git a/src/project.c b/src/project.c index 2d19729..03f0d9a 100644 --- a/src/project.c +++ b/src/project.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 11/15/2019 + Last Updated: 02/03/2020 ****************************************************************************** */ @@ -795,6 +795,34 @@ int valvecheck(Project *pr, int index, int type, int j1, int j2) return 0; } +int unlinked(Project *pr) +/* +**-------------------------------------------------------------- +** Input: none +** Output: returns error code if any unlinked junctions found +** Purpose: checks for unlinked junctions in network +** +** NOTE: unlinked tanks have no effect on computations. +**-------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + int i, count = 0; + + for (i = 1; i <= net->Njuncs; i++) + { + if (pr->network.Adjlist[i] == NULL) + { + count++; + sprintf(pr->Msg, "Error 233: %s %s", geterrmsg(233, pr->Msg), net->Node[i].ID); + writeline(pr, pr->Msg); + } + if (count >= 10) break; + } + if (count > 0) return 233; + return 0; +} + int findnode(Network *network, char *id) /*---------------------------------------------------------------- ** Input: id = node ID @@ -912,8 +940,8 @@ void adjustpattern(int *pat, int index) **---------------------------------------------------------------- */ { - if (*pat == index) *pat = 0; - else if (*pat > index) (*pat)--; + if (*pat == index) *pat = 0; + else if (*pat > index) (*pat)--; } void adjustpatterns(Network *network, int index) diff --git a/src/quality.c b/src/quality.c index 05d6519..41869fe 100644 --- a/src/quality.c +++ b/src/quality.c @@ -7,7 +7,7 @@ Description: implements EPANET's water quality engine Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 05/15/2019 +Last Updated: 02/03/2020 ****************************************************************************** */ @@ -63,8 +63,16 @@ int openqual(Project *pr) // Build nodal adjacency lists if they don't already exist if (net->Adjlist == NULL) { + // Check for too few nodes & no fixed grade nodes + if (net->Nnodes < 2) return 223; + if (net->Ntanks == 0) return 224; + + // Build adjacency lists errcode = buildadjlists(net); if (errcode ) return errcode; + + // Check for unconnected nodes + if (errcode = unlinked(pr)) return errcode; } // Create a memory pool for water quality segments From 3ee30ce01951522646a4cdc1e6950ac5bccd4b05 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Fri, 7 Feb 2020 10:44:52 -0500 Subject: [PATCH 002/233] Replaced status checking for pumps & FCVs See ReleaseNotes2_3.md. --- ReleaseNotes2_3.md | 7 +++- src/hydcoeffs.c | 94 ++++++++++++++++++++-------------------------- src/hydsolver.c | 12 +++--- src/hydstatus.c | 14 +------ src/input2.c | 13 +++++-- 5 files changed, 64 insertions(+), 76 deletions(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 1f922fc..f6b2f68 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -3,9 +3,14 @@ This document describes the changes and updates that have been made in version 2.3 of EPANET. - - The check for at least two nodes, one tank/reservoir and no unconnected junction nodes was moved from `EN_open` to `EN_openH` and `EN_openQ` so that partial network data files to be opened by the toolkit. + - The check for at least two nodes, one tank/reservoir and no unconnected junction nodes was moved from `EN_open` to `EN_openH` and `EN_openQ` so that partial network data files can be opened by the toolkit. - A `EN_setcurvetype` function was added to allow API clients to set a curve's type (e.g., `EN_PUMP_CURVE,` `EN_VOLUME_CURVE,` etc.). - A `EN_setvertex` function was added to allow API clients to change the coordinates of a link's vertex. - The index of a General Purpose Valve's (GPV's) head loss curve was added to the list of editable Link Properties using the symbolic constant name `EN_GPV_CURVE`. - The `EN_getlinkvalue` and `EN_setlinkvalue` functions were updated to get and set the value of `EN_GPV_CURVE`. + - For `EN_CUSTOM` type pump curves the maximum head value is now extrapolated to the y-axis intercept instead of being based on the first curve data point. Similarly, the maximum flow value is extrapolated to the x-axis intercept. + - Status checking for a pump not able to deliver enough head has been replaced by adding a penalty term to the pump's operating curve that prevents it from having negative flow (i.e., from crossing the y-axis). + - Status checking for Flow Control Valves has been eliminated by using a continuous head v. flow function. If the current flow is below the valve setting then the normal open head loss relation is used; otherwise a linear penalty function is applied to any flow in excess of the setting. Warnings are no longer issued when the valve operates fully opened at flows below the setting. + + diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index 9f4ac3d..b461946 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 10/04/2019 + Last Updated: 02/07/2020 ****************************************************************************** */ @@ -59,9 +59,9 @@ static void valvecoeff(Project *pr, int k); static void gpvcoeff(Project *pr, int k); static void pbvcoeff(Project *pr, int k); static void tcvcoeff(Project *pr, int k); +static void fcvcoeff(Project *pr, int k); static void prvcoeff(Project *pr, int k, int n1, int n2); static void psvcoeff(Project *pr, int k, int n1, int n2); -static void fcvcoeff(Project *pr, int k, int n1, int n2); void resistcoeff(Project *pr, int k) @@ -152,6 +152,8 @@ void headlosscoeffs(Project *pr) gpvcoeff(pr, k); break; case FCV: + fcvcoeff(pr, k); + break; case PRV: case PSV: if (hyd->LinkSetting[k] == MISSING) valvecoeff(pr, k); @@ -285,8 +287,8 @@ void valvecoeffs(Project *pr) ** Input: none ** Output: none ** Purpose: computes coeffs. of the linearized hydraulic eqns. -** contributed by PRVs, PSVs & FCVs whose status is -** not fixed to OPEN/CLOSED +** contributed by PRVs & PSVs whose status is not +** fixed to OPEN/CLOSED **-------------------------------------------------------------- */ { @@ -313,19 +315,8 @@ void valvecoeffs(Project *pr) n2 = link->N2; // Call valve-specific function - switch (link->Type) - { - case PRV: - prvcoeff(pr, k, n1, n2); - break; - case PSV: - psvcoeff(pr, k, n1, n2); - break; - case FCV: - fcvcoeff(pr, k, n1, n2); - break; - default: continue; - } + if (link->Type == PRV) prvcoeff(pr, k, n1, n2); + if (link->Type == PSV) psvcoeff(pr, k, n1, n2); } } @@ -701,20 +692,31 @@ void pumpcoeff(Project *pr, int k) } // Obtain reference to pump object - q = ABS(hyd->LinkFlow[k]); p = findpump(&pr->network, k); pump = &pr->network.Pump[p]; + + // Prevent negative flow + q = hyd->LinkFlow[k]; + if (q < 0.0) + { + hloss = -(SQR(setting) * pump->Hmax) + CBIG * q; + hgrad = CBIG; + hyd->P[k] = 1.0 / hgrad; + hyd->Y[k] = hloss / hgrad; + return; + } // If no pump curve treat pump as an open valve if (pump->Ptype == NOCURVE) { hyd->P[k] = 1.0 / CSMALL; - hyd->Y[k] = hyd->LinkFlow[k]; + hyd->Y[k] = q; return; } // Get pump curve coefficients for custom pump curve // (Other pump types have pre-determined coeffs.) + q = ABS(q); if (pump->Ptype == CUSTOM) { // Find intercept (h0) & slope (r) of pump curve @@ -1044,12 +1046,10 @@ void psvcoeff(Project *pr, int k, int n1, int n2) } -void fcvcoeff(Project *pr, int k, int n1, int n2) +void fcvcoeff(Project *pr, int k) /* **-------------------------------------------------------------- ** Input: k = link index -** n1 = upstream node of valve -** n2 = downstream node of valve ** Output: none ** Purpose: computes solution matrix coeffs. for flow control ** valve @@ -1059,40 +1059,28 @@ void fcvcoeff(Project *pr, int k, int n1, int n2) Hydraul *hyd = &pr->hydraul; Smatrix *sm = &hyd->smatrix; - int i, j; // Rows in solution matrix - double q; // Valve flow setting + double qset; // Valve flow setting + double flow; // Current valve flow + double hloss, hgrad; // Head loss & gradient - q = hyd->LinkSetting[k]; - i = sm->Row[n1]; - j = sm->Row[n2]; - - // If valve active, break network at valve and treat - // flow setting as external demand at upstream node - // and external supply at downstream node. - - if (hyd->LinkStatus[k] == ACTIVE) - { - hyd->Xflow[n1] -= q; - hyd->Xflow[n2] += q; - hyd->Y[k] = hyd->LinkFlow[k] - q; - sm->F[i] -= q; - sm->F[j] += q; - hyd->P[k] = 1.0 / CBIG; - sm->Aij[sm->Ndx[k]] -= hyd->P[k]; - sm->Aii[i] += hyd->P[k]; - sm->Aii[j] += hyd->P[k]; - } - - // Otherwise treat valve as an open pipe - - else + // Treat as a regular valve if status fixed or flow below setting + qset = hyd->LinkSetting[k]; + flow = hyd->LinkFlow[k]; + if (qset == MISSING || hyd->LinkStatus[k] <= CLOSED || flow < qset) { valvecoeff(pr, k); - sm->Aij[sm->Ndx[k]] -= hyd->P[k]; - sm->Aii[i] += hyd->P[k]; - sm->Aii[j] += hyd->P[k]; - sm->F[i] += (hyd->Y[k] - hyd->LinkFlow[k]); - sm->F[j] -= (hyd->Y[k] - hyd->LinkFlow[k]); + } + + // Otherwise prevent flow from exceeding the setting + else + { + hyd->LinkFlow[k] = qset; + valvecoeff(pr, k); + hloss = hyd->Y[k] / hyd->P[k] + CBIG * (flow - qset); + hgrad = CBIG; + hyd->P[k] = 1.0 / hgrad; + hyd->Y[k] = hloss / hgrad; + hyd->LinkFlow[k] = flow; } } diff --git a/src/hydsolver.c b/src/hydsolver.c index fcb8258..53057c2 100644 --- a/src/hydsolver.c +++ b/src/hydsolver.c @@ -8,7 +8,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 07/15/2019 + Last Updated: 02/07/2020 ****************************************************************************** */ @@ -111,6 +111,7 @@ int hydsolve(Project *pr, int *iter, double *relerr) maxtrials = hyd->MaxIter; if (hyd->ExtraIter > 0) maxtrials += hyd->ExtraIter; *iter = 1; + headlosscoeffs(pr); while (*iter <= maxtrials) { // Compute coefficient matrices A & F and solve A*H = F @@ -118,7 +119,6 @@ int hydsolve(Project *pr, int *iter, double *relerr) // head loss gradients, & F = flow correction terms. // Solution for H is returned in F from call to linsolve(). - headlosscoeffs(pr); matrixcoeffs(pr); errcode = linsolve(sm, net->Njuncs); @@ -138,6 +138,9 @@ int hydsolve(Project *pr, int *iter, double *relerr) } newerr = newflows(pr, &hydbal); // Update flows *relerr = newerr; + + // Compute head loss coeffs. for new flows + headlosscoeffs(pr); // Write convergence error to status report if called for if (rpt->Statflag == FULL) @@ -243,7 +246,7 @@ int badvalve(Project *pr, int n) if (n == n1 || n == n2) { t = link->Type; - if (t == PRV || t == PSV || t == FCV) + if (t == PRV || t == PSV) { if (hyd->LinkStatus[k] == ACTIVE) { @@ -253,8 +256,7 @@ int badvalve(Project *pr, int n) clocktime(rpt->Atime, time->Htime), link->ID); writeline(pr, pr->Msg); } - if (link->Type == FCV) hyd->LinkStatus[k] = XFCV; - else hyd->LinkStatus[k] = XPRESSURE; + hyd->LinkStatus[k] = XPRESSURE; return 1; } } diff --git a/src/hydstatus.c b/src/hydstatus.c index 87d45c6..76ca823 100644 --- a/src/hydstatus.c +++ b/src/hydstatus.c @@ -7,7 +7,7 @@ Description: updates hydraulic status of network elements Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 05/15/2019 +Last Updated: 02/07/2020 ****************************************************************************** */ @@ -141,18 +141,6 @@ int linkstatus(Project *pr) hyd->LinkStatus[k] = cvstatus(pr, hyd->LinkStatus[k], dh, hyd->LinkFlow[k]); } - if (link->Type == PUMP && hyd->LinkStatus[k] >= OPEN && - hyd->LinkSetting[k] > 0.0) - { - hyd->LinkStatus[k] = pumpstatus(pr, k, -dh); - } - - // Check for status changes in non-fixed FCVs - if (link->Type == FCV && hyd->LinkSetting[k] != MISSING) - { - hyd->LinkStatus[k] = fcvstatus(pr, k, status, hyd->NodeHead[n1], - hyd->NodeHead[n2]); - } // Check for flow into (out of) full (empty) tanks if (n1 > net->Njuncs || n2 > net->Njuncs) diff --git a/src/input2.c b/src/input2.c index a4d7fc8..136d297 100644 --- a/src/input2.c +++ b/src/input2.c @@ -7,7 +7,7 @@ Description: reads and interprets network data from an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 02/03/2020 +Last Updated: 02/07/2020 ****************************************************************************** */ @@ -429,9 +429,14 @@ int updatepumpparams(Project *pr, int pumpindex) { if (curve->Y[m] >= curve->Y[m - 1]) return 227; } - pump->Qmax = curve->X[npts - 1]; - pump->Q0 = (curve->X[0] + pump->Qmax) / 2.0; - pump->Hmax = curve->Y[0]; + pump->Q0 = (curve->X[0] + curve->X[npts-1]) / 2.0; + + // Extend curve to find Hmax (at 0 flow) and Qmax (at 0 head) + b = (curve->Y[1] - curve->Y[0]) / (curve->X[1] - curve->X[0]); + pump->Hmax = curve->Y[0] + b * curve->X[0]; + b = (curve->Y[npts-1] - curve->Y[npts-2]) / + (curve->X[npts-1] - curve->X[npts-2]); + pump->Qmax = curve->X[npts-1] - curve->Y[npts-1] / b; } // Compute shape factors & limits of power function curves From 7e3d5e1fe07202463842342f7b165fe855cc1b92 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Fri, 7 Feb 2020 13:49:54 -0500 Subject: [PATCH 003/233] Changed benchmark results for EN_getstatistic test --- ReleaseNotes2_3.md | 1 + tests/test_report.cpp | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index f6b2f68..8d47c19 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -11,6 +11,7 @@ This document describes the changes and updates that have been made in version 2 - For `EN_CUSTOM` type pump curves the maximum head value is now extrapolated to the y-axis intercept instead of being based on the first curve data point. Similarly, the maximum flow value is extrapolated to the x-axis intercept. - Status checking for a pump not able to deliver enough head has been replaced by adding a penalty term to the pump's operating curve that prevents it from having negative flow (i.e., from crossing the y-axis). - Status checking for Flow Control Valves has been eliminated by using a continuous head v. flow function. If the current flow is below the valve setting then the normal open head loss relation is used; otherwise a linear penalty function is applied to any flow in excess of the setting. Warnings are no longer issued when the valve operates fully opened at flows below the setting. + - The maximum link head loss error convergence criterion is now evaluated using the most recently computed link flows instead of flows from the previous iteration. diff --git a/tests/test_report.cpp b/tests/test_report.cpp index 5b5850c..c2c2a0d 100644 --- a/tests/test_report.cpp +++ b/tests/test_report.cpp @@ -25,8 +25,11 @@ BOOST_FIXTURE_TEST_CASE(test_rprt_anlysstats, FixtureOpenClose) std::vector test(5); double *array = test.data(); - std::vector ref = {3.0, 7.0799498320679432e-06, 1.6680242187483429e-08, - 0.0089173150106518495, 0.99999998187144024}; + std::vector ref = +// {3.0, 7.0799498320679432e-06, 1.6680242187483429e-08, // v2.2 +// 0.0089173150106518495, 0.99999998187144024}; + {3.0, 8.3792202148e-6, 2.63983750e-8, // v2.3_dev + 0.0112012133155924, 0.9999999807954413}; error = EN_solveH(ph); BOOST_REQUIRE(error == 0); From 25f9a6f6d175e43eb5586646e4dccecbbc75949c Mon Sep 17 00:00:00 2001 From: mariosmsk Date: Sun, 9 Feb 2020 22:05:40 +0200 Subject: [PATCH 004/233] fix EN_INITSETTING Co-Authored-By: Lew Rossman Co-Authored-By: Elad Salomons #583 --- src/epanet.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/epanet.c b/src/epanet.c index efc0535..0a6ddd6 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -3631,7 +3631,8 @@ int DLLEXPORT EN_getlinkvalue(EN_Project p, int index, int property, double *val { return EN_getlinkvalue(p, index, EN_ROUGHNESS, value); } - v = Link[index].Kc; + if (Link[index].Kc == MISSING) v = 0.0; + else v = Link[index].Kc; switch (Link[index].Type) { case PRV: From a3537b767aabb2bb721438993becd1380561cfe0 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sun, 9 Feb 2020 16:58:37 -0500 Subject: [PATCH 005/233] Revert "Changed benchmark results for EN_getstatistic test" This reverts commit 7e3d5e1fe07202463842342f7b165fe855cc1b92. --- ReleaseNotes2_3.md | 1 - tests/test_report.cpp | 7 ++----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 8d47c19..f6b2f68 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -11,7 +11,6 @@ This document describes the changes and updates that have been made in version 2 - For `EN_CUSTOM` type pump curves the maximum head value is now extrapolated to the y-axis intercept instead of being based on the first curve data point. Similarly, the maximum flow value is extrapolated to the x-axis intercept. - Status checking for a pump not able to deliver enough head has been replaced by adding a penalty term to the pump's operating curve that prevents it from having negative flow (i.e., from crossing the y-axis). - Status checking for Flow Control Valves has been eliminated by using a continuous head v. flow function. If the current flow is below the valve setting then the normal open head loss relation is used; otherwise a linear penalty function is applied to any flow in excess of the setting. Warnings are no longer issued when the valve operates fully opened at flows below the setting. - - The maximum link head loss error convergence criterion is now evaluated using the most recently computed link flows instead of flows from the previous iteration. diff --git a/tests/test_report.cpp b/tests/test_report.cpp index c2c2a0d..5b5850c 100644 --- a/tests/test_report.cpp +++ b/tests/test_report.cpp @@ -25,11 +25,8 @@ BOOST_FIXTURE_TEST_CASE(test_rprt_anlysstats, FixtureOpenClose) std::vector test(5); double *array = test.data(); - std::vector ref = -// {3.0, 7.0799498320679432e-06, 1.6680242187483429e-08, // v2.2 -// 0.0089173150106518495, 0.99999998187144024}; - {3.0, 8.3792202148e-6, 2.63983750e-8, // v2.3_dev - 0.0112012133155924, 0.9999999807954413}; + std::vector ref = {3.0, 7.0799498320679432e-06, 1.6680242187483429e-08, + 0.0089173150106518495, 0.99999998187144024}; error = EN_solveH(ph); BOOST_REQUIRE(error == 0); From a9ab376aa766911143b108cce82936473f6a538e Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sun, 9 Feb 2020 17:25:33 -0500 Subject: [PATCH 006/233] Revert "Replaced status checking for pumps & FCVs" This reverts commit 3ee30ce01951522646a4cdc1e6950ac5bccd4b05. --- ReleaseNotes2_3.md | 7 +--- src/hydcoeffs.c | 88 ++++++++++++++++++++++++++-------------------- src/hydsolver.c | 12 +++---- src/hydstatus.c | 14 +++++++- src/input2.c | 13 +++---- 5 files changed, 73 insertions(+), 61 deletions(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index f6b2f68..1f922fc 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -3,14 +3,9 @@ This document describes the changes and updates that have been made in version 2.3 of EPANET. - - The check for at least two nodes, one tank/reservoir and no unconnected junction nodes was moved from `EN_open` to `EN_openH` and `EN_openQ` so that partial network data files can be opened by the toolkit. + - The check for at least two nodes, one tank/reservoir and no unconnected junction nodes was moved from `EN_open` to `EN_openH` and `EN_openQ` so that partial network data files to be opened by the toolkit. - A `EN_setcurvetype` function was added to allow API clients to set a curve's type (e.g., `EN_PUMP_CURVE,` `EN_VOLUME_CURVE,` etc.). - A `EN_setvertex` function was added to allow API clients to change the coordinates of a link's vertex. - The index of a General Purpose Valve's (GPV's) head loss curve was added to the list of editable Link Properties using the symbolic constant name `EN_GPV_CURVE`. - The `EN_getlinkvalue` and `EN_setlinkvalue` functions were updated to get and set the value of `EN_GPV_CURVE`. - - For `EN_CUSTOM` type pump curves the maximum head value is now extrapolated to the y-axis intercept instead of being based on the first curve data point. Similarly, the maximum flow value is extrapolated to the x-axis intercept. - - Status checking for a pump not able to deliver enough head has been replaced by adding a penalty term to the pump's operating curve that prevents it from having negative flow (i.e., from crossing the y-axis). - - Status checking for Flow Control Valves has been eliminated by using a continuous head v. flow function. If the current flow is below the valve setting then the normal open head loss relation is used; otherwise a linear penalty function is applied to any flow in excess of the setting. Warnings are no longer issued when the valve operates fully opened at flows below the setting. - - diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index b461946..9f4ac3d 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/07/2020 + Last Updated: 10/04/2019 ****************************************************************************** */ @@ -59,9 +59,9 @@ static void valvecoeff(Project *pr, int k); static void gpvcoeff(Project *pr, int k); static void pbvcoeff(Project *pr, int k); static void tcvcoeff(Project *pr, int k); -static void fcvcoeff(Project *pr, int k); static void prvcoeff(Project *pr, int k, int n1, int n2); static void psvcoeff(Project *pr, int k, int n1, int n2); +static void fcvcoeff(Project *pr, int k, int n1, int n2); void resistcoeff(Project *pr, int k) @@ -152,8 +152,6 @@ void headlosscoeffs(Project *pr) gpvcoeff(pr, k); break; case FCV: - fcvcoeff(pr, k); - break; case PRV: case PSV: if (hyd->LinkSetting[k] == MISSING) valvecoeff(pr, k); @@ -287,8 +285,8 @@ void valvecoeffs(Project *pr) ** Input: none ** Output: none ** Purpose: computes coeffs. of the linearized hydraulic eqns. -** contributed by PRVs & PSVs whose status is not -** fixed to OPEN/CLOSED +** contributed by PRVs, PSVs & FCVs whose status is +** not fixed to OPEN/CLOSED **-------------------------------------------------------------- */ { @@ -315,8 +313,19 @@ void valvecoeffs(Project *pr) n2 = link->N2; // Call valve-specific function - if (link->Type == PRV) prvcoeff(pr, k, n1, n2); - if (link->Type == PSV) psvcoeff(pr, k, n1, n2); + switch (link->Type) + { + case PRV: + prvcoeff(pr, k, n1, n2); + break; + case PSV: + psvcoeff(pr, k, n1, n2); + break; + case FCV: + fcvcoeff(pr, k, n1, n2); + break; + default: continue; + } } } @@ -692,31 +701,20 @@ void pumpcoeff(Project *pr, int k) } // Obtain reference to pump object + q = ABS(hyd->LinkFlow[k]); p = findpump(&pr->network, k); pump = &pr->network.Pump[p]; - - // Prevent negative flow - q = hyd->LinkFlow[k]; - if (q < 0.0) - { - hloss = -(SQR(setting) * pump->Hmax) + CBIG * q; - hgrad = CBIG; - hyd->P[k] = 1.0 / hgrad; - hyd->Y[k] = hloss / hgrad; - return; - } // If no pump curve treat pump as an open valve if (pump->Ptype == NOCURVE) { hyd->P[k] = 1.0 / CSMALL; - hyd->Y[k] = q; + hyd->Y[k] = hyd->LinkFlow[k]; return; } // Get pump curve coefficients for custom pump curve // (Other pump types have pre-determined coeffs.) - q = ABS(q); if (pump->Ptype == CUSTOM) { // Find intercept (h0) & slope (r) of pump curve @@ -1046,10 +1044,12 @@ void psvcoeff(Project *pr, int k, int n1, int n2) } -void fcvcoeff(Project *pr, int k) +void fcvcoeff(Project *pr, int k, int n1, int n2) /* **-------------------------------------------------------------- ** Input: k = link index +** n1 = upstream node of valve +** n2 = downstream node of valve ** Output: none ** Purpose: computes solution matrix coeffs. for flow control ** valve @@ -1059,28 +1059,40 @@ void fcvcoeff(Project *pr, int k) Hydraul *hyd = &pr->hydraul; Smatrix *sm = &hyd->smatrix; - double qset; // Valve flow setting - double flow; // Current valve flow - double hloss, hgrad; // Head loss & gradient + int i, j; // Rows in solution matrix + double q; // Valve flow setting - // Treat as a regular valve if status fixed or flow below setting - qset = hyd->LinkSetting[k]; - flow = hyd->LinkFlow[k]; - if (qset == MISSING || hyd->LinkStatus[k] <= CLOSED || flow < qset) + q = hyd->LinkSetting[k]; + i = sm->Row[n1]; + j = sm->Row[n2]; + + // If valve active, break network at valve and treat + // flow setting as external demand at upstream node + // and external supply at downstream node. + + if (hyd->LinkStatus[k] == ACTIVE) { - valvecoeff(pr, k); + hyd->Xflow[n1] -= q; + hyd->Xflow[n2] += q; + hyd->Y[k] = hyd->LinkFlow[k] - q; + sm->F[i] -= q; + sm->F[j] += q; + hyd->P[k] = 1.0 / CBIG; + sm->Aij[sm->Ndx[k]] -= hyd->P[k]; + sm->Aii[i] += hyd->P[k]; + sm->Aii[j] += hyd->P[k]; } - - // Otherwise prevent flow from exceeding the setting + + // Otherwise treat valve as an open pipe + else { - hyd->LinkFlow[k] = qset; valvecoeff(pr, k); - hloss = hyd->Y[k] / hyd->P[k] + CBIG * (flow - qset); - hgrad = CBIG; - hyd->P[k] = 1.0 / hgrad; - hyd->Y[k] = hloss / hgrad; - hyd->LinkFlow[k] = flow; + sm->Aij[sm->Ndx[k]] -= hyd->P[k]; + sm->Aii[i] += hyd->P[k]; + sm->Aii[j] += hyd->P[k]; + sm->F[i] += (hyd->Y[k] - hyd->LinkFlow[k]); + sm->F[j] -= (hyd->Y[k] - hyd->LinkFlow[k]); } } diff --git a/src/hydsolver.c b/src/hydsolver.c index 53057c2..fcb8258 100644 --- a/src/hydsolver.c +++ b/src/hydsolver.c @@ -8,7 +8,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/07/2020 + Last Updated: 07/15/2019 ****************************************************************************** */ @@ -111,7 +111,6 @@ int hydsolve(Project *pr, int *iter, double *relerr) maxtrials = hyd->MaxIter; if (hyd->ExtraIter > 0) maxtrials += hyd->ExtraIter; *iter = 1; - headlosscoeffs(pr); while (*iter <= maxtrials) { // Compute coefficient matrices A & F and solve A*H = F @@ -119,6 +118,7 @@ int hydsolve(Project *pr, int *iter, double *relerr) // head loss gradients, & F = flow correction terms. // Solution for H is returned in F from call to linsolve(). + headlosscoeffs(pr); matrixcoeffs(pr); errcode = linsolve(sm, net->Njuncs); @@ -138,9 +138,6 @@ int hydsolve(Project *pr, int *iter, double *relerr) } newerr = newflows(pr, &hydbal); // Update flows *relerr = newerr; - - // Compute head loss coeffs. for new flows - headlosscoeffs(pr); // Write convergence error to status report if called for if (rpt->Statflag == FULL) @@ -246,7 +243,7 @@ int badvalve(Project *pr, int n) if (n == n1 || n == n2) { t = link->Type; - if (t == PRV || t == PSV) + if (t == PRV || t == PSV || t == FCV) { if (hyd->LinkStatus[k] == ACTIVE) { @@ -256,7 +253,8 @@ int badvalve(Project *pr, int n) clocktime(rpt->Atime, time->Htime), link->ID); writeline(pr, pr->Msg); } - hyd->LinkStatus[k] = XPRESSURE; + if (link->Type == FCV) hyd->LinkStatus[k] = XFCV; + else hyd->LinkStatus[k] = XPRESSURE; return 1; } } diff --git a/src/hydstatus.c b/src/hydstatus.c index 76ca823..87d45c6 100644 --- a/src/hydstatus.c +++ b/src/hydstatus.c @@ -7,7 +7,7 @@ Description: updates hydraulic status of network elements Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 02/07/2020 +Last Updated: 05/15/2019 ****************************************************************************** */ @@ -141,6 +141,18 @@ int linkstatus(Project *pr) hyd->LinkStatus[k] = cvstatus(pr, hyd->LinkStatus[k], dh, hyd->LinkFlow[k]); } + if (link->Type == PUMP && hyd->LinkStatus[k] >= OPEN && + hyd->LinkSetting[k] > 0.0) + { + hyd->LinkStatus[k] = pumpstatus(pr, k, -dh); + } + + // Check for status changes in non-fixed FCVs + if (link->Type == FCV && hyd->LinkSetting[k] != MISSING) + { + hyd->LinkStatus[k] = fcvstatus(pr, k, status, hyd->NodeHead[n1], + hyd->NodeHead[n2]); + } // Check for flow into (out of) full (empty) tanks if (n1 > net->Njuncs || n2 > net->Njuncs) diff --git a/src/input2.c b/src/input2.c index 136d297..a4d7fc8 100644 --- a/src/input2.c +++ b/src/input2.c @@ -7,7 +7,7 @@ Description: reads and interprets network data from an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 02/07/2020 +Last Updated: 02/03/2020 ****************************************************************************** */ @@ -429,14 +429,9 @@ int updatepumpparams(Project *pr, int pumpindex) { if (curve->Y[m] >= curve->Y[m - 1]) return 227; } - pump->Q0 = (curve->X[0] + curve->X[npts-1]) / 2.0; - - // Extend curve to find Hmax (at 0 flow) and Qmax (at 0 head) - b = (curve->Y[1] - curve->Y[0]) / (curve->X[1] - curve->X[0]); - pump->Hmax = curve->Y[0] + b * curve->X[0]; - b = (curve->Y[npts-1] - curve->Y[npts-2]) / - (curve->X[npts-1] - curve->X[npts-2]); - pump->Qmax = curve->X[npts-1] - curve->Y[npts-1] / b; + pump->Qmax = curve->X[npts - 1]; + pump->Q0 = (curve->X[0] + pump->Qmax) / 2.0; + pump->Hmax = curve->Y[0]; } // Compute shape factors & limits of power function curves From c7b32c1acc356e7a2da989c6c356424c71c28eda Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Sat, 15 Feb 2020 19:33:57 +0200 Subject: [PATCH 007/233] Fix link in README.md Link to community.wateranalytics.org was broken --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7f33dc6..65fa407 100755 --- a/README.md +++ b/README.md @@ -30,4 +30,4 @@ The **Open Water Analytics** (OWA) Community is an international group of EPANET ## DISCLAIMER Although OWA is not formally affiliated with nor endorsed by USEPA, this project has been a collaborative effort between the two that builds upon and extends the USEPA’s legacy EPANET 2.0 code base. For the last "official" release of EPANET please go to the [USEPA website](http://www2.epa.gov/water-research/epanet). -For more general community discussion, FAQ, and roadmapping of the project, please go to the [Community Forum](http://community/wateranalytics.org). +For more general community discussion, FAQ, and roadmapping of the project, please go to the [Community Forum](http://community.wateranalytics.org). From 21e1e4c01920ee1be6ec3d5533d28f6b5906bddb Mon Sep 17 00:00:00 2001 From: chrisgs Date: Sat, 21 Mar 2020 17:13:40 +0000 Subject: [PATCH 008/233] Allow start time to be set with EN_settimeparam Add additional case for `EN_STARTTIME` to the `EN_settimeparam` function. --- src/epanet.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/epanet.c b/src/epanet.c index 0a6ddd6..1ba1fe9 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1591,6 +1591,11 @@ int DLLEXPORT EN_settimeparam(EN_Project p, int param, long value) time->Qtime = value; break; + case EN_STARTTIME: + if (value < 0) return 213; + time->Tstart = value; + break; + default: return 251; } From 364ad08bccc4f5b91e642b9b35ee696a71201f40 Mon Sep 17 00:00:00 2001 From: chrisgs Date: Mon, 23 Mar 2020 22:14:02 +0000 Subject: [PATCH 009/233] Limit EN_STARTTIME parameter value to SECperDAY Limit `EN_STARTTIME` parameter value to a maximum of `SECperDAY`, and return an error code if this is exceeded. --- src/epanet.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/epanet.c b/src/epanet.c index 1ba1fe9..a81f7b1 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1592,7 +1592,7 @@ int DLLEXPORT EN_settimeparam(EN_Project p, int param, long value) break; case EN_STARTTIME: - if (value < 0) return 213; + if (value < 0 || value > SECperDAY) return 213; time->Tstart = value; break; From 6ddea72ee9c4b790b05bde49b580f573f4ae23de Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Sun, 29 Mar 2020 10:52:08 +0300 Subject: [PATCH 010/233] Update epanet2.bas --- include/epanet2.bas | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/include/epanet2.bas b/include/epanet2.bas index 4b9df87..1d6072c 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -54,7 +54,6 @@ Public Const EN_SETTING = 12 Public Const EN_ENERGY = 13 Public Const EN_LINKQUAL = 14 Public Const EN_LINKPATTERN = 15 - Public Const EN_PUMP_STATE = 16 Public Const EN_PUMP_EFFIC = 17 Public Const EN_PUMP_POWER = 18 @@ -78,6 +77,7 @@ Public Const EN_HTIME = 11 Public Const EN_QTIME = 12 Public Const EN_HALTFLAG = 13 Public Const EN_NEXTEVENT = 14 +Public Const EN_NEXTEVENTTANK = 15 Public Const EN_ITERATIONS = 0 ' Run statistics Public Const EN_RELATIVEERROR = 1 @@ -116,6 +116,14 @@ Public Const EN_FCV = 6 Public Const EN_TCV = 7 Public Const EN_GPV = 8 +Public Const EN_CLOSED = 0 ' Link status types +Public Const EN_OPEN = 1 + +Public Const EN_PUMP_XHEAD = 0 ' Pump state types +Public Const EN_PUMP_CLOSED = 2 +Public Const EN_PUMP_OPEN = 3 +Public Const EN_PUMP_XFLOW = 5 + Public Const EN_NONE = 0 ' Quality analysis types Public Const EN_CHEM = 1 Public Const EN_AGE = 2 @@ -173,7 +181,8 @@ Public Const EN_HILEVEL = 1 Public Const EN_TIMER = 2 Public Const EN_TIMEOFDAY = 3 -Public Const EN_AVERAGE = 1 ' Time statistic types +Public Const EN_SERIES = 0 ' Time statistic types +Public Const EN_AVERAGE = 1 Public Const EN_MINIMUM = 2 Public Const EN_MAXIMUM = 3 Public Const EN_RANGE = 4 From f358e397285050da75b9cb908b3b0c25e394d03b Mon Sep 17 00:00:00 2001 From: Corey McNeish Date: Sat, 11 Apr 2020 10:47:40 -0700 Subject: [PATCH 011/233] Make node degree list local to factorize --- src/smatrix.c | 32 ++++++++++++++++---------------- src/types.h | 1 - 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/smatrix.c b/src/smatrix.c index 67e1f53..95434f3 100755 --- a/src/smatrix.c +++ b/src/smatrix.c @@ -48,8 +48,8 @@ static int paralink(Network *, Smatrix *, int, int, int k); static void xparalinks(Network *); static int reordernodes(Project *); static int factorize(Project *); -static int growlist(Project *, int); -static int newlink(Project *, Padjlist); +static int growlist(Project *, int, int *); +static int newlink(Project *, Padjlist, int *); static int linked(Network *, int, int); static int addlink(Network *, int, int, int); static int storesparse(Project *, int); @@ -443,8 +443,8 @@ int factorize(Project *pr) Padjlist alink; // Find degree of each junction node - sm->Degree = (int *)calloc(net->Nnodes + 1, sizeof(int)); - if (sm->Degree == NULL) return 101; + int *degree = (int *)calloc(net->Nnodes + 1, sizeof(int)); + if (degree == NULL) return 101; // NOTE: For purposes of node re-ordering, Tanks (nodes with // indexes above Njuncs) have zero degree of adjacency. @@ -453,7 +453,7 @@ int factorize(Project *pr) { for (alink = net->Adjlist[k]; alink != NULL; alink = alink->next) { - if (alink->node > 0) sm->Degree[k]++; + if (alink->node > 0) degree[k]++; } } @@ -463,19 +463,19 @@ int factorize(Project *pr) for (k = 1; k <= net->Njuncs; k++) // Examine each junction { knode = sm->Order[k]; // Re-ordered index - if (!growlist(pr, knode)) // Augment adjacency list + if (!growlist(pr, knode, degree)) // Augment adjacency list { errcode = 101; break; } - sm->Degree[knode] = 0; // In-activate node + degree[knode] = 0; // In-activate node } - free(sm->Degree); + free(degree); return errcode; } -int growlist(Project *pr, int knode) +int growlist(Project *pr, int knode, int *degree) /* **-------------------------------------------------------------- ** Input: knode = node index @@ -496,10 +496,10 @@ int growlist(Project *pr, int knode) for (alink = net->Adjlist[knode]; alink != NULL; alink = alink -> next) { node = alink->node; // End node of connecting link - if (node > 0 && sm->Degree[node] > 0) // End node is active + if (node > 0 && degree[node] > 0) // End node is active { - sm->Degree[node]--; // Reduce degree of adjacency - if (!newlink(pr, alink)) // Add to adjacency list + degree[node]--; // Reduce degree of adjacency + if (!newlink(pr, alink, degree)) // Add to adjacency list { return 0; } @@ -509,7 +509,7 @@ int growlist(Project *pr, int knode) } -int newlink(Project *pr, Padjlist alink) +int newlink(Project *pr, Padjlist alink, int *degree) /* **-------------------------------------------------------------- ** Input: alink = element of node's adjacency list @@ -533,7 +533,7 @@ int newlink(Project *pr, Padjlist alink) // If jnode still active, and inode not connected to jnode, // then add a new connection between inode and jnode. - if (jnode > 0 && sm->Degree[jnode] > 0) // jnode still active + if (jnode > 0 && degree[jnode] > 0) // jnode still active { if (!linked(net, inode, jnode)) // inode not linked to jnode { @@ -545,8 +545,8 @@ int newlink(Project *pr, Padjlist alink) // reflect the new connection. if (!addlink(net, inode, jnode, sm->Ncoeffs)) return 0; if (!addlink(net, jnode, inode, sm->Ncoeffs)) return 0; - sm->Degree[inode]++; - sm->Degree[jnode]++; + degree[inode]++; + degree[jnode]++; } } } diff --git a/src/types.h b/src/types.h index 713adc2..50dc50a 100755 --- a/src/types.h +++ b/src/types.h @@ -688,7 +688,6 @@ typedef struct { *XLNZ, // Start position of each column in NZSUB *NZSUB, // Row index of each coeff. in each column *LNZ, // Position of each coeff. in Aij array - *Degree, // Number of links adjacent to each node *link, // Array used by linear eqn. solver *first; // Array used by linear eqn. solver From ee5e910454cbf3e7b9df0743929795a456d98893 Mon Sep 17 00:00:00 2001 From: Corey McNeish Date: Sat, 11 Apr 2020 11:23:39 -0700 Subject: [PATCH 012/233] Alloc, free persistent parts of Hydraul in allocdata, rather than in allocmatrix --- src/epanet.c | 2 ++ src/hydraul.c | 6 ------ src/project.c | 6 ++++++ 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index a81f7b1..dd6348b 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1777,6 +1777,8 @@ int DLLEXPORT EN_addnode(EN_Project p, char *id, int nodeType, int *index) hyd->NodeDemand = (double *)realloc(hyd->NodeDemand, size); qual->NodeQual = (double *)realloc(qual->NodeQual, size); hyd->NodeHead = (double *)realloc(hyd->NodeHead, size); + hyd->DemandFlow = (double *)realloc(hyd->DemandFlow, size); + hyd->EmitterFlow = (double *)realloc(hyd->EmitterFlow, size); // Actions taken when a new Junction is added if (nodeType == EN_JUNCTION) diff --git a/src/hydraul.c b/src/hydraul.c index 732108c..069deb7 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -305,16 +305,12 @@ int allocmatrix(Project *pr) hyd->P = (double *) calloc(net->Nlinks+1,sizeof(double)); hyd->Y = (double *) calloc(net->Nlinks+1,sizeof(double)); - hyd->DemandFlow = (double *) calloc(net->Nnodes + 1, sizeof(double)); - hyd->EmitterFlow = (double *) calloc(net->Nnodes+1, sizeof(double)); hyd->Xflow = (double *) calloc(MAX((net->Nnodes+1), (net->Nlinks+1)), sizeof(double)); hyd->OldStatus = (StatusType *) calloc(net->Nlinks+net->Ntanks+1, sizeof(StatusType)); ERRCODE(MEMCHECK(hyd->P)); ERRCODE(MEMCHECK(hyd->Y)); - ERRCODE(MEMCHECK(hyd->DemandFlow)); - ERRCODE(MEMCHECK(hyd->EmitterFlow)); ERRCODE(MEMCHECK(hyd->Xflow)); ERRCODE(MEMCHECK(hyd->OldStatus)); return errcode; @@ -334,8 +330,6 @@ void freematrix(Project *pr) free(hyd->P); free(hyd->Y); - free(hyd->DemandFlow); - free(hyd->EmitterFlow); free(hyd->Xflow); free(hyd->OldStatus); } diff --git a/src/project.c b/src/project.c index 2d19729..6fae82c 100644 --- a/src/project.c +++ b/src/project.c @@ -313,10 +313,14 @@ int allocdata(Project *pr) pr->hydraul.NodeDemand = (double *)calloc(n, sizeof(double)); pr->hydraul.NodeHead = (double *)calloc(n, sizeof(double)); pr->quality.NodeQual = (double *)calloc(n, sizeof(double)); + pr->hydraul.DemandFlow = (double *)calloc(n, sizeof(double)); + pr->hydraul.EmitterFlow = (double *)calloc(n, sizeof(double)); ERRCODE(MEMCHECK(pr->network.Node)); ERRCODE(MEMCHECK(pr->hydraul.NodeDemand)); ERRCODE(MEMCHECK(pr->hydraul.NodeHead)); ERRCODE(MEMCHECK(pr->quality.NodeQual)); + ERRCODE(MEMCHECK(pr->hydraul.DemandFlow)); + ERRCODE(MEMCHECK(pr->hydraul.EmitterFlow)); } // Allocate memory for network links @@ -388,6 +392,8 @@ void freedata(Project *pr) free(pr->hydraul.LinkFlow); free(pr->hydraul.LinkSetting); free(pr->hydraul.LinkStatus); + free(pr->hydraul.DemandFlow); + free(pr->hydraul.EmitterFlow); free(pr->quality.NodeQual); // Free memory used for nodal adjacency lists From b64e0703545623053e38451d55ac3d66cd1c2c13 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Mon, 13 Apr 2020 09:39:58 -0400 Subject: [PATCH 013/233] Update project.c --- src/project.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/project.c b/src/project.c index 6fae82c..fb99cf0 100644 --- a/src/project.c +++ b/src/project.c @@ -253,6 +253,8 @@ void initpointers(Project *pr) pr->hydraul.P = NULL; pr->hydraul.Y = NULL; pr->hydraul.Xflow = NULL; + pr->hydraul.DemandFlow = NULL; + pr->hydraul.EmitterFlow = NULL; pr->quality.NodeQual = NULL; pr->quality.PipeRateCoeff = NULL; From 3f515e7ad49c92b4c82fe5ea3a5ef47ad55675c1 Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Sun, 19 Apr 2020 09:42:43 +0300 Subject: [PATCH 014/233] Fix EN_settankdata for elevation with SI units Fix #593 --- src/epanet.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index dd6348b..1464e7a 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2666,11 +2666,11 @@ int DLLEXPORT EN_settankdata(EN_Project p, int index, double elev, else area = PI * diam * diam / 4.0; // Assign parameters to tank object - net->Node[Tank[j].Node].El = elevation; + net->Node[Tank[j].Node].El = elevation / Ucf[ELEV]; Tank[j].A = area / Ucf[ELEV] / Ucf[ELEV]; - Tank[j].H0 = elevation + initlvl / Ucf[ELEV]; - Tank[j].Hmin = elevation + minlvl / Ucf[ELEV]; - Tank[j].Hmax = elevation + maxlvl / Ucf[ELEV]; + Tank[j].H0 = (elevation + initlvl) / Ucf[ELEV]; + Tank[j].Hmin = (elevation + minlvl) / Ucf[ELEV]; + Tank[j].Hmax = (elevation + maxlvl) / Ucf[ELEV]; Tank[j].Vcurve = curveIndex; if (curveIndex == 0) { From 99f09f1edb8241a4d77e6b84dde66342f9fd64ee Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sun, 19 Apr 2020 09:16:08 -0400 Subject: [PATCH 015/233] A simpler fix to EN_settankdata Changes 1 line instead of 4. --- src/epanet.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 1464e7a..0179b7e 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2628,7 +2628,7 @@ int DLLEXPORT EN_settankdata(EN_Project p, int index, double elev, Network *net = &p->network; int i, j, n, curveIndex = 0; - double area, elevation = elev; + double area, elevation = elev / Ucf[ELEV]; double *Ucf = p->Ucf; Stank *Tank = net->Tank; Scurve *curve; @@ -2666,11 +2666,11 @@ int DLLEXPORT EN_settankdata(EN_Project p, int index, double elev, else area = PI * diam * diam / 4.0; // Assign parameters to tank object - net->Node[Tank[j].Node].El = elevation / Ucf[ELEV]; + net->Node[Tank[j].Node].El = elevation; Tank[j].A = area / Ucf[ELEV] / Ucf[ELEV]; - Tank[j].H0 = (elevation + initlvl) / Ucf[ELEV]; - Tank[j].Hmin = (elevation + minlvl) / Ucf[ELEV]; - Tank[j].Hmax = (elevation + maxlvl) / Ucf[ELEV]; + Tank[j].H0 = elevation + initlvl / Ucf[ELEV]; + Tank[j].Hmin = elevation + minlvl / Ucf[ELEV]; + Tank[j].Hmax = elevation + maxlvl / Ucf[ELEV]; Tank[j].Vcurve = curveIndex; if (curveIndex == 0) { From 37a58a467cc9033b3018e320322d5be0de29e4bf Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sun, 19 Apr 2020 09:25:36 -0400 Subject: [PATCH 016/233] Update epanet.c --- src/epanet.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/epanet.c b/src/epanet.c index 0179b7e..8e5f183 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2628,8 +2628,8 @@ int DLLEXPORT EN_settankdata(EN_Project p, int index, double elev, Network *net = &p->network; int i, j, n, curveIndex = 0; - double area, elevation = elev / Ucf[ELEV]; double *Ucf = p->Ucf; + double area, elevation = elev / Ucf[ELEV]; Stank *Tank = net->Tank; Scurve *curve; From 37342c70b11d1413bad312d9cfbc0c657f973dcf Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Sun, 19 Apr 2020 18:05:08 +0300 Subject: [PATCH 017/233] Another option for EN_settankdata fix --- src/epanet.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 8e5f183..46e7211 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2629,7 +2629,7 @@ int DLLEXPORT EN_settankdata(EN_Project p, int index, double elev, int i, j, n, curveIndex = 0; double *Ucf = p->Ucf; - double area, elevation = elev / Ucf[ELEV]; + double area; Stank *Tank = net->Tank; Scurve *curve; @@ -2666,11 +2666,11 @@ int DLLEXPORT EN_settankdata(EN_Project p, int index, double elev, else area = PI * diam * diam / 4.0; // Assign parameters to tank object - net->Node[Tank[j].Node].El = elevation; + net->Node[Tank[j].Node].El = elev / Ucf[ELEV]; Tank[j].A = area / Ucf[ELEV] / Ucf[ELEV]; - Tank[j].H0 = elevation + initlvl / Ucf[ELEV]; - Tank[j].Hmin = elevation + minlvl / Ucf[ELEV]; - Tank[j].Hmax = elevation + maxlvl / Ucf[ELEV]; + Tank[j].H0 = (elev + initlvl) / Ucf[ELEV]; + Tank[j].Hmin = (elev + minlvl) / Ucf[ELEV]; + Tank[j].Hmax = (elev + maxlvl) / Ucf[ELEV]; Tank[j].Vcurve = curveIndex; if (curveIndex == 0) { From 949022ed494ddee363f680c58566ddc7235e7971 Mon Sep 17 00:00:00 2001 From: james uber Date: Fri, 22 May 2020 11:45:52 -0400 Subject: [PATCH 018/233] API access to incontrols() for information about node/link controls participation allowing access to incontrols() for getting information about whether a node or link participates in a simple or rule-based control. --- include/epanet2_enums.h | 6 ++++-- src/epanet.c | 8 ++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index 32d8171..8956d7b 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -63,7 +63,8 @@ typedef enum { EN_TANKVOLUME = 24, //!< Current computed tank volume (read only) EN_MAXVOLUME = 25, //!< Tank maximum volume (read only) EN_CANOVERFLOW = 26, //!< Tank can overflow (= 1) or not (= 0) - EN_DEMANDDEFICIT = 27 //!< Amount that full demand is reduced under PDA (read only) + EN_DEMANDDEFICIT = 27,//!< Amount that full demand is reduced under PDA (read only) + EN_NODE_INCONTROL = 28 //!< Is present in any simple or rule-based control (= 1) or not (= 0) } EN_NodeProperty; /// Link properties @@ -94,7 +95,8 @@ typedef enum { EN_PUMP_HCURVE = 19, //!< Pump head v. flow curve index EN_PUMP_ECURVE = 20, //!< Pump efficiency v. flow curve index EN_PUMP_ECOST = 21, //!< Pump average energy price - EN_PUMP_EPAT = 22 //!< Pump energy price time pattern index + EN_PUMP_EPAT = 22, //!< Pump energy price time pattern index + EN_LINK_INCONTROL = 23 //!< Is present in any simple or rule-based control (= 1) or not (= 0) } EN_LinkProperty; /// Time parameters diff --git a/src/epanet.c b/src/epanet.c index 46e7211..04d74af 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2254,6 +2254,10 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val (hyd->NodeDemand[index] - hyd->EmitterFlow[index])) * Ucf[FLOW]; break; + case EN_NODE_INCONTROL: + v = (double)incontrols(p, NODE, index); + break; + default: return 251; } @@ -3787,6 +3791,10 @@ int DLLEXPORT EN_getlinkvalue(EN_Project p, int index, int property, double *val } break; + case EN_LINK_INCONTROL: + v = (double)incontrols(p, LINK, index); + break; + default: return 251; } From e7ccf5281f5329b8715bec1596a92490c7d13623 Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Fri, 22 May 2020 21:43:14 +0300 Subject: [PATCH 019/233] Update include files --- include/epanet2.bas | 3 ++- include/epanet2.pas | 5 +++-- include/epanet2.vb | 7 +++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/include/epanet2.bas b/include/epanet2.bas index 1d6072c..b786bc5 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -25,7 +25,6 @@ Public Const EN_SOURCEMASS = 13 Public Const EN_INITVOLUME = 14 Public Const EN_MIXMODEL = 15 Public Const EN_MIXZONEVOL = 16 - Public Const EN_TANKDIAM = 17 Public Const EN_MINVOLUME = 18 Public Const EN_VOLCURVE = 19 @@ -37,6 +36,7 @@ Public Const EN_TANKVOLUME = 24 Public Const EN_MAXVOLUME = 25 Public Const EN_CANOVERFLOW = 26 Public Const EN_DEMANDDEFICIT = 27 +Public Const EN_NODE_INCONTROL = 28 Public Const EN_DIAMETER = 0 ' Link parameters Public Const EN_LENGTH = 1 @@ -61,6 +61,7 @@ Public Const EN_PUMP_HCURVE = 19 Public Const EN_PUMP_ECURVE = 20 Public Const EN_PUMP_ECOST = 21 Public Const EN_PUMP_EPAT = 22 +Public Const EN_LINK_INCONTROL = 23 Public Const EN_DURATION = 0 ' Time parameters Public Const EN_HYDSTEP = 1 diff --git a/include/epanet2.pas b/include/epanet2.pas index a532134..c1182ff 100644 --- a/include/epanet2.pas +++ b/include/epanet2.pas @@ -31,7 +31,6 @@ const EN_INITVOLUME = 14; EN_MIXMODEL = 15; EN_MIXZONEVOL = 16; - EN_TANKDIAM = 17; EN_MINVOLUME = 18; EN_VOLCURVE = 19; @@ -42,7 +41,8 @@ const EN_TANKVOLUME = 24; EN_MAXVOLUME = 25; EN_CANOVERFLOW = 26; - EN_DEMANDDEFICIT = 27; + EN_DEMANDDEFICIT = 27; + EN_NODE_INCONTROL = 28; EN_DIAMETER = 0; { Link parameters } EN_LENGTH = 1; @@ -67,6 +67,7 @@ const EN_PUMP_ECURVE = 20; EN_PUMP_ECOST = 21; EN_PUMP_EPAT = 22; + EN_LINK_INCONTROL = 23; EN_DURATION = 0; { Time parameters } EN_HYDSTEP = 1; diff --git a/include/epanet2.vb b/include/epanet2.vb index bfe65c2..0b84386 100644 --- a/include/epanet2.vb +++ b/include/epanet2.vb @@ -29,7 +29,6 @@ Public Const EN_SOURCEMASS = 13 Public Const EN_INITVOLUME = 14 Public Const EN_MIXMODEL = 15 Public Const EN_MIXZONEVOL = 16 - Public Const EN_TANKDIAM = 17 Public Const EN_MINVOLUME = 18 Public Const EN_VOLCURVE = 19 @@ -37,11 +36,11 @@ Public Const EN_MINLEVEL = 20 Public Const EN_MAXLEVEL = 21 Public Const EN_MIXFRACTION = 22 Public Const EN_TANK_KBULK = 23 - Public Const EN_TANKVOLUME = 24 Public Const EN_MAXVOLUME = 25 Public Const EN_CANOVERFLOW = 26 -Public Const EN_DEMANDDEFICIT = 27 +Public Const EN_DEMANDDEFICIT = 27 +Public Const EN_NODE_INCONTROL = 28 Public Const EN_DIAMETER = 0 ' Link parameters Public Const EN_LENGTH = 1 @@ -59,7 +58,6 @@ Public Const EN_SETTING = 12 Public Const EN_ENERGY = 13 Public Const EN_LINKQUAL = 14 Public Const EN_LINKPATTERN = 15 - Public Const EN_PUMP_STATE = 16 Public Const EN_PUMP_EFFIC = 17 Public Const EN_PUMP_POWER = 18 @@ -67,6 +65,7 @@ Public Const EN_PUMP_HCURVE = 19 Public Const EN_PUMP_ECURVE = 20 Public Const EN_PUMP_ECOST = 21 Public Const EN_PUMP_EPAT = 22 +Public Const EN_LINK_INCONTROL = 23 Public Const EN_DURATION = 0 ' Time parameters Public Const EN_HYDSTEP = 1 From 532f89d14bd45f9447a68a3b38301bbbf96ab332 Mon Sep 17 00:00:00 2001 From: mariosmsk Date: Thu, 25 Jun 2020 20:11:27 +0300 Subject: [PATCH 020/233] Net1.inp have 0 MinorLoss / GUI accepts values zero for MINORLOSS. Similar to the parameter Power of pumps --- src/epanet.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 04d74af..5e6b974 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -3862,7 +3862,7 @@ int DLLEXPORT EN_setlinkvalue(EN_Project p, int index, int property, double valu case EN_MINORLOSS: if (Link[index].Type != PUMP) { - if (value <= 0.0) return 211; + if (value < 0.0) return 211; Link[index].Km = 0.02517 * value / SQR(Link[index].Diam) / SQR(Link[index].Diam); } @@ -3953,7 +3953,7 @@ int DLLEXPORT EN_setlinkvalue(EN_Project p, int index, int property, double valu case EN_PUMP_POWER: if (Link[index].Type == PUMP) { - if (value <= 0.0) return 211; + if (value < 0.0) return 211; pumpIndex = findpump(&p->network, index); net->Pump[pumpIndex].Ptype = CONST_HP; net->Pump[pumpIndex].Hcurve = 0; From e0745e9dc534a67fe94e3f9f9e632c22530e1fbe Mon Sep 17 00:00:00 2001 From: mariosmsk Date: Thu, 25 Jun 2020 20:22:12 +0300 Subject: [PATCH 021/233] Update epanet.c --- src/epanet.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/epanet.c b/src/epanet.c index 5e6b974..f2e33e4 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -3953,7 +3953,7 @@ int DLLEXPORT EN_setlinkvalue(EN_Project p, int index, int property, double valu case EN_PUMP_POWER: if (Link[index].Type == PUMP) { - if (value < 0.0) return 211; + if (value <= 0.0) return 211; pumpIndex = findpump(&p->network, index); net->Pump[pumpIndex].Ptype = CONST_HP; net->Pump[pumpIndex].Hcurve = 0; From 71a733ed85cc89e77267cb578c07394a7464c8a3 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Fri, 10 Jul 2020 15:42:34 -0400 Subject: [PATCH 022/233] Add missing break statement after update from dev --- ReleaseNotes2_3.md | 4 ++-- src/epanet.c | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 1f922fc..83d49c2 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -3,9 +3,9 @@ This document describes the changes and updates that have been made in version 2.3 of EPANET. - - The check for at least two nodes, one tank/reservoir and no unconnected junction nodes was moved from `EN_open` to `EN_openH` and `EN_openQ` so that partial network data files to be opened by the toolkit. + - The check for at least two nodes, one tank/reservoir and no unconnected junction nodes was moved from `EN_open` to `EN_openH` and `EN_openQ` so that partial network data files could be opened by the toolkit. - A `EN_setcurvetype` function was added to allow API clients to set a curve's type (e.g., `EN_PUMP_CURVE,` `EN_VOLUME_CURVE,` etc.). - - A `EN_setvertex` function was added to allow API clients to change the coordinates of a link's vertex. + - A `EN_setvertex` function was added to allow API clients to change the coordinates of a single link vertex. - The index of a General Purpose Valve's (GPV's) head loss curve was added to the list of editable Link Properties using the symbolic constant name `EN_GPV_CURVE`. - The `EN_getlinkvalue` and `EN_setlinkvalue` functions were updated to get and set the value of `EN_GPV_CURVE`. diff --git a/src/epanet.c b/src/epanet.c index 00c0f41..47882ba 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -3796,6 +3796,7 @@ int DLLEXPORT EN_getlinkvalue(EN_Project p, int index, int property, double *val { v = Link[index].Kc; } + break; case EN_LINK_INCONTROL: v = (double)incontrols(p, LINK, index); From 951c7ce727208278a327b0dcab720055c2ff1fb7 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sat, 11 Jul 2020 17:12:49 -0400 Subject: [PATCH 023/233] Refactor tank mixing zone volume Addresses issue #597. --- src/epanet.c | 21 +++++++-------------- src/inpfile.c | 2 +- src/input1.c | 1 - src/input3.c | 4 ++-- src/qualreact.c | 2 +- src/qualroute.c | 2 +- src/types.h | 4 ++-- 7 files changed, 14 insertions(+), 22 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 47882ba..be8c83d 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1847,7 +1847,7 @@ int DLLEXPORT EN_addnode(EN_Project p, char *id, int nodeType, int *index) tank->Pat = 0; tank->Vcurve = 0; tank->MixModel = 0; - tank->V1max = 10000; + tank->V1frac = 1; tank->CanOverflow = FALSE; } net->Nnodes++; @@ -2164,7 +2164,9 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val case EN_MIXZONEVOL: v = 0.0; - if (index > nJuncs) v = Tank[index - nJuncs].V1max * Ucf[VOLUME]; + if (index > nJuncs) + v = Tank[index - nJuncs].V1frac * Tank[index - nJuncs].Vmax * + Ucf[VOLUME]; break; case EN_DEMAND: @@ -2224,9 +2226,9 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val case EN_MIXFRACTION: v = 1.0; - if (index > nJuncs && Tank[index - nJuncs].Vmax > 0.0) + if (index > nJuncs) { - v = Tank[index - nJuncs].V1max / Tank[index - nJuncs].Vmax; + v = Tank[index - nJuncs].V1frac; } break; @@ -2293,7 +2295,6 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu int i, j, n; Psource source; double hTmp; - double vTmp; if (!p->Openflag) return 102; if (index <= 0 || index > nNodes) return 203; @@ -2418,9 +2419,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu // shape below Hmin. Vmin can always be changed by setting // EN_MINVOLUME in a subsequent function call. Tank[j].V0 = tankvolume(p, j, Tank[j].H0); // new init. volume - vTmp = Tank[j].Vmax; // old max. volume Tank[j].Vmax = tankvolume(p, j, Tank[j].Hmax); // new max. volume - Tank[j].V1max *= Tank[j].Vmax / vTmp; // new mix zone volume break; case EN_MINVOLUME: @@ -2450,9 +2449,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu // Since Vmin changes the other volumes need updating Tank[j].V0 = tankvolume(p, j, Tank[j].H0); // new init. volume - vTmp = Tank[j].Vmax; // old max. volume Tank[j].Vmax = tankvolume(p, j, Tank[j].Hmax); // new max. volume - Tank[j].V1max *= Tank[j].Vmax / vTmp; // new mix zone volume } break; @@ -2477,9 +2474,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu Tank[j].Vcurve = i; // assign curve to tank Tank[j].Vmin = tankvolume(p, j, Tank[j].Hmin); // new min. volume Tank[j].V0 = tankvolume(p, j, Tank[j].H0); // new init. volume - vTmp = Tank[j].Vmax; // old max. volume Tank[j].Vmax = tankvolume(p, j, Tank[j].Hmax); // new max. volume - Tank[j].V1max *= Tank[j].Vmax / vTmp; // new mix zone volume Tank[j].A = (curve->Y[n] - curve->Y[0]) / // nominal area (curve->X[n] - curve->X[0]); break; @@ -2521,9 +2516,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu if (value > curve->X[n]) return 225; // new level is off curve } Tank[j].Hmax = hTmp; // new max. head - vTmp = Tank[j].Vmax; // old max. volume Tank[j].Vmax = tankvolume(p, j, hTmp); // new max. volume - Tank[j].V1max *= Tank[j].Vmax / vTmp; // new mix zone volume break; case EN_MIXMODEL: @@ -2542,7 +2535,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu j = index - nJuncs; if (Tank[j].A > 0.0) { - Tank[j].V1max = value * Tank[j].Vmax; + Tank[j].V1frac = value; } break; diff --git a/src/inpfile.c b/src/inpfile.c index 39e361f..c8eb1a9 100644 --- a/src/inpfile.c +++ b/src/inpfile.c @@ -523,7 +523,7 @@ int saveinpfile(Project *pr, const char *fname) tank = &net->Tank[i]; if (tank->A == 0.0) continue; fprintf(f, "\n %-31s %-8s %12.4f", net->Node[tank->Node].ID, - MixTxt[tank->MixModel], (tank->V1max / tank->Vmax)); + MixTxt[tank->MixModel], tank->V1frac); } // Write [REACTIONS] section diff --git a/src/input1.c b/src/input1.c index 10a6f95..e79da83 100644 --- a/src/input1.c +++ b/src/input1.c @@ -588,7 +588,6 @@ void convertunits(Project *pr) tank->Kb /= SECperDAY; tank->V = tank->V0; tank->C = node->C0; - tank->V1max *= tank->Vmax; } // Convert hydraulic convergence criteria diff --git a/src/input3.c b/src/input3.c index 28570fc..e89d6e1 100644 --- a/src/input3.c +++ b/src/input3.c @@ -252,7 +252,7 @@ int tankdata(Project *pr) tank->Vcurve = curve; tank->MixModel = MIX1; // Completely mixed - tank->V1max = 1.0; // Mixing compartment size fraction + tank->V1frac = 1.0; // Mixing compartment size fraction return 0; } @@ -1288,7 +1288,7 @@ int mixingdata(Project *pr) i = j - net->Njuncs; if (net->Tank[i].A == 0.0) return 0; net->Tank[i].MixModel = (char)m; - net->Tank[i].V1max = v; + net->Tank[i].V1frac = v; return 0; } diff --git a/src/qualreact.c b/src/qualreact.c index 1042527..1fc5710 100644 --- a/src/qualreact.c +++ b/src/qualreact.c @@ -525,7 +525,7 @@ void tankmix2(Project *pr, int i, double vin, double win, double vnet) if (mixzone == NULL || stagzone == NULL) return; // Full mixing zone volume - vmz = tank->V1max; + vmz = tank->V1frac * tank->Vmax; // Tank is filling vt = 0.0; diff --git a/src/qualroute.c b/src/qualroute.c index 592f92f..b71f218 100644 --- a/src/qualroute.c +++ b/src/qualroute.c @@ -612,7 +612,7 @@ void initsegs(Project *pr) if (net->Tank[j].MixModel == MIX2) { // ... mixing zone segment - v1 = MAX(0, v - net->Tank[j].V1max); + v1 = MAX(0, v - net->Tank[j].V1frac * net->Tank[j].Vmax); qual->FirstSeg[k]->v = v1; // ... stagnant zone segment diff --git a/src/types.h b/src/types.h index 50dc50a..902a22d 100755 --- a/src/types.h +++ b/src/types.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 10/29/2019 + Last Updated: 07/11/2020 ****************************************************************************** */ @@ -428,7 +428,7 @@ typedef struct // Tank Object int Pat; // fixed grade time pattern int Vcurve; // volume v. elev. curve index MixType MixModel; // type of mixing model - double V1max; // mixing compartment size + double V1frac; // mixing compartment fraction int CanOverflow; // tank can overflow or not } Stank; From 87d1b2ed7943083bb3665393829cd4a2f9107faf Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 15 Jul 2020 14:58:58 -0400 Subject: [PATCH 024/233] Update modules.dox --- doc/modules.dox | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/modules.dox b/doc/modules.dox index ca2ba4f..249c0ec 100644 --- a/doc/modules.dox +++ b/doc/modules.dox @@ -197,6 +197,7 @@ These are the toolkit's enumerated types whose members are used as function argu @fn int EN_setheadcurveindex(EN_Project ph, int pumpIndex, int curveIndex) @fn int EN_getvertexcount(EN_Project ph, int index, int *count) @fn int EN_getvertex(EN_Project ph, int index, int vertex, double *x, double *y) +@fn int EN_setvertex(EN_Project ph, int index, int vertex, double x, double y) @fn int EN_setvertices(EN_Project ph, int index, double *x, double *y, int count) @} */ @@ -227,6 +228,7 @@ These are the toolkit's enumerated types whose members are used as function argu @fn int EN_setcurveid(EN_Project ph, int index, char *id) @fn int EN_getcurvelen(EN_Project ph, int index, int *len) @fn int EN_getcurvetype(EN_Project ph, int index, int *type) +@fn int EN_setcurvetype(EN_Project ph, int index, int type) @fn int EN_getcurvevalue(EN_Project ph, int curveIndex, int pointIndex, double *x, double *y) @fn int EN_setcurvevalue(EN_Project ph, int curveIndex, int pointIndex, double x, double y) @fn int EN_getcurve(EN_Project ph, int curveIndex, char* id, int *nPoints, double **xValues, double **yValues) From 80b30272cb0990ae5db6a6b5dd0430c750553be9 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Thu, 16 Jul 2020 15:23:26 -0400 Subject: [PATCH 025/233] modifies function declarations with unambiguous "out_" prefixes where output parameters are passed. This is a minor change that does not affect the API or any function implementations, but has great benefits to both readability and SWIG-wrapping. (#605) Co-authored-by: Sam Hatchett --- include/epanet2_2.h | 110 ++++++++++++++++++++++---------------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/include/epanet2_2.h b/include/epanet2_2.h index 4760986..18ef127 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -161,7 +161,7 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param object a type of object (either EN_NODE, EN_LINK, EN_TIMEPAT or EN_CURVE) @param index the object's index starting from 1 - @param[out] comment the comment string assigned to the object + @param comment the comment string assigned to the object @return an error code */ int DLLEXPORT EN_setcomment(EN_Project ph, int object, int index, char *comment); @@ -173,7 +173,7 @@ typedef struct Project *EN_Project; @param[out] count number of objects of the specified type @return an error code */ - int DLLEXPORT EN_getcount(EN_Project ph, int object, int *count); + int DLLEXPORT EN_getcount(EN_Project ph, int object, int *out_count); /** @brief Saves a project's data to an EPANET-formatted text file. @@ -299,7 +299,7 @@ typedef struct Project *EN_Project; See ::EN_nextH for an example of using this function. */ - int DLLEXPORT EN_runH(EN_Project ph, long *currentTime); + int DLLEXPORT EN_runH(EN_Project ph, long *out_currentTime); /** @brief Determines the length of time until the next hydraulic event occurs in an @@ -333,7 +333,7 @@ typedef struct Project *EN_Project; EN_closeH(ph); \endcode */ - int DLLEXPORT EN_nextH(EN_Project ph, long *tStep); + int DLLEXPORT EN_nextH(EN_Project ph, long *out_tStep); /** @brief Transfers a project's hydraulics results from its temporary hydraulics file @@ -449,7 +449,7 @@ typedef struct Project *EN_Project; hydraulic analysis that preceded the water quality analysis. Treat it as a read-only variable. */ - int DLLEXPORT EN_runQ(EN_Project ph, long *currentTime); + int DLLEXPORT EN_runQ(EN_Project ph, long *out_currentTime); /** @brief Advances a water quality simulation over the time until the next hydraulic event. @@ -481,7 +481,7 @@ typedef struct Project *EN_Project; EN_closeQ(ph); \endcode */ - int DLLEXPORT EN_nextQ(EN_Project ph, long *tStep); + int DLLEXPORT EN_nextQ(EN_Project ph, long *out_tStep); /** @brief Advances a water quality simulation by a single water quality time step. @@ -497,7 +497,7 @@ typedef struct Project *EN_Project; Use the argument \b timeLeft to determine when no more calls to ::EN_runQ are needed because the end of the simulation period has been reached (i.e., when \b timeLeft = 0). */ - int DLLEXPORT EN_stepQ(EN_Project ph, long *timeLeft); + int DLLEXPORT EN_stepQ(EN_Project ph, long *out_timeLeft); /** @brief Closes the water quality solver, freeing all of its allocated memory. @@ -616,7 +616,7 @@ typedef struct Project *EN_Project; The version number is to be interpreted with implied decimals, i.e., "20100" == "2(.)01(.)00" */ - int DLLEXPORT EN_getversion(int *version); + int DLLEXPORT EN_getversion(int *out_version); /** @brief Returns the text of an error message generated by an error code. @@ -636,7 +636,7 @@ typedef struct Project *EN_Project; @param[out] value the value of the statistic. @return an error code */ - int DLLEXPORT EN_getstatistic(EN_Project ph, int type, double* value); + int DLLEXPORT EN_getstatistic(EN_Project ph, int type, double* out_value); /** @brief Retrieves the order in which a node or link appears in an @ref OutFile "output file". @@ -652,7 +652,7 @@ typedef struct Project *EN_Project; after the order of nodes or links in a network's database has been changed due to editing operations. */ - int DLLEXPORT EN_getresultindex(EN_Project ph, int type, int index, int *value); + int DLLEXPORT EN_getresultindex(EN_Project ph, int type, int index, int *out_value); /******************************************************************** @@ -667,7 +667,7 @@ typedef struct Project *EN_Project; @param[out] value the current value of the option. @return an error code */ - int DLLEXPORT EN_getoption(EN_Project ph, int option, double *value); + int DLLEXPORT EN_getoption(EN_Project ph, int option, double *out_value); /** @brief Sets the value for an anlysis option. @@ -688,7 +688,7 @@ typedef struct Project *EN_Project; Flow units in liters or cubic meters implies that SI metric units are used for all other quantities in addition to flow. Otherwise US Customary units are employed. */ - int DLLEXPORT EN_getflowunits(EN_Project ph, int *units); + int DLLEXPORT EN_getflowunits(EN_Project ph, int *out_units); /** @brief Sets a project's flow units. @@ -708,7 +708,7 @@ typedef struct Project *EN_Project; @param[out] value the current value of the time parameter (in seconds). @return an error code. */ - int DLLEXPORT EN_gettimeparam(EN_Project ph, int param, long *value); + int DLLEXPORT EN_gettimeparam(EN_Project ph, int param, long *out_value); /** @brief Sets the value of a time parameter. @@ -728,8 +728,8 @@ typedef struct Project *EN_Project; @param[out] traceNode index of the node being traced (if applicable). @return an error code. */ - int DLLEXPORT EN_getqualinfo(EN_Project ph, int *qualType, char *out_chemName, - char *out_chemUnits, int *traceNode); + int DLLEXPORT EN_getqualinfo(EN_Project ph, int *out_qualType, char *out_chemName, + char *out_chemUnits, int *out_traceNode); /** @brief Retrieves the type of water quality analysis to be run. @@ -738,7 +738,7 @@ typedef struct Project *EN_Project; @param[out] traceNode the index of node being traced, if qualType = EN_TRACE. @return an error code. */ - int DLLEXPORT EN_getqualtype(EN_Project ph, int *qualType, int *traceNode); + int DLLEXPORT EN_getqualtype(EN_Project ph, int *out_qualType, int *out_traceNode); /** @brief Sets the type of water quality analysis to run. @@ -773,7 +773,7 @@ typedef struct Project *EN_Project; When a new node is created all of its properties (see @ref EN_NodeProperty) are set to 0. */ - int DLLEXPORT EN_addnode(EN_Project ph, char *id, int nodeType, int *index); + int DLLEXPORT EN_addnode(EN_Project ph, char *id, int nodeType, int *out_index); /** @brief Deletes a node from a project. @@ -797,7 +797,7 @@ typedef struct Project *EN_Project; @param[out] index the node's index (starting from 1). @return an error code */ - int DLLEXPORT EN_getnodeindex(EN_Project ph, char *id, int *index); + int DLLEXPORT EN_getnodeindex(EN_Project ph, char *id, int *out_index); /** @brief Gets the ID name of a node given its index. @@ -828,7 +828,7 @@ typedef struct Project *EN_Project; @param[out] nodeType the node's type (see @ref EN_NodeType). @return an error code. */ - int DLLEXPORT EN_getnodetype(EN_Project ph, int index, int *nodeType); + int DLLEXPORT EN_getnodetype(EN_Project ph, int index, int *out_nodeType); /** @brief Retrieves a property value for a node. @@ -841,7 +841,7 @@ typedef struct Project *EN_Project; Values are returned in units that depend on the units used for flow rate (see @ref Units). */ - int DLLEXPORT EN_getnodevalue(EN_Project ph, int index, int property, double *value); + int DLLEXPORT EN_getnodevalue(EN_Project ph, int index, int property, double *out_value); /** @brief Sets a property value for a node. @@ -895,7 +895,7 @@ typedef struct Project *EN_Project; @param[out] y the node's Y-coordinate value. @return an error code. */ - int DLLEXPORT EN_getcoord(EN_Project ph, int index, double *x, double *y); + int DLLEXPORT EN_getcoord(EN_Project ph, int index, double *out_x, double *out_y); /** @brief Sets the (x,y) coordinates of a node. @@ -924,8 +924,8 @@ typedef struct Project *EN_Project; Parameters pmin, preq, and \b pexp are only used when the demand model is \b EN_PDA. */ - int DLLEXPORT EN_getdemandmodel(EN_Project ph, int *type, double *pmin, - double *preq, double *pexp); + int DLLEXPORT EN_getdemandmodel(EN_Project ph, int *out_type, double *out_pmin, + double *out_preq, double *out_pexp); /** @brief Sets the type of demand model to use and its parameters. @@ -983,7 +983,7 @@ typedef struct Project *EN_Project; @return an error code */ int DLLEXPORT EN_getdemandindex(EN_Project ph, int nodeIndex, char *demandName, - int *demandIndex); + int *out_demandIndex); /** @brief Retrieves the number of demand categories for a junction node. @@ -992,7 +992,7 @@ typedef struct Project *EN_Project; @param[out] numDemands the number of demand categories assigned to the node. @return an error code. */ - int DLLEXPORT EN_getnumdemands(EN_Project ph, int nodeIndex, int *numDemands); + int DLLEXPORT EN_getnumdemands(EN_Project ph, int nodeIndex, int *out_numDemands); /** @brief Gets the base demand for one of a node's demand categories. @@ -1003,7 +1003,7 @@ typedef struct Project *EN_Project; @return an error code. */ int DLLEXPORT EN_getbasedemand(EN_Project ph, int nodeIndex, int demandIndex, - double *baseDemand); + double *out_baseDemand); /** @brief Sets the base demand for one of a node's demand categories. @@ -1028,7 +1028,7 @@ typedef struct Project *EN_Project; demand category. */ int DLLEXPORT EN_getdemandpattern(EN_Project ph, int nodeIndex, int demandIndex, - int *patIndex); + int *out_patIndex); /** @brief Sets the index of a time pattern used for one of a node's demand categories. @@ -1099,7 +1099,7 @@ typedef struct Project *EN_Project; See @ref EN_LinkProperty. */ int DLLEXPORT EN_addlink(EN_Project ph, char *id, int linkType, char *fromNode, - char *toNode, int *index); + char *toNode, int *out_index); /** @brief Deletes a link from the project. @@ -1121,7 +1121,7 @@ typedef struct Project *EN_Project; @param[out] index the link's index (starting from 1). @return an error code. */ - int DLLEXPORT EN_getlinkindex(EN_Project ph, char *id, int *index); + int DLLEXPORT EN_getlinkindex(EN_Project ph, char *id, int *out_index); /** @brief Gets the ID name of a link given its index. @@ -1152,7 +1152,7 @@ typedef struct Project *EN_Project; @param[out] linkType the link's type (see @ref EN_LinkType). @return an error code. */ - int DLLEXPORT EN_getlinktype(EN_Project ph, int index, int *linkType); + int DLLEXPORT EN_getlinktype(EN_Project ph, int index, int *out_linkType); /** @brief Changes a link's type. @@ -1177,7 +1177,7 @@ typedef struct Project *EN_Project; @param[out] node2 the index of the link's end node (starting from 1). @return an error code. */ - int DLLEXPORT EN_getlinknodes(EN_Project ph, int index, int *node1, int *node2); + int DLLEXPORT EN_getlinknodes(EN_Project ph, int index, int *out_node1, int *out_node2); /** @brief Sets the indexes of a link's start- and end-nodes. @@ -1199,7 +1199,7 @@ typedef struct Project *EN_Project; Values are returned in units that depend on the units used for flow rate (see @ref Units). */ - int DLLEXPORT EN_getlinkvalue(EN_Project ph, int index, int property, double *value); + int DLLEXPORT EN_getlinkvalue(EN_Project ph, int index, int property, double *out_value); /** @brief Sets a property value for a link. @@ -1235,7 +1235,7 @@ typedef struct Project *EN_Project; @param[out] count the number of vertex points that describe the link's shape. @return an error code. */ - int DLLEXPORT EN_getvertexcount(EN_Project ph, int index, int *count); + int DLLEXPORT EN_getvertexcount(EN_Project ph, int index, int *out_count); /** @brief Retrieves the coordinates of a vertex point assigned to a link. @@ -1246,7 +1246,7 @@ typedef struct Project *EN_Project; @param[out] y the vertex's Y-coordinate value. @return an error code. */ - int DLLEXPORT EN_getvertex(EN_Project ph, int index, int vertex, double *x, double *y); + int DLLEXPORT EN_getvertex(EN_Project ph, int index, int vertex, double *out_x, double *out_y); /** @brief Sets the coordinates of a vertex point assigned to a link. @@ -1285,7 +1285,7 @@ typedef struct Project *EN_Project; @param[out] pumpType the type of head curve used by the pump (see @ref EN_PumpType). @return an error code. */ - int DLLEXPORT EN_getpumptype(EN_Project ph, int linkIndex, int *pumpType); + int DLLEXPORT EN_getpumptype(EN_Project ph, int linkIndex, int *out_pumpType); /** @brief Retrieves the curve assigned to a pump's head curve. @@ -1294,7 +1294,7 @@ typedef struct Project *EN_Project; @param[out] curveIndex the index of the curve assigned to the pump's head curve. @return an error code. */ - int DLLEXPORT EN_getheadcurveindex(EN_Project ph, int linkIndex, int *curveIndex); + int DLLEXPORT EN_getheadcurveindex(EN_Project ph, int linkIndex, int *out_curveIndex); /** @brief Assigns a curve to a pump's head curve. @@ -1336,7 +1336,7 @@ typedef struct Project *EN_Project; @param[out] index the time pattern's index (starting from 1). @return an error code. */ - int DLLEXPORT EN_getpatternindex(EN_Project ph, char *id, int *index); + int DLLEXPORT EN_getpatternindex(EN_Project ph, char *id, int *out_index); /** @brief Retrieves the ID name of a time pattern given its index. @@ -1367,7 +1367,7 @@ typedef struct Project *EN_Project; @param[out] len the number of time periods in the pattern. @return an error code. */ - int DLLEXPORT EN_getpatternlen(EN_Project ph, int index, int *len); + int DLLEXPORT EN_getpatternlen(EN_Project ph, int index, int *out_len); /** @brief Retrieves a time pattern's factor for a given time period. @@ -1377,7 +1377,7 @@ typedef struct Project *EN_Project; @param[out] value the pattern factor for the given time period. @return an error code. */ - int DLLEXPORT EN_getpatternvalue(EN_Project ph, int index, int period, double *value); + int DLLEXPORT EN_getpatternvalue(EN_Project ph, int index, int period, double *out_value); /** @brief Sets a time pattern's factor for a given time period. @@ -1396,7 +1396,7 @@ typedef struct Project *EN_Project; @param[out] value The average of all of the time pattern's factors. @return an error code. */ - int DLLEXPORT EN_getaveragepatternvalue(EN_Project ph, int index, double *value); + int DLLEXPORT EN_getaveragepatternvalue(EN_Project ph, int index, double *out_value); /** @brief Sets the pattern factors for a given time pattern. @@ -1444,7 +1444,7 @@ typedef struct Project *EN_Project; @param[out] index The curve's index (starting from 1). @return an error code. */ - int DLLEXPORT EN_getcurveindex(EN_Project ph, char *id, int *index); + int DLLEXPORT EN_getcurveindex(EN_Project ph, char *id, int *out_index); /** @brief Retrieves the ID name of a curve given its index. @@ -1475,7 +1475,7 @@ typedef struct Project *EN_Project; @param[out] len The number of data points assigned to the curve. @return an error code. */ - int DLLEXPORT EN_getcurvelen(EN_Project ph, int index, int *len); + int DLLEXPORT EN_getcurvelen(EN_Project ph, int index, int *out_len); /** @brief Retrieves a curve's type. @@ -1484,7 +1484,7 @@ typedef struct Project *EN_Project; @param[out] type the curve's type (see @ref EN_CurveType). @return an error code. */ - int DLLEXPORT EN_getcurvetype(EN_Project ph, int index, int *type); + int DLLEXPORT EN_getcurvetype(EN_Project ph, int index, int *out_type); /** @brief Sets a curve's type. @@ -1505,7 +1505,7 @@ typedef struct Project *EN_Project; @return an error code. */ int DLLEXPORT EN_getcurvevalue(EN_Project ph, int curveIndex, int pointIndex, - double *x, double *y); + double *out_x, double *out_y); /** @brief Sets the value of a single data point for a curve. @@ -1533,8 +1533,8 @@ typedef struct Project *EN_Project; to hold `nPoints` number of data points and for sizing `id` to hold at least @ref EN_SizeLimits "EN_MAXID" characters. */ - int DLLEXPORT EN_getcurve(EN_Project ph, int index, char *out_id, int *nPoints, - double *xValues, double *yValues); + int DLLEXPORT EN_getcurve(EN_Project ph, int index, char *out_id, int *out_nPoints, + double *out_xValues, double *out_yValues); /** @brief assigns a set of data points to a curve. @@ -1573,7 +1573,7 @@ typedef struct Project *EN_Project; @return an error code. */ int DLLEXPORT EN_addcontrol(EN_Project ph, int type, int linkIndex, - double setting, int nodeIndex, double level, int *index); + double setting, int nodeIndex, double level, int *out_index); /** @brief Deletes an existing simple control. @@ -1596,8 +1596,8 @@ typedef struct Project *EN_Project; that triggers the control. @return an error code. */ - int DLLEXPORT EN_getcontrol(EN_Project ph, int index, int *type, int *linkIndex, - double *setting, int *nodeIndex, double *level); + int DLLEXPORT EN_getcontrol(EN_Project ph, int index, int *out_type, int *out_linkIndex, + double *out_setting, int *out_nodeIndex, double *out_level); /** @brief Sets the properties of an existing simple control. @@ -1651,8 +1651,8 @@ typedef struct Project *EN_Project; @param[out] priority the rule's priority value. @return an error code. */ - int DLLEXPORT EN_getrule(EN_Project ph, int index, int *nPremises, - int *nThenActions, int *nElseActions, double *priority); + int DLLEXPORT EN_getrule(EN_Project ph, int index, int *out_nPremises, + int *out_nThenActions, int *out_nElseActions, double *out_priority); /** @brief Gets the ID name of a rule-based control given its index. @@ -1682,8 +1682,8 @@ typedef struct Project *EN_Project; @return an error code. */ int DLLEXPORT EN_getpremise(EN_Project ph, int ruleIndex, int premiseIndex, - int *logop, int *object, int *objIndex, int *variable, - int *relop, int *status, double *value); + int *out_logop, int *out_object, int *out_objIndex, int *out_variable, + int *out_relop, int *out_status, double *out_value); /** @brief Sets the properties of a premise in a rule-based control. @@ -1749,7 +1749,7 @@ typedef struct Project *EN_Project; @return an error code. */ int DLLEXPORT EN_getthenaction(EN_Project ph, int ruleIndex, int actionIndex, - int *linkIndex, int *status, double *setting); + int *out_linkIndex, int *out_status, double *out_setting); /** @brief Sets the properties of a THEN action in a rule-based control. @@ -1775,7 +1775,7 @@ typedef struct Project *EN_Project; @return an error code. */ int DLLEXPORT EN_getelseaction(EN_Project ph, int ruleIndex, int actionIndex, - int *linkIndex, int *status, double *setting); + int *out_linkIndex, int *out_status, double *out_setting); /** @brief Sets the properties of an ELSE action in a rule-based control. From 32732dbdd54b3ff6f7576403618ec4f4710c4ab5 Mon Sep 17 00:00:00 2001 From: Alex Sinske Date: Wed, 5 Aug 2020 18:43:17 +0200 Subject: [PATCH 026/233] This solves the garbled error message and optionally adds an improved specific error message, which existed in EPANET 2.1 when a network has unconnected nodes. Another similar case in was code found and corrected with the same pattern, but could not be tested. --- src/errors.dat | 1 + src/input2.c | 3 ++- src/project.c | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/errors.dat b/src/errors.dat index 4768cc3..7e4e5a3 100644 --- a/src/errors.dat +++ b/src/errors.dat @@ -44,6 +44,7 @@ DAT(226,"no head curve or power rating for pump") DAT(227,"invalid head curve for pump") DAT(230,"nonincreasing x-values for curve") DAT(233,"network has unconnected nodes") +DAT(2331,"network has an unconnected node with ID: ") // These errors apply only to API functions DAT(240,"nonexistent source") diff --git a/src/input2.c b/src/input2.c index a4d7fc8..27a0733 100644 --- a/src/input2.c +++ b/src/input2.c @@ -146,6 +146,7 @@ int readdata(Project *pr) char line[MAXLINE + 1], // Line from input data file wline[MAXLINE + 1]; // Working copy of input line + char errmsg[MAXMSG + 1] = ""; int sect, newsect, // Data sections errcode = 0, // Error code inperr, errsum; // Error code & total error count @@ -207,7 +208,7 @@ int readdata(Project *pr) // Check if max. line length exceeded if (strlen(line) >= MAXLINE) { - sprintf(pr->Msg, "%s section: %s", geterrmsg(214, pr->Msg), SectTxt[sect]); + sprintf(pr->Msg, "%s section: %s", geterrmsg(214, errmsg), SectTxt[sect]); writeline(pr, pr->Msg); writeline(pr, line); errsum++; diff --git a/src/project.c b/src/project.c index 8fb9a48..6893488 100644 --- a/src/project.c +++ b/src/project.c @@ -816,13 +816,14 @@ int unlinked(Project *pr) { Network *net = &pr->network; int i, count = 0; + char errmsg[MAXMSG + 1] = ""; for (i = 1; i <= net->Njuncs; i++) { if (pr->network.Adjlist[i] == NULL) { count++; - sprintf(pr->Msg, "Error 233: %s %s", geterrmsg(233, pr->Msg), net->Node[i].ID); + sprintf(pr->Msg, "Error 2331: %s %s", geterrmsg(2331, errmsg), net->Node[i].ID); writeline(pr, pr->Msg); } if (count >= 10) break; From ec11556d88a74526f754d9c0d860f2808b6347d7 Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Mon, 10 Aug 2020 11:20:51 +0300 Subject: [PATCH 027/233] Change error number 2331 to 234 --- src/errors.dat | 2 +- src/project.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/errors.dat b/src/errors.dat index 7e4e5a3..7a18303 100644 --- a/src/errors.dat +++ b/src/errors.dat @@ -44,7 +44,7 @@ DAT(226,"no head curve or power rating for pump") DAT(227,"invalid head curve for pump") DAT(230,"nonincreasing x-values for curve") DAT(233,"network has unconnected nodes") -DAT(2331,"network has an unconnected node with ID: ") +DAT(234,"network has an unconnected node with ID: ") // These errors apply only to API functions DAT(240,"nonexistent source") diff --git a/src/project.c b/src/project.c index 6893488..b470ec3 100644 --- a/src/project.c +++ b/src/project.c @@ -823,7 +823,7 @@ int unlinked(Project *pr) if (pr->network.Adjlist[i] == NULL) { count++; - sprintf(pr->Msg, "Error 2331: %s %s", geterrmsg(2331, errmsg), net->Node[i].ID); + sprintf(pr->Msg, "Error 234: %s %s", geterrmsg(234, errmsg), net->Node[i].ID); writeline(pr, pr->Msg); } if (count >= 10) break; From 35aa9f8e081e7f6d000536bda7779648a6aca60e Mon Sep 17 00:00:00 2001 From: chrisgs Date: Tue, 18 Aug 2020 16:44:33 +0100 Subject: [PATCH 028/233] Fix vmin calculation Multiply area by `Hmin - elevation` instead of just `Hmin`. --- src/epanet.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index be8c83d..0f6fb12 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2411,7 +2411,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu // Since the volume curve no longer applies we assume that the tank's // shape below Hmin is cylindrical and Vmin equals area times Hmin - Tank[j].Vmin = Tank[j].A * Tank[j].Hmin; + Tank[j].Vmin = Tank[j].A * (Tank[j].Hmin - Node[index].El); } // Since tank's area has changed its volumes must be updated // NOTE: For a non-volume curve tank we can't change the Vmin @@ -2444,7 +2444,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu // If the volume supplied by the function is 0 then the tank shape // below Hmin is assumed to be cylindrical and a new Vmin value is // computed. Otherwise Vmin is set to the supplied value. - if (value == 0.0) Tank[j].Vmin = Tank[j].A * Tank[j].Hmin; + if (value == 0.0) Tank[j].Vmin = Tank[j].A * (Tank[j].Hmin - Node[index].El); else Tank[j].Vmin = value / Ucf[VOLUME]; // Since Vmin changes the other volumes need updating @@ -2672,7 +2672,7 @@ int DLLEXPORT EN_settankdata(EN_Project p, int index, double elev, if (curveIndex == 0) { if (minvol > 0.0) Tank[j].Vmin = minvol / Ucf[VOLUME]; - else Tank[j].Vmin = Tank[j].A * Tank[j].Hmin; + else Tank[j].Vmin = Tank[j].A * (Tank[j].Hmin - elev / Ucf[ELEV]); } else Tank[j].Vmin = tankvolume(p, j, Tank[j].Hmin); Tank[j].V0 = tankvolume(p, j, Tank[j].H0); From bca3b99b88d8e0207926b591752841674963a828 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sun, 20 Sep 2020 19:37:15 -0400 Subject: [PATCH 029/233] Fixes error in energy usage for tank pumps --- src/hydraul.c | 36 +++++++++++++++++++++++++++++++----- src/types.h | 2 ++ 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/hydraul.c b/src/hydraul.c index e8e8434..c1a839d 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -39,6 +39,7 @@ void ruletimestep(Project *, long *); void addenergy(Project *, long); void tanklevels(Project *, long); void resetpumpflow(Project *, int); +void getallpumpsenergy(Project *); int openhyd(Project *pr) /* @@ -156,6 +157,8 @@ void inithyd(Project *pr, int initflag) pump->Energy.KwHrsPerFlow = 0.0; pump->Energy.MaxKwatts = 0.0; pump->Energy.TotalCost = 0.0; + pump->Energy.CurrentPower = 0.0; + pump->Energy.CurrentEffic = 0.0; } // Re-position hydraulics file @@ -232,6 +235,9 @@ int nexthyd(Project *pr, long *tstep) long hydstep; // Actual time step int errcode = 0; // Error code + // Compute current power and efficiency of all pumps + getallpumpsenergy(pr); + // Save current results to hydraulics file and // force end of simulation if Haltflag is active if (pr->outfile.Saveflag) errcode = savehyd(pr, &time->Htime); @@ -243,7 +249,7 @@ int nexthyd(Project *pr, long *tstep) if (time->Htime < time->Dur) hydstep = timestep(pr); if (pr->outfile.Saveflag) errcode = savehydstep(pr,&hydstep); - // Compute pumping energy + // Accumulate pumping energy if (time->Dur == 0) addenergy(pr,0); else if (time->Htime < time->Dur) addenergy(pr,hydstep); @@ -902,11 +908,10 @@ void addenergy(Project *pr, long hstep) } else c *= f0; - // Find pump energy & efficiency - getenergy(pr, k, &p, &e); - psum += p; - // Update pump's cumulative statistics + p = pump->Energy.CurrentPower; + e = pump->Energy.CurrentEffic; + psum += p; pump->Energy.TimeOnLine += dt; pump->Energy.Efficiency += e * dt; pump->Energy.KwHrsPerFlow += p / q * dt; @@ -982,6 +987,27 @@ void getenergy(Project *pr, int k, double *kw, double *eff) } +void getallpumpsenergy(Project *pr) +/* +**------------------------------------------------------------- +** Input: none +** Output: none +** Purpose: finds the current power and efficiency for each pump. +**------------------------------------------------------------- +*/ +{ + int j; + Spump *pump; + + for (j = 1; j <= pr->network.Npumps; j++) + { + pump = &(pr->network.Pump[j]); + getenergy(pr, pump->Link, &(pump->Energy.CurrentPower), + &(pump->Energy.CurrentEffic)); + } +} + + void tanklevels(Project *pr, long tstep) /* **---------------------------------------------------------------- diff --git a/src/types.h b/src/types.h index 902a22d..788eb20 100755 --- a/src/types.h +++ b/src/types.h @@ -355,6 +355,8 @@ typedef struct // Energy Usage Object double KwHrs; // total kw-hrs consumed double MaxKwatts; // max. kw consumed double TotalCost; // total pumping cost + double CurrentPower; // current pump power (kw) + double CurrentEffic; // current pump efficiency } Senergy; struct Ssource // Water Quality Source Object From bc0ff50f71cd6a8325db8e4adec7cdbe5e913e67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oscar=20Vegas=20Ni=C3=B1o?= Date: Wed, 30 Sep 2020 15:12:11 +0200 Subject: [PATCH 030/233] Header file for C# --- include/epanet.cs | 662 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 662 insertions(+) create mode 100644 include/epanet.cs diff --git a/include/epanet.cs b/include/epanet.cs new file mode 100644 index 0000000..075b1f0 --- /dev/null +++ b/include/epanet.cs @@ -0,0 +1,662 @@ +//using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +//epanet2.cs[By Oscar Vegas] +//Last updated on 17/09/2020 + +//Declarations of functions in the EPANET PROGRAMMERs TOOLKIT +//(EPANET2.DLL) for use with Visual Basic (C#) + + +namespace EpanetCSharpLibrary +{ + + public static class Epanet + { + + public const string EPANETDLL = "epanet2.dll"; + + //These are codes used by the DLL functions + public const int EN_ELEVATION = 0; // Node parameters + public const int EN_BASEDEMAND = 1; + public const int EN_PATTERN = 2; + public const int EN_EMITTER = 3; + public const int EN_INITQUAL = 4; + public const int EN_SOURCEQUAL = 5; + public const int EN_SOURCEPAT = 6; + public const int EN_SOURCETYPE = 7; + public const int EN_TANKLEVEL = 8; + public const int EN_DEMAND = 9; + public const int EN_HEAD = 10; + public const int EN_PRESSURE = 11; + public const int EN_QUALITY = 12; + public const int EN_SOURCEMASS = 13; + public const int EN_INITVOLUME = 14; + public const int EN_MIXMODEL = 15; + public const int EN_MIXZONEVOL = 16; + + public const int EN_TANKDIAM = 17; + public const int EN_MINVOLUME = 18; + public const int EN_VOLCURVE = 19; + public const int EN_MINLEVEL = 20; + public const int EN_MAXLEVEL = 21; + public const int EN_MIXFRACTION = 22; + public const int EN_TANK_KBULK = 23; + + public const int EN_TANKVOLUME = 24; + public const int EN_MAXVOLUME = 25; + public const int EN_CANOVERFLOW = 26; + public const int EN_DEMANDDEFICIT = 27; + + public const int EN_DIAMETER = 0; //Link parameters + public const int EN_LENGTH = 1; + public const int EN_ROUGHNESS = 2; + public const int EN_MINORLOSS = 3; + public const int EN_INITSTATUS = 4; + public const int EN_INITSETTING = 5; + public const int EN_KBULK = 6; + public const int EN_KWALL = 7; + public const int EN_FLOW = 8; + public const int EN_VELOCITY = 9; + public const int EN_HEADLOSS = 10; + public const int EN_STATUS = 11; + public const int EN_SETTING = 12; + public const int EN_ENERGY = 13; + public const int EN_LINKQUAL = 14; + public const int EN_LINKPATTERN = 15; + + public const int EN_PUMP_STATE = 16; + public const int EN_PUMP_EFFIC = 17; + public const int EN_PUMP_POWER = 18; + public const int EN_PUMP_HCURVE = 19; + public const int EN_PUMP_ECURVE = 20; + public const int EN_PUMP_ECOST = 21; + public const int EN_PUMP_EPAT = 22; + + public const int EN_DURATION = 0; //Time parameters + public const int EN_HYDSTEP = 1; + public const int EN_QUALSTEP = 2; + public const int EN_PATTERNSTEP = 3; + public const int EN_PATTERNSTART = 4; + public const int EN_REPORTSTEP = 5; + public const int EN_REPORTSTART = 6; + public const int EN_RULESTEP = 7; + public const int EN_STATISTIC = 8; + public const int EN_PERIODS = 9; + public const int EN_STARTTIME = 10; + public const int EN_HTIME = 11; + public const int EN_QTIME = 12; + public const int EN_HALTFLAG = 13; + public const int EN_NEXTEVENT = 14; + + public const int EN_ITERATIONS = 0; + public const int EN_RELATIVEERROR = 1; + public const int EN_MAXHEADERROR = 2; + public const int EN_MAXFLOWCHANGE = 3; + public const int EN_MASSBALANCE = 4; + public const int EN_DEFICIENTNODES = 5; + public const int EN_DEMANDREDUCTION = 6; + + public const int EN_NODE = 0; //Component types + public const int EN_LINK = 1; + public const int EN_TIMEPAT = 2; + public const int EN_CURVE = 3; + public const int EN_CONTROL = 4; + public const int EN_RULE = 5; + + public const int EN_NODECOUNT = 0; //Component counts + public const int EN_TANKCOUNT = 1; + public const int EN_LINKCOUNT = 2; + public const int EN_PATCOUNT = 3; + public const int EN_CURVECOUNT = 4; + public const int EN_CONTROLCOUNT = 5; + public const int EN_RULECOUNT = 6; + + public const int EN_JUNCTION = 0; //Node types + public const int EN_RESERVOIR = 1; + public const int EN_TANK = 2; + + public const int EN_CVPIPE = 0; //Link types + public const int EN_PIPE = 1; + public const int EN_PUMP = 2; + public const int EN_PRV = 3; + public const int EN_PSV = 4; + public const int EN_PBV = 5; + public const int EN_FCV = 6; + public const int EN_TCV = 7; + public const int EN_GPV = 8; + + public const int EN_NONE = 0; //Quality analysis types + public const int EN_CHEM = 1; + public const int EN_AGE = 2; + public const int EN_TRACE = 3; + + public const int EN_CONCEN = 0; //Source quality types + public const int EN_MASS = 1; + public const int EN_SETPOINT = 2; + public const int EN_FLOWPACED = 3; + + public const int EN_HW = 0; //Head loss formulas + public const int EN_DW = 1; + public const int EN_CM = 2; + + public const int EN_CFS = 0; //Flow units types + public const int EN_GPM = 1; + public const int EN_MGD = 2; + public const int EN_IMGD = 3; + public const int EN_AFD = 4; + public const int EN_LPS = 5; + public const int EN_LPM = 6; + public const int EN_MLD = 7; + public const int EN_CMH = 8; + public const int EN_CMD = 9; + + public const int EN_DDA = 0; //Demand driven analysis + public const int EN_PDA = 1; //Pressure driven analysis + + public const int EN_TRIALS = 0; //Simulation options + public const int EN_ACCURACY = 1; + public const int EN_TOLERANCE = 2; + public const int EN_EMITEXPON = 3; + public const int EN_DEMANDMULT = 4; + public const int EN_HEADERROR = 5; + public const int EN_FLOWCHANGE = 6; + public const int EN_HEADLOSSFORM = 7; + public const int EN_GLOBALEFFIC = 8; + public const int EN_GLOBALPRICE = 9; + public const int EN_GLOBALPATTERN = 10; + public const int EN_DEMANDCHARGE = 11; + public const int EN_SP_GRAVITY = 12; + public const int EN_SP_VISCOS = 13; + public const int EN_UNBALANCED = 14; + public const int EN_CHECKFREQ = 15; + public const int EN_MAXCHECK = 16; + public const int EN_DAMPLIMIT = 17; + public const int EN_SP_DIFFUS = 18; + public const int EN_BULKORDER = 19; + public const int EN_WALLORDER = 20; + public const int EN_TANKORDER = 21; + public const int EN_CONCENLIMIT = 22; + + public const int EN_LOWLEVEL = 0; //Control types + public const int EN_HILEVEL = 1; + public const int EN_TIMER = 2; + public const int EN_TIMEOFDAY = 3; + + public const int EN_AVERAGE = 1; //Time statistic types + public const int EN_MINIMUM = 2; + public const int EN_MAXIMUM = 3; + public const int EN_RANGE = 4; + + public const int EN_MIX1 = 0; //Tank mixing models + public const int EN_MIX2 = 1; + public const int EN_FIFO = 2; + public const int EN_LIFO = 3; + + public const int EN_NOSAVE = 0; //Save-results-to-file flag + public const int EN_SAVE = 1; + public const int EN_INITFLOW = 10; //Re-initialize flow flag + public const int EN_SAVE_AND_INIT = 11; + + public const int EN_CONST_HP = 0; //Constant horsepower pump curve + public const int EN_POWER_FUNC = 1; //Power function pump curve + public const int EN_CUSTOM = 2; //User-defined custom pump curve + public const int EN_NOCURVE = 3; //No pump curve + + public const int EN_VOLUME_CURVE = 0; //Volume curve + public const int EN_PUMP_CURVE = 1; //Pump curve + public const int EN_EFFIC_CURVE = 2; //Efficiency curve + public const int EN_HLOSS_CURVE = 3; //Head loss curve + public const int EN_GENERIC_CURVE = 4; //Generic curve + + public const int EN_UNCONDITIONAL = 0; //Unconditional object deletion + public const int EN_CONDITIONAL = 1; //Conditional object deletion + + public const int EN_NO_REPORT = 0; //No status report + public const int EN_NORMAL_REPORT = 1; //Normal status report + public const int EN_FULL_REPORT = 2; //Full status report + + public const int EN_R_NODE = 6; //Rule objects + public const int EN_R_LINK = 7; + public const int EN_R_SYSTEM = 8; + + public const int EN_R_DEMAND = 0; //Rule variables + public const int EN_R_HEAD = 1; + public const int EN_R_GRADE = 2; + public const int EN_R_LEVEL = 3; + public const int EN_R_PRESSURE = 4; + public const int EN_R_FLOW = 5; + public const int EN_R_STATUS = 6; + public const int EN_R_SETTING = 7; + public const int EN_R_POWER = 8; + public const int EN_R_TIME = 9; + public const int EN_R_CLOCKTIME = 10; + public const int EN_R_FILLTIME = 11; + public const int EN_R_DRAINTIME = 12; + + public const int EN_R_EQ = 0; //Rule operators + public const int EN_R_NE = 1; + public const int EN_R_LE = 2; + public const int EN_R_GE = 3; + public const int EN_R_LT = 4; + public const int EN_R_GT = 5; + public const int EN_R_IS = 6; + public const int EN_R_NOT = 7; + public const int EN_R_BELOW = 8; + public const int EN_R_ABOVE = 9; + + public const int EN_R_IS_OPEN = 1; //Rule status types + public const int EN_R_IS_CLOSED = 2; + public const int EN_R_IS_ACTIVE = 3; + + public const double EN_MISSING = -1.0E10; + + + #region Epanet Imports + + public delegate void UserSuppliedFunction(string param0); + + + //Project Functions + [DllImport(EPANETDLL, EntryPoint = "ENgetversion")] + public static extern int ENgetversion(ref int version); + + [DllImport(EPANETDLL, EntryPoint = "ENepanet")] + public static extern int ENepanet(string inpFile, string rptFile, string outFile, UserSuppliedFunction vfunc); + + [DllImport(EPANETDLL, EntryPoint = "ENopen")] + public static extern int ENopen(string inpFile, string rptFile, string outFile); + + [DllImport(EPANETDLL, EntryPoint = "ENgettitle")] + public static extern int ENgettitle(string titleline1, string titleline2, string titleline3); + + [DllImport(EPANETDLL, EntryPoint = "ENsettitle")] + public static extern int ENsettitle(string titleline1, string titleline2, string titleline3); + + [DllImport(EPANETDLL, EntryPoint = "ENsaveinpfile")] + public static extern int ENsaveinpfile(string filename); + + [DllImport(EPANETDLL, EntryPoint = "ENclose")] + public static extern int ENclose(); + + + //Hydraulic Analysis Functions + [DllImport(EPANETDLL, EntryPoint = "ENsolveH")] + public static extern int ENsolveH(); + + [DllImport(EPANETDLL, EntryPoint = "ENsaveH")] + public static extern int ENsaveH(); + + [DllImport(EPANETDLL, EntryPoint = "ENopenH")] + public static extern int ENopenH(); + + [DllImport(EPANETDLL, EntryPoint = "ENinitH")] + public static extern int ENinitH(int initFlag); + + [DllImport(EPANETDLL, EntryPoint = "ENrunH")] + public static extern int ENrunH(ref long currentTime); + + [DllImport(EPANETDLL, EntryPoint = "ENnextH")] + public static extern int ENnextH(ref long tStep); + + [DllImport(EPANETDLL, EntryPoint = "ENcloseH")] + public static extern int ENcloseH(); + + [DllImport(EPANETDLL, EntryPoint = "ENsavehydfile")] + public static extern int ENsavehydfile(string filename); + + [DllImport(EPANETDLL, EntryPoint = "ENusehydfile")] + public static extern int ENusehydfile(string filename); + + + //Water Quality Analysis Functions + [DllImport(EPANETDLL, EntryPoint = "ENsolveQ")] + public static extern int ENsolveQ(); + + [DllImport(EPANETDLL, EntryPoint = "ENopenQ")] + public static extern int ENopenQ(); + + [DllImport(EPANETDLL, EntryPoint = "ENinitQ")] + public static extern int ENinitQ(int saveFlag); + + [DllImport(EPANETDLL, EntryPoint = "ENrunQ")] + public static extern int ENrunQ(ref long currentTime); + + [DllImport(EPANETDLL, EntryPoint = "ENnextQ")] + public static extern int ENnextQ(ref long tStep); + + [DllImport(EPANETDLL, EntryPoint = "ENstepQ")] + public static extern int ENstepQ(ref long timeLeft); + + [DllImport(EPANETDLL, EntryPoint = "ENcloseQ")] + public static extern int ENcloseQ(); + + + //Reporting Functions + [DllImport(EPANETDLL, EntryPoint = "ENwriteline")] + public static extern int ENwriteline(string line); + + [DllImport(EPANETDLL, EntryPoint = "ENreport")] + public static extern int ENreport(); + + [DllImport(EPANETDLL, EntryPoint = "ENcopyreport")] + public static extern int ENcopyreport(string filename); + + [DllImport(EPANETDLL, EntryPoint = "ENclearreport")] + public static extern int ENclearreport(); + + [DllImport(EPANETDLL, EntryPoint = "ENresetreport")] + public static extern int ENresetreport(); + + [DllImport(EPANETDLL, EntryPoint = "ENsetreport")] + public static extern int ENsetreport(string format); + + [DllImport(EPANETDLL, EntryPoint = "ENsetstatusreport")] + public static extern int ENsetstatusreport(int level); + + [DllImport(EPANETDLL, EntryPoint = "ENgetcount")] + public static extern int ENgetcount(int code, ref int count); + + [DllImport(EPANETDLL, EntryPoint = "ENgeterror")] + public static extern int ENgeterror(int errcode, string errmsg, int maxLen); + + [DllImport(EPANETDLL, EntryPoint = "ENgetstatistic")] + public static extern int ENgetstatistic(int type, ref int value); + + [DllImport(EPANETDLL, EntryPoint = "ENgetresultindex")] + public static extern int ENgetresultindex(int type, int index, ref int value); + + + //Analysis Options Functions + [DllImport(EPANETDLL, EntryPoint = "ENgetoption")] + public static extern int ENgetoption(int option, ref float value); + + [DllImport(EPANETDLL, EntryPoint = "ENsetoption")] + public static extern int ENsetoption(int option, ref float value); + + [DllImport(EPANETDLL, EntryPoint = "ENgetflowunits")] + public static extern int ENgetflowunits(ref int units); + + [DllImport(EPANETDLL, EntryPoint = "ENsetflowunits")] + public static extern int ENsetflowunits(int units); + + [DllImport(EPANETDLL, EntryPoint = "ENgettimeparam")] + public static extern int ENgettimeparam(int param, ref int value); + + [DllImport(EPANETDLL, EntryPoint = "ENsettimeparam")] + public static extern int ENsettimeparam(int optioncode, long value); + + [DllImport(EPANETDLL, EntryPoint = "ENgetqualinfo")] + public static extern int ENgetqualinfo(ref int qualType, string chemName, string chemUnits, ref int traceNode); + + [DllImport(EPANETDLL, EntryPoint = "ENgetqualtype")] + public static extern int ENgetqualtype(ref int qualType, ref int traceNode); + + [DllImport(EPANETDLL, EntryPoint = "ENsetqualtype")] + public static extern int ENsetqualtype(int qualType, string chemName, string chemUnits, string traceNode); + + + //Node Functions + [DllImport(EPANETDLL, EntryPoint = "ENaddnode")] + public static extern int ENaddnode(string id, int nodeType, ref int index); + + [DllImport(EPANETDLL, EntryPoint = "ENdeletenode")] + public static extern int ENdeletenode(int index, int actionCode); + + [DllImport(EPANETDLL, EntryPoint = "ENgetnodeindex")] + public static extern int ENgetnodeindex(string id, ref int index); + + [DllImport(EPANETDLL, EntryPoint = "ENgetnodeid")] + public static extern int ENgetnodeid(int index, string id); + + [DllImport(EPANETDLL, EntryPoint = "ENsetnodeid")] + public static extern int ENsetnodeid(int index, string newid); + + [DllImport(EPANETDLL, EntryPoint = "ENgetnodetype")] + public static extern int ENgetnodetype(int index, ref int nodeType); + + [DllImport(EPANETDLL, EntryPoint = "ENgetnodevalue")] + public static extern int ENgetnodevalue(int index, int paramcode, ref float value); + + [DllImport(EPANETDLL, EntryPoint = "ENsetnodevalue")] + public static extern int ENsetnodevalue(int index, int code, float value); + + [DllImport(EPANETDLL, EntryPoint = "ENsetjuncdata")] + public static extern int ENsetjuncdata(int index, float elev, float dmnd, string dmndpat); + + [DllImport(EPANETDLL, EntryPoint = "ENsettankdata")] + public static extern int ENsettankdata(int index, float elev, float initlvl, float minlvl, float maxlvl, float diam, float minvol, string volcurve); + + [DllImport(EPANETDLL, EntryPoint = "ENgetcoord")] + public static extern int ENgetcoord(int index, ref double x, ref double y); + + [DllImport(EPANETDLL, EntryPoint = "ENsetcoord")] + public static extern int ENsetcoord(int index, double x, double y); + + + //Nodal Demand Functions + [DllImport(EPANETDLL, EntryPoint = "ENgetdemandmodel")] + public static extern int ENgetdemandmodel(ref int model, ref float pmin, ref float preq, ref float pexp); + + [DllImport(EPANETDLL, EntryPoint = "ENsetdemandmodel")] + public static extern int ENsetdemandmodel(int model, float pmin, float preq, float pexp); + + [DllImport(EPANETDLL, EntryPoint = "ENadddemand")] + public static extern int ENadddemand(int nodeIndex, float baseDemand, string demandPattern, string demandName); + + [DllImport(EPANETDLL, EntryPoint = "ENdeletedemand")] + public static extern int ENdeletedemand(int nodeIndex, int demandIndex); + + [DllImport(EPANETDLL, EntryPoint = "ENgetdemandindex")] + public static extern int ENgetdemandindex(int nodeIndex, string demandName, ref int demandIndex); + + [DllImport(EPANETDLL, EntryPoint = "ENgetnumdemands")] + public static extern int ENgetnumdemands(int nodeIndex, ref int numDemands); + + [DllImport(EPANETDLL, EntryPoint = "ENgetbasedemand")] + public static extern int ENgetbasedemand(int nodeIndex, int demandIndex, ref float baseDemand); + + [DllImport(EPANETDLL, EntryPoint = "ENsetbasedemand")] + public static extern int ENsetbasedemand(int nodeIndex, int demandIndex, float baseDemand); + + [DllImport(EPANETDLL, EntryPoint = "ENgetdemandpattern")] + public static extern int ENgetdemandpattern(int nodeIndex, int demandIndex, ref int patIndex); + + [DllImport(EPANETDLL, EntryPoint = "ENsetdemandpattern")] + public static extern int ENsetdemandpattern(int nodeIndex, int demandIndex, int patIndex); + + [DllImport(EPANETDLL, EntryPoint = "ENgetdemandname")] + public static extern int ENgetdemandname(int nodeIndex, int demandIndex, string demandName); + + [DllImport(EPANETDLL, EntryPoint = "ENsetdemandname")] + public static extern int ENsetdemandname(int nodeIndex, int demandIndex, string demandName); + + + //Link Functions + [DllImport(EPANETDLL, EntryPoint = "ENaddlink")] + public static extern int ENaddlink(string id, int linkType, string fromNode, string toNode, string index); + + [DllImport(EPANETDLL, EntryPoint = "ENdeletelink")] + public static extern int ENdeletelink(int index, int actionCode); + + [DllImport(EPANETDLL, EntryPoint = "ENgetlinkindex")] + public static extern int ENgetlinkindex(string id, ref int index); + + [DllImport(EPANETDLL, EntryPoint = "ENgetlinkid")] + public static extern int ENgetlinkid(int index, string id); + + [DllImport(EPANETDLL, EntryPoint = "ENsetlinkid")] + public static extern int ENsetlinkid(int index, string newid); + + [DllImport(EPANETDLL, EntryPoint = "ENgetlinktype")] + public static extern int ENgetlinktype(int index, ref int linkType); + + [DllImport(EPANETDLL, EntryPoint = "ENsetlinktype")] + public static extern int ENsetlinktype(ref int index, int linkType, int actionCode); + + [DllImport(EPANETDLL, EntryPoint = "ENgetlinknodes")] + public static extern int ENgetlinknodes(int index, ref int node1, ref int node2); + + [DllImport(EPANETDLL, EntryPoint = "ENsetlinknodes")] + public static extern int ENsetlinknodes(int index, int node1, int node2); + + [DllImport(EPANETDLL, EntryPoint = "ENgetlinkvalue")] + public static extern int ENgetlinkvalue(int index, int code, ref float value); + + [DllImport(EPANETDLL, EntryPoint = "ENsetlinkvalue")] + public static extern int ENsetlinkvalue(int index, int code, float value); + + [DllImport(EPANETDLL, EntryPoint = "ENsetpipedata")] + public static extern int ENsetpipedata(int index, float length, float diam, float rough, float mloss); + + [DllImport(EPANETDLL, EntryPoint = "ENgetvertexcount")] + public static extern int ENgetvertexcount(int index, ref int count); + + [DllImport(EPANETDLL, EntryPoint = "ENgetvertex")] + public static extern int ENgetvertex(int index, int vertex, ref double x, ref double y); + + [DllImport(EPANETDLL, EntryPoint = "ENsetvertices")] + public static extern int ENsetvertices(int index, ref double x, ref double y, int count); + + + //Pump Functions + [DllImport(EPANETDLL, EntryPoint = "ENgetheadcurveindex")] + public static extern int ENgetheadcurveindex(int linkIndex, ref int curveIndex); + + [DllImport(EPANETDLL, EntryPoint = "ENsetheadcurveindex")] + public static extern int ENsetheadcurveindex(int linkIndex, int curveIndex); + + [DllImport(EPANETDLL, EntryPoint = "ENgetpumptype")] + public static extern int ENgetpumptype(int linkIndex, ref int pumpType); + + + //Time Pattern Functions + [DllImport(EPANETDLL, EntryPoint = "ENaddpattern")] + public static extern int ENaddpattern(string id); + + [DllImport(EPANETDLL, EntryPoint = "ENdeletepattern")] + public static extern int ENdeletepattern(int index); + + [DllImport(EPANETDLL, EntryPoint = "ENgetpatternindex")] + public static extern int ENgetpatternindex(string id, ref int index); + + [DllImport(EPANETDLL, EntryPoint = "ENgetpatternid")] + public static extern int ENgetpatternid(int index, string id); + + [DllImport(EPANETDLL, EntryPoint = "ENsetpatternid")] + public static extern int ENsetpatternid(int index, string id); + + [DllImport(EPANETDLL, EntryPoint = "ENgetpatternlen")] + public static extern int ENgetpatternlen(int index, ref int len); + + [DllImport(EPANETDLL, EntryPoint = "ENgetpatternvalue")] + public static extern int ENgetpatternvalue(int index, int period, ref float value); + + [DllImport(EPANETDLL, EntryPoint = "ENsetpatternvalue")] + public static extern int ENsetpatternvalue(int index, int period, float value); + + [DllImport(EPANETDLL, EntryPoint = "ENgetaveragepatternvalue")] + public static extern int ENgetaveragepatternvalue(int index, ref float value); + + [DllImport(EPANETDLL, EntryPoint = "ENsetpattern")] + public static extern int ENsetpattern(int index, ref float[] values, int len); + + + //Data Curve Functions + [DllImport(EPANETDLL, EntryPoint = "ENaddcurve")] + public static extern int ENaddcurve(string id); + + [DllImport(EPANETDLL, EntryPoint = "ENdeletecurve")] + public static extern int ENdeletecurve(int index); + + [DllImport(EPANETDLL, EntryPoint = "ENgetcurveindex")] + public static extern int ENgetcurveindex(string id, ref int index); + + [DllImport(EPANETDLL, EntryPoint = "ENgetcurveid")] + public static extern int ENgetcurveid(int index, string id); + + [DllImport(EPANETDLL, EntryPoint = "ENsetcurveid")] + public static extern int ENsetcurveid(int index, string id); + + [DllImport(EPANETDLL, EntryPoint = "ENgetcurvelen")] + public static extern int ENgetcurvelen(int index, ref int len); + + [DllImport(EPANETDLL, EntryPoint = "ENgetcurvetype")] + public static extern int ENgetcurvetype(int index, ref int type); + + [DllImport(EPANETDLL, EntryPoint = "ENgetcurvevalue")] + public static extern int ENgetcurvevalue(int curveIndex, int pointIndex, ref float x, ref float y); + + [DllImport(EPANETDLL, EntryPoint = "ENsetcurvevalue")] + public static extern int ENsetcurvevalue(int curveIndex, int pointIndex, float x, float y); + + [DllImport(EPANETDLL, EntryPoint = "ENgetcurve")] + public static extern int ENgetcurve(int index, string id, ref int nPoints, ref float xValues, ref float yValues); + + [DllImport(EPANETDLL, EntryPoint = "ENsetcurve")] + public static extern int ENsetcurve(int index, ref float xValues, ref float yValues, int nPoints); + + + //Simple Control Functions + [DllImport(EPANETDLL, EntryPoint = "ENaddcontrol")] + public static extern int ENaddcontrol(int type, int linkIndex, float setting, int nodeIndex, float level, ref int index); + + [DllImport(EPANETDLL, EntryPoint = "ENdeletecontrol")] + public static extern int ENdeletecontrol(int index); + + [DllImport(EPANETDLL, EntryPoint = "ENgetcontrol")] + public static extern int ENgetcontrol(int index, ref int type, ref int linkIndex, ref float setting, ref int nodeIndex, ref float level); + + [DllImport(EPANETDLL, EntryPoint = "ENsetcontrol")] + public static extern int ENsetcontrol(int index, int type, int linkIndex, float setting, int nodeIndex, float level); + + + //Rule-Based Control Functions + [DllImport(EPANETDLL, EntryPoint = "ENaddrule")] + public static extern int ENaddrule(string rule); + + [DllImport(EPANETDLL, EntryPoint = "ENdeleterule")] + public static extern int ENdeleterule(int index); + + [DllImport(EPANETDLL, EntryPoint = "ENgetrule")] + public static extern int ENgetrule(int index, ref int nPremises, ref int nThenActions, ref int nElseActions, ref float priority); + + [DllImport(EPANETDLL, EntryPoint = "ENgetruleID")] + public static extern int ENgetruleID(int index, string id); + + [DllImport(EPANETDLL, EntryPoint = "ENsetrulepriority")] + public static extern int ENsetcurvENsetrulepriorityeid(int index, float priority); + + [DllImport(EPANETDLL, EntryPoint = "ENgetpremise")] + public static extern int ENgetpremise(int ruleIndex, int premiseIndex, ref int logop, ref int objectt, ref int objIndex, ref int variable, ref int relop, ref int status, ref float value); + + [DllImport(EPANETDLL, EntryPoint = "ENsetpremise")] + public static extern int ENsetpremise(int ruleIndex, int premiseIndex, int logop, int objectt, int objIndex, int variable, int relop, int status, float value); + + [DllImport(EPANETDLL, EntryPoint = "ENsetpremiseindex")] + public static extern int ENsetpremiseindex(int ruleIndex, int premiseIndex, int objIndex); + + [DllImport(EPANETDLL, EntryPoint = "ENsetpremisestatus")] + public static extern int ENsetpremisestatus(int ruleIndex, int premiseIndex, int status); + + [DllImport(EPANETDLL, EntryPoint = "ENsetpremisevalue")] + public static extern int ENsetpremisevalue(int ruleIndex, int premiseIndex, float value); + + [DllImport(EPANETDLL, EntryPoint = "ENgetthenaction")] + public static extern int ENgetthenaction(int ruleIndex, int actionIndex, ref int linkIndex, ref int status, ref float setting); + + [DllImport(EPANETDLL, EntryPoint = "ENsetthenaction")] + public static extern int ENsetthenaction(int ruleIndex, int actionIndex, int linkIndex, int status, float setting); + + [DllImport(EPANETDLL, EntryPoint = "ENgetelseaction")] + public static extern int ENgetelseaction(int ruleIndex, int actionIndex, ref int linkIndex, ref int status, ref float setting); + + [DllImport(EPANETDLL, EntryPoint = "ENsetelseaction")] + public static extern int ENsetelseaction(int ruleIndex, int actionIndex, int linkIndex, int status, float setting); + + + #endregion + } + +} \ No newline at end of file From 474afda3734df58419c2dd796f4f9a13e5266f17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oscar=20Vegas=20Ni=C3=B1o?= Date: Wed, 30 Sep 2020 16:52:00 +0200 Subject: [PATCH 031/233] Correct comment Change "for use with Visual Basic (C#)" to "for use with C#" --- include/epanet.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/epanet.cs b/include/epanet.cs index 075b1f0..7081459 100644 --- a/include/epanet.cs +++ b/include/epanet.cs @@ -6,7 +6,7 @@ using System.Runtime.InteropServices; //Last updated on 17/09/2020 //Declarations of functions in the EPANET PROGRAMMERs TOOLKIT -//(EPANET2.DLL) for use with Visual Basic (C#) +//(EPANET2.DLL) for use with C# namespace EpanetCSharpLibrary From a76cc51ac8d217be4c2a969a6be8965cf72d5d1a Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Thu, 5 Nov 2020 21:54:10 -0500 Subject: [PATCH 032/233] Allow negative EN_SETTING value in EN_setlinkvalue Makes EN_setlinkvalue consistent with how an input file is read. This addresses issue #616 . --- src/epanet.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/epanet.c b/src/epanet.c index 0f6fb12..e249e1b 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -3886,7 +3886,6 @@ int DLLEXPORT EN_setlinkvalue(EN_Project p, int index, int property, double valu case EN_INITSETTING: case EN_SETTING: - if (value < 0.0) return 211; if (Link[index].Type == PIPE || Link[index].Type == CVPIPE) { return EN_setlinkvalue(p, index, EN_ROUGHNESS, value); @@ -3896,6 +3895,7 @@ int DLLEXPORT EN_setlinkvalue(EN_Project p, int index, int property, double valu switch (Link[index].Type) { case PUMP: + if (value < 0.0) return 211; break; case PRV: case PSV: From b6eddc07faa5856ce6f5c568824bd864fff4da3d Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sun, 8 Nov 2020 10:10:16 -0500 Subject: [PATCH 033/233] Add EN_STARTTIME to EN_settimeparam function --- ReleaseNotes2_3.md | 2 ++ src/epanet.c | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 83d49c2..3d7ba97 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -8,4 +8,6 @@ This document describes the changes and updates that have been made in version 2 - A `EN_setvertex` function was added to allow API clients to change the coordinates of a single link vertex. - The index of a General Purpose Valve's (GPV's) head loss curve was added to the list of editable Link Properties using the symbolic constant name `EN_GPV_CURVE`. - The `EN_getlinkvalue` and `EN_setlinkvalue` functions were updated to get and set the value of `EN_GPV_CURVE`. + - Negative pressure values for `EN_SETTING` are now permitted in the `EN_setlinkvalue` function. + - The `EN_STARTTIME` parameter was added into the `EN_settimeparam` function. diff --git a/src/epanet.c b/src/epanet.c index e249e1b..ecb7df7 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/01/2020 + Last Updated: 11/08/2020 ****************************************************************************** */ @@ -1583,6 +1583,11 @@ int DLLEXPORT EN_settimeparam(EN_Project p, int param, long value) rpt->Tstatflag = (char)value; break; + case EN_STARTTIME: + if (value > 86400) return 213; + time->Tstart = value; + break; + case EN_HTIME: time->Htime = value; break; From 0d31da816a05344330daa8fdf9e114246844ef9a Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sun, 8 Nov 2020 10:23:03 -0500 Subject: [PATCH 034/233] Remove redundant check on EN_STARTTIME --- src/epanet.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index ecb7df7..4a21fbc 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1583,11 +1583,6 @@ int DLLEXPORT EN_settimeparam(EN_Project p, int param, long value) rpt->Tstatflag = (char)value; break; - case EN_STARTTIME: - if (value > 86400) return 213; - time->Tstart = value; - break; - case EN_HTIME: time->Htime = value; break; @@ -1597,7 +1592,7 @@ int DLLEXPORT EN_settimeparam(EN_Project p, int param, long value) break; case EN_STARTTIME: - if (value < 0 || value > SECperDAY) return 213; + if (value > SECperDAY) return 213; time->Tstart = value; break; From 533466b796418e2796b61a75068cdec7e0ace140 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Thu, 19 Nov 2020 16:23:24 -0500 Subject: [PATCH 035/233] PDA changes to improve convergence --- src/hydcoeffs.c | 2 +- src/hydsolver.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index 9f4ac3d..7b2dc47 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -486,7 +486,7 @@ void demandheadloss(Project *pr, int i, double dp, double n, } // Use power head loss function for demand less than full - else if (r < 1.0) + else if (r <= 1.0) //(2.2.1) { *hgrad = n * dp * pow(r, n - 1.0) / dfull; // ... use linear function for very small gradient diff --git a/src/hydsolver.c b/src/hydsolver.c index fcb8258..7f80a29 100644 --- a/src/hydsolver.c +++ b/src/hydsolver.c @@ -553,6 +553,10 @@ void newdemandflows(Project *pr, Hydbalance *hbal, double *qsum, double *dqsum) dh = hyd->NodeHead[i] - net->Node[i].El - hyd->Pmin; dq = (hloss - dh) / hgrad; dq *= hyd->RelaxFactor; + + // Prevent a flow change greater than full demand //(2.2.1) + if (fabs(dq) > hyd->NodeDemand[i]) + dq = 0.5 * SGN(dq) * hyd->NodeDemand[i]; hyd->DemandFlow[i] -= dq; // Update system flow summation From 854abdf5d29776f4921d0759c76e855601238145 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 9 Dec 2020 20:26:13 -0500 Subject: [PATCH 036/233] Update hydraul.c Fixes a bug that was adding time on-line to a closed pump's energy usage for the time step just prior to when a rule-based control re-opens it. --- src/hydraul.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hydraul.c b/src/hydraul.c index c1a839d..6ce427d 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -895,7 +895,7 @@ void addenergy(Project *pr, long hstep) // Skip closed pumps pump = &net->Pump[j]; k = pump->Link; - if (hyd->LinkStatus[k] <= CLOSED) continue; + if (pump->Energy.CurrentEffic == 0.0) continue; q = MAX(QZERO, ABS(hyd->LinkFlow[k])); // Find pump-specific energy cost From 9d2256433f92e4029e91b491282d52e6cd140ef0 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 26 Jan 2021 15:41:01 -0500 Subject: [PATCH 037/233] Fix having flow out of an empty tank --- src/hydstatus.c | 32 ++------------------------------ 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/src/hydstatus.c b/src/hydstatus.c index 87d45c6..4b4dc4b 100644 --- a/src/hydstatus.c +++ b/src/hydstatus.c @@ -437,40 +437,12 @@ void tankstatus(Project *pr, int k, int n1, int n2) tank = &net->Tank[i]; if (tank->A == 0.0) return; - // Find head difference across link - h = hyd->NodeHead[n1] - hyd->NodeHead[n2]; - - // If tank is full, then prevent flow into it if (hyd->NodeHead[n1] >= tank->Hmax - hyd->Htol && !tank->CanOverflow) { - // Case 1: Link is a pump discharging into tank - if (link->Type == PUMP) - { - if (link->N2 == n1) hyd->LinkStatus[k] = TEMPCLOSED; - } - - // Case 2: Downstream head > tank head - // (e.g., an open outflow check valve would close) - else if (cvstatus(pr, OPEN, h, q) == CLOSED) - { - hyd->LinkStatus[k] = TEMPCLOSED; - } + if (q < 0.0) hyd->LinkStatus[k] = TEMPCLOSED; } - - // If tank is empty, then prevent flow out of it if (hyd->NodeHead[n1] <= tank->Hmin + hyd->Htol) { - // Case 1: Link is a pump discharging from tank - if (link->Type == PUMP) - { - if (link->N1 == n1) hyd->LinkStatus[k] = TEMPCLOSED; - } - - // Case 2: Tank head > downstream head - // (e.g., a closed outflow check valve would open) - else if (cvstatus(pr, CLOSED, h, q) == OPEN) - { - hyd->LinkStatus[k] = TEMPCLOSED; - } + if (q > 0.0) hyd->LinkStatus[k] = TEMPCLOSED; } } From aaa9b44aafa519d8240e2b3367c5bca7a3dd8c6a Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 26 Jan 2021 15:47:04 -0500 Subject: [PATCH 038/233] Removed unreferenced variable in hydstatus.c --- src/hydstatus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hydstatus.c b/src/hydstatus.c index 4b4dc4b..3d7c106 100644 --- a/src/hydstatus.c +++ b/src/hydstatus.c @@ -413,7 +413,7 @@ void tankstatus(Project *pr, int k, int n1, int n2) Hydraul *hyd = &pr->hydraul; int i, n; - double h, q; + double q; Stank *tank; Slink *link = &net->Link[k]; From 427fb03fe53efff40eea8168f797a3acd1231858 Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Wed, 24 Feb 2021 17:51:29 +0200 Subject: [PATCH 039/233] Add comments APIs to VB bas include file --- include/epanet2.bas | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/epanet2.bas b/include/epanet2.bas index d3fc17e..c38003e 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -263,6 +263,9 @@ Public Const EN_MISSING As Double = -1.0E10 Declare Function ENsettitle Lib "epanet2.dll" (ByVal titleline1 As String, ByVal titleline2 As String, ByVal titleline3 As String) As Long Declare Function ENsaveinpfile Lib "epanet2.dll" (ByVal filename As String) As Long Declare Function ENclose Lib "epanet2.dll" () As Long + Declare Function ENgetcomment Lib "epanet2.dll" (ByVal ObjectType As Long, ByVal index As Long, ByVal comment As String) As Long + Declare Function ENsetcomment Lib "epanet2.dll" (ByVal ObjectType As Long, ByVal index As Long, ByVal comment As String) As Long + 'Hydraulic Analysis Functions Declare Function ENsolveH Lib "epanet2.dll" () As Long From 409a6004556d4796e9b340052e15d10d76a8718c Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Fri, 16 Apr 2021 17:01:54 -0400 Subject: [PATCH 040/233] Improved flow checks for full and empty tanks Improves the way link flow into full and out of empty tanks is checked. Also corrects the head loss and gradient calculation for constant horsepower pumps at very low and very high flow rates (this was affecting one of the examples used to test the full/empty tank fix). --- src/hydcoeffs.c | 8 ++++++-- src/hydstatus.c | 17 +++++++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index 9f4ac3d..e044dff 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -691,6 +691,8 @@ void pumpcoeff(Project *pr, int k) hgrad; // Head loss gradient Spump *pump; + double qstar; + // Use high resistance pipe if pump closed or cannot deliver head setting = hyd->LinkSetting[k]; if (hyd->LinkStatus[k] <= CLOSED || setting == 0.0) @@ -748,12 +750,14 @@ void pumpcoeff(Project *pr, int k) if (hgrad > CBIG) { hgrad = CBIG; - hloss = -hgrad * hyd->LinkFlow[k]; + qstar = sqrt(-r / hgrad); + hloss = (r / qstar) - hgrad * (qstar - q); } else if (hgrad < hyd->RQtol) { hgrad = hyd->RQtol; - hloss = -hgrad * hyd->LinkFlow[k]; + qstar = sqrt(-r / hgrad); + hloss = (r / qstar) - hgrad * (qstar - q); } // ... otherwise compute head loss from pump curve else diff --git a/src/hydstatus.c b/src/hydstatus.c index 3d7c106..4013ec9 100644 --- a/src/hydstatus.c +++ b/src/hydstatus.c @@ -437,12 +437,21 @@ void tankstatus(Project *pr, int k, int n1, int n2) tank = &net->Tank[i]; if (tank->A == 0.0) return; - if (hyd->NodeHead[n1] >= tank->Hmax - hyd->Htol && !tank->CanOverflow) + // Can't add flow to a full tank + if (hyd->NodeHead[n1] >= tank->Hmax && !tank->CanOverflow) { - if (q < 0.0) hyd->LinkStatus[k] = TEMPCLOSED; + if (link->Type == PUMP && link->N2 == n1) + hyd->LinkStatus[k] = TEMPCLOSED; + else if (q < 0.0) + hyd->LinkStatus[k] = TEMPCLOSED; } - if (hyd->NodeHead[n1] <= tank->Hmin + hyd->Htol) + + // Can't remove flow from an empty tank + if (hyd->NodeHead[n1] <= tank->Hmin) { - if (q > 0.0) hyd->LinkStatus[k] = TEMPCLOSED; + if (link->Type == PUMP && link->N1 == n1) + hyd->LinkStatus[k] = TEMPCLOSED; + else if (q > 0.0) + hyd->LinkStatus[k] = TEMPCLOSED; } } From bec7c0db0f622e3bf1d28f2217ab5d7147c8a147 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sat, 17 Apr 2021 10:24:42 -0400 Subject: [PATCH 041/233] Remove line comments with release number --- src/hydcoeffs.c | 2 +- src/hydsolver.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index 7b2dc47..8fe5426 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -486,7 +486,7 @@ void demandheadloss(Project *pr, int i, double dp, double n, } // Use power head loss function for demand less than full - else if (r <= 1.0) //(2.2.1) + else if (r <= 1.0) { *hgrad = n * dp * pow(r, n - 1.0) / dfull; // ... use linear function for very small gradient diff --git a/src/hydsolver.c b/src/hydsolver.c index 7f80a29..c3b5979 100644 --- a/src/hydsolver.c +++ b/src/hydsolver.c @@ -554,7 +554,7 @@ void newdemandflows(Project *pr, Hydbalance *hbal, double *qsum, double *dqsum) dq = (hloss - dh) / hgrad; dq *= hyd->RelaxFactor; - // Prevent a flow change greater than full demand //(2.2.1) + // Prevent a flow change greater than full demand if (fabs(dq) > hyd->NodeDemand[i]) dq = 0.5 * SGN(dq) * hyd->NodeDemand[i]; hyd->DemandFlow[i] -= dq; From 9224d67a00cf7f3f364aec49938366e9a053055c Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 20 Apr 2021 09:26:34 -0400 Subject: [PATCH 042/233] Adjustment to regression test criteria --- tools/nrtest-epanet/setup.py | 2 +- tools/run-nrtest.cmd | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/nrtest-epanet/setup.py b/tools/nrtest-epanet/setup.py index 4c7dfd7..ead607f 100644 --- a/tools/nrtest-epanet/setup.py +++ b/tools/nrtest-epanet/setup.py @@ -8,6 +8,7 @@ # US EPA - ORD/NRMRL # ''' Setup up script for nrtest_epanet package. ''' +''' 'epanet mincdd = nrtest_epanet:epanet_mincdd_compare', ''' try: from setuptools import setup @@ -17,7 +18,6 @@ except ImportError: entry_points = { 'nrtest.compare': [ 'epanet allclose = nrtest_epanet:epanet_allclose_compare', - 'epanet mincdd = nrtest_epanet:epanet_mincdd_compare', 'epanet report = nrtest_epanet:epanet_report_compare', # Add entry point for new comparison functions here ] diff --git a/tools/run-nrtest.cmd b/tools/run-nrtest.cmd index 743d105..159b2c8 100644 --- a/tools/run-nrtest.cmd +++ b/tools/run-nrtest.cmd @@ -42,7 +42,7 @@ set TEST_OUTPUT_PATH=benchmark\epanet-%SUT_BUILD_ID% set NRTEST_COMPARE_CMD=python %NRTEST_SCRIPT_PATH%\nrtest compare set REF_OUTPUT_PATH=benchmark\epanet-%REF_BUILD_ID% set RTOL_VALUE=0.01 -set ATOL_VALUE=0.0 +set ATOL_VALUE=0.0001 :: change current directory to test suite cd %TEST_SUITE_PATH% @@ -52,10 +52,10 @@ if exist %TEST_OUTPUT_PATH% ( rmdir /s /q %TEST_OUTPUT_PATH% ) -echo INFO: Creating SUT %SUT_BUILD_ID% artifacts -set NRTEST_COMMAND=%NRTEST_EXECUTE_CMD% %TEST_APP_PATH% %TESTS% -o %TEST_OUTPUT_PATH% +::echo INFO: Creating SUT %SUT_BUILD_ID% artifacts +::set NRTEST_COMMAND=%NRTEST_EXECUTE_CMD% %TEST_APP_PATH% %TESTS% -o %TEST_OUTPUT_PATH% :: if there is an error exit the script with error value 1 -%NRTEST_COMMAND% || exit /B 1 +::%NRTEST_COMMAND% || exit /B 1 echo. From 13416942f82f78c0834026eb670c59a03697d45b Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 20 Apr 2021 09:30:11 -0400 Subject: [PATCH 043/233] Update hydcoeffs.c --- src/hydcoeffs.c | 53 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index 8fe5426..e9084ce 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 10/04/2019 + Last Updated: 4/20/2021 ****************************************************************************** */ @@ -271,11 +271,31 @@ void nodecoeffs(Project *pr) // For junction nodes, subtract demand flow from net // flow excess & add flow excess to RHS array F - for (i = 1; i <= net->Njuncs; i++) + + if (hyd->DemandModel == DDA) //ET-PDA { - hyd->Xflow[i] -= hyd->DemandFlow[i]; - sm->F[sm->Row[i]] += hyd->Xflow[i]; + for (i = 1; i <= net->Njuncs; i++) + { + hyd->Xflow[i] -= hyd->DemandFlow[i]; + sm->F[sm->Row[i]] += hyd->Xflow[i]; + } } + else + { + for (i = 1; i <= net->Njuncs; i++) + { + hyd->DemandFlow[i] = MAX(hyd->DemandFlow[i], 0.0); + hyd->DemandFlow[i] = MIN(hyd->DemandFlow[i], hyd->NodeDemand[i]); + switch (net->Node[i].demandState) + { + case NEGATIVE_DEMAND: + case FULL_DEMAND: + hyd->DemandFlow[i] = hyd->NodeDemand[i]; + hyd->Xflow[i] -= hyd->NodeDemand[i]; + } + sm->F[sm->Row[i]] += hyd->Xflow[i]; + } + } } @@ -444,6 +464,20 @@ void demandcoeffs(Project *pr) { // Skip junctions with non-positive demands if (hyd->NodeDemand[i] <= 0.0) continue; + + net->Node[i].demandState = PARTIAL_DEMAND; //ET-PDA + if (hyd->DemandFlow[i] <= 0 && + hyd->NodeHead[i] <= (net->Node[i].El + hyd->Pmin)) + { + net->Node[i].demandState = ZERO_DEMAND; + continue; + } + else if (MAX(0,hyd->DemandFlow[i]) * hyd->NodeHead[i] >= + hyd->NodeDemand[i] * (net->Node[i].El + hyd->Preq)) + { + net->Node[i].demandState = FULL_DEMAND; + continue; + } // Find head loss for demand outflow at node's elevation demandheadloss(pr, i, dp, n, &hloss, &hgrad); @@ -474,10 +508,14 @@ void demandheadloss(Project *pr, int i, double dp, double n, { Hydraul *hyd = &pr->hydraul; - double d = hyd->DemandFlow[i]; + double d = MAX(hyd->DemandFlow[i], 0.0001); //ET-PDA double dfull = hyd->NodeDemand[i]; double r = d / dfull; - + + *hgrad = n * dp * pow(r, n - 1.0) / dfull; + *hloss = (*hgrad) * d / n; + +/* //ET-PDA // Use lower barrier function for negative demand if (r <= 0) { @@ -486,7 +524,7 @@ void demandheadloss(Project *pr, int i, double dp, double n, } // Use power head loss function for demand less than full - else if (r <= 1.0) + else if (r <= 1.0) //(2.2.1) { *hgrad = n * dp * pow(r, n - 1.0) / dfull; // ... use linear function for very small gradient @@ -504,6 +542,7 @@ void demandheadloss(Project *pr, int i, double dp, double n, *hgrad = CBIG; *hloss = dp + CBIG * (d - dfull); } +*/ } From e58d36c6a146cdc1a22ea521421962ae055b0de0 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 20 Apr 2021 09:36:01 -0400 Subject: [PATCH 044/233] Revert "Update hydcoeffs.c" This reverts commit 13416942f82f78c0834026eb670c59a03697d45b. --- src/hydcoeffs.c | 53 +++++++------------------------------------------ 1 file changed, 7 insertions(+), 46 deletions(-) diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index e9084ce..8fe5426 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 4/20/2021 + Last Updated: 10/04/2019 ****************************************************************************** */ @@ -271,31 +271,11 @@ void nodecoeffs(Project *pr) // For junction nodes, subtract demand flow from net // flow excess & add flow excess to RHS array F - - if (hyd->DemandModel == DDA) //ET-PDA + for (i = 1; i <= net->Njuncs; i++) { - for (i = 1; i <= net->Njuncs; i++) - { - hyd->Xflow[i] -= hyd->DemandFlow[i]; - sm->F[sm->Row[i]] += hyd->Xflow[i]; - } + hyd->Xflow[i] -= hyd->DemandFlow[i]; + sm->F[sm->Row[i]] += hyd->Xflow[i]; } - else - { - for (i = 1; i <= net->Njuncs; i++) - { - hyd->DemandFlow[i] = MAX(hyd->DemandFlow[i], 0.0); - hyd->DemandFlow[i] = MIN(hyd->DemandFlow[i], hyd->NodeDemand[i]); - switch (net->Node[i].demandState) - { - case NEGATIVE_DEMAND: - case FULL_DEMAND: - hyd->DemandFlow[i] = hyd->NodeDemand[i]; - hyd->Xflow[i] -= hyd->NodeDemand[i]; - } - sm->F[sm->Row[i]] += hyd->Xflow[i]; - } - } } @@ -464,20 +444,6 @@ void demandcoeffs(Project *pr) { // Skip junctions with non-positive demands if (hyd->NodeDemand[i] <= 0.0) continue; - - net->Node[i].demandState = PARTIAL_DEMAND; //ET-PDA - if (hyd->DemandFlow[i] <= 0 && - hyd->NodeHead[i] <= (net->Node[i].El + hyd->Pmin)) - { - net->Node[i].demandState = ZERO_DEMAND; - continue; - } - else if (MAX(0,hyd->DemandFlow[i]) * hyd->NodeHead[i] >= - hyd->NodeDemand[i] * (net->Node[i].El + hyd->Preq)) - { - net->Node[i].demandState = FULL_DEMAND; - continue; - } // Find head loss for demand outflow at node's elevation demandheadloss(pr, i, dp, n, &hloss, &hgrad); @@ -508,14 +474,10 @@ void demandheadloss(Project *pr, int i, double dp, double n, { Hydraul *hyd = &pr->hydraul; - double d = MAX(hyd->DemandFlow[i], 0.0001); //ET-PDA + double d = hyd->DemandFlow[i]; double dfull = hyd->NodeDemand[i]; double r = d / dfull; - - *hgrad = n * dp * pow(r, n - 1.0) / dfull; - *hloss = (*hgrad) * d / n; - -/* //ET-PDA + // Use lower barrier function for negative demand if (r <= 0) { @@ -524,7 +486,7 @@ void demandheadloss(Project *pr, int i, double dp, double n, } // Use power head loss function for demand less than full - else if (r <= 1.0) //(2.2.1) + else if (r <= 1.0) { *hgrad = n * dp * pow(r, n - 1.0) / dfull; // ... use linear function for very small gradient @@ -542,7 +504,6 @@ void demandheadloss(Project *pr, int i, double dp, double n, *hgrad = CBIG; *hloss = dp + CBIG * (d - dfull); } -*/ } From 9e286293aee7015e7db38eaac67a61c666eef816 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 20 Apr 2021 10:13:03 -0400 Subject: [PATCH 045/233] Adjustment to regression test criteria - 2 --- tools/nrtest-epanet/setup.py | 2 +- tools/run-nrtest.cmd | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/nrtest-epanet/setup.py b/tools/nrtest-epanet/setup.py index ead607f..ceb1126 100644 --- a/tools/nrtest-epanet/setup.py +++ b/tools/nrtest-epanet/setup.py @@ -9,6 +9,7 @@ # ''' Setup up script for nrtest_epanet package. ''' ''' 'epanet mincdd = nrtest_epanet:epanet_mincdd_compare', ''' +''' 'epanet report = nrtest_epanet:epanet_report_compare', ''' try: from setuptools import setup @@ -18,7 +19,6 @@ except ImportError: entry_points = { 'nrtest.compare': [ 'epanet allclose = nrtest_epanet:epanet_allclose_compare', - 'epanet report = nrtest_epanet:epanet_report_compare', # Add entry point for new comparison functions here ] } diff --git a/tools/run-nrtest.cmd b/tools/run-nrtest.cmd index 159b2c8..337a394 100644 --- a/tools/run-nrtest.cmd +++ b/tools/run-nrtest.cmd @@ -53,9 +53,9 @@ if exist %TEST_OUTPUT_PATH% ( ) ::echo INFO: Creating SUT %SUT_BUILD_ID% artifacts -::set NRTEST_COMMAND=%NRTEST_EXECUTE_CMD% %TEST_APP_PATH% %TESTS% -o %TEST_OUTPUT_PATH% +set NRTEST_COMMAND=%NRTEST_EXECUTE_CMD% %TEST_APP_PATH% %TESTS% -o %TEST_OUTPUT_PATH% :: if there is an error exit the script with error value 1 -::%NRTEST_COMMAND% || exit /B 1 +%NRTEST_COMMAND% || exit /B 1 echo. From ac86db1340af8c3d93791d747080c9000b62952f Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 20 Apr 2021 10:25:43 -0400 Subject: [PATCH 046/233] Adjustment to regression test criteria - 3 --- tools/nrtest-epanet/nrtest_epanet/__init__.py | 4 ++-- tools/nrtest-epanet/setup.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/nrtest-epanet/nrtest_epanet/__init__.py b/tools/nrtest-epanet/nrtest_epanet/__init__.py index 22d6fe6..829a671 100644 --- a/tools/nrtest-epanet/nrtest_epanet/__init__.py +++ b/tools/nrtest-epanet/nrtest_epanet/__init__.py @@ -154,7 +154,7 @@ def epanet_report_compare(path_test, path_ref, rtol, atol): ''' HEADER = 10 FOOTER = 2 - + ''' with open(path_test ,'r') as ftest, open(path_ref, 'r') as fref: for (test_line, ref_line) in it.izip(hdf.parse(ftest, HEADER, FOOTER)[1], @@ -162,5 +162,5 @@ def epanet_report_compare(path_test, path_ref, rtol, atol): if test_line != ref_line: return False - + ''' return True diff --git a/tools/nrtest-epanet/setup.py b/tools/nrtest-epanet/setup.py index ceb1126..ead607f 100644 --- a/tools/nrtest-epanet/setup.py +++ b/tools/nrtest-epanet/setup.py @@ -9,7 +9,6 @@ # ''' Setup up script for nrtest_epanet package. ''' ''' 'epanet mincdd = nrtest_epanet:epanet_mincdd_compare', ''' -''' 'epanet report = nrtest_epanet:epanet_report_compare', ''' try: from setuptools import setup @@ -19,6 +18,7 @@ except ImportError: entry_points = { 'nrtest.compare': [ 'epanet allclose = nrtest_epanet:epanet_allclose_compare', + 'epanet report = nrtest_epanet:epanet_report_compare', # Add entry point for new comparison functions here ] } From 5c0a6efb30eb15f4b4bf60c828b85afd444f6fe3 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 20 Apr 2021 15:04:18 -0400 Subject: [PATCH 047/233] Update setup.py Trying to eliminate the Status Report comparison. --- tools/nrtest-epanet/setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/nrtest-epanet/setup.py b/tools/nrtest-epanet/setup.py index ead607f..65fea94 100644 --- a/tools/nrtest-epanet/setup.py +++ b/tools/nrtest-epanet/setup.py @@ -8,7 +8,6 @@ # US EPA - ORD/NRMRL # ''' Setup up script for nrtest_epanet package. ''' -''' 'epanet mincdd = nrtest_epanet:epanet_mincdd_compare', ''' try: from setuptools import setup @@ -18,7 +17,8 @@ except ImportError: entry_points = { 'nrtest.compare': [ 'epanet allclose = nrtest_epanet:epanet_allclose_compare', - 'epanet report = nrtest_epanet:epanet_report_compare', + #'epanet mincdd = nrtest_epanet:epanet_mincdd_compare', + #'epanet report = nrtest_epanet:epanet_report_compare', # Add entry point for new comparison functions here ] } From a652175523348f78e3f6f363396cd5c7cb2c3d4e Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 20 Apr 2021 15:24:09 -0400 Subject: [PATCH 048/233] Update test-config.sh Another attempt to eliminate the Status Report comparison. --- tools/test-config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/test-config.sh b/tools/test-config.sh index 8cbaef4..e94195b 100644 --- a/tools/test-config.sh +++ b/tools/test-config.sh @@ -16,6 +16,7 @@ # Suggested Usage: # $ for file in .//*; do ./test-config.sh $file 1.0 > "${file%.*}.json"; done # +# "${name}.rpt": "epanet report", filename="$1" name="${filename%.*}" @@ -36,7 +37,6 @@ cat< Date: Tue, 20 Apr 2021 15:59:23 -0400 Subject: [PATCH 049/233] Restoring previous versions of nrtest files that work --- tools/nrtest-epanet/nrtest_epanet/__init__.py | 54 ++++++++++++++++--- tools/nrtest-epanet/setup.py | 2 +- tools/test-config.sh | 2 +- 3 files changed, 49 insertions(+), 9 deletions(-) diff --git a/tools/nrtest-epanet/nrtest_epanet/__init__.py b/tools/nrtest-epanet/nrtest_epanet/__init__.py index 829a671..5c36f71 100644 --- a/tools/nrtest-epanet/nrtest_epanet/__init__.py +++ b/tools/nrtest-epanet/nrtest_epanet/__init__.py @@ -101,6 +101,8 @@ def epanet_mincdd_compare(path_test, path_ref, rtol, atol): Raises: ValueError() AssertionError() + + Modified by L. Rossman (4/20/21) ''' min_cdd = 100.0 @@ -114,14 +116,19 @@ def epanet_mincdd_compare(path_test, path_ref, rtol, atol): if np.array_equal(test[0], ref[0]): continue else: - diff = np.fabs(np.subtract(test[0], ref[0])) - idx = np.unravel_index(np.argmax(diff), diff.shape) + lre = _log_relative_error(test[0], ref[0]) + idx = np.unravel_index(np.argmin(lre), lre.shape) + if lre[idx] < min_cdd: + min_cdd = tmp; - if diff[idx] != 0.0: - tmp = - np.log10(diff[idx]) + #diff = np.fabs(np.subtract(test[0], ref[0])) + #idx = np.unravel_index(np.argmax(diff), diff.shape) - if tmp < min_cdd: - min_cdd = tmp; + #if diff[idx] != 0.0: + # tmp = - np.log10(diff[idx]) + + # if tmp < min_cdd: + # min_cdd = tmp; if np.floor(min_cdd) >= atol: return True @@ -129,6 +136,36 @@ def epanet_mincdd_compare(path_test, path_ref, rtol, atol): raise AssertionError('min_cdd=%d less than atol=%g' % (min_cdd, atol)) +def _log_relative_error(q, c): + ''' + Computes log relative error, a measure of numerical accuracy. + + Single precision machine epsilon is between 2^-24 and 2^-23. + + Reference: + McCullough, B. D. "Assessing the Reliability of Statistical Software: Part I." + The American Statistician, vol. 52, no. 4, 1998, pp. 358-366. + ''' + diff = np.subtract(q, c) + tmp_c = np.copy(c) + + # If ref value is small compute absolute error + tmp_c[np.fabs(tmp_c) < 1.0e-6] = 1.0 + re = np.fabs(diff)/np.fabs(tmp_c) + + # If re is tiny set lre to number of digits + re[re < 1.0e-7] = 1.0e-7 + # If re is very large set lre to zero + re[re > 2.0] = 1.0 + + lre = np.negative(np.log10(re)) + + # If lre is negative set to zero + lre[lre < 1.0] = 0.0 + + return lre + + def epanet_report_compare(path_test, path_ref, rtol, atol): ''' Compares results in two report files ignoring contents of header and footer. @@ -152,9 +189,12 @@ def epanet_report_compare(path_test, path_ref, rtol, atol): RunTimeError() ... ''' + +# Comparison of Status Report files turned off - L.Rossman (4/20/21) + + ''' HEADER = 10 FOOTER = 2 - ''' with open(path_test ,'r') as ftest, open(path_ref, 'r') as fref: for (test_line, ref_line) in it.izip(hdf.parse(ftest, HEADER, FOOTER)[1], diff --git a/tools/nrtest-epanet/setup.py b/tools/nrtest-epanet/setup.py index 65fea94..1bf357c 100644 --- a/tools/nrtest-epanet/setup.py +++ b/tools/nrtest-epanet/setup.py @@ -18,7 +18,7 @@ entry_points = { 'nrtest.compare': [ 'epanet allclose = nrtest_epanet:epanet_allclose_compare', #'epanet mincdd = nrtest_epanet:epanet_mincdd_compare', - #'epanet report = nrtest_epanet:epanet_report_compare', + 'epanet report = nrtest_epanet:epanet_report_compare', # Add entry point for new comparison functions here ] } diff --git a/tools/test-config.sh b/tools/test-config.sh index e94195b..f06e9dd 100644 --- a/tools/test-config.sh +++ b/tools/test-config.sh @@ -16,7 +16,6 @@ # Suggested Usage: # $ for file in .//*; do ./test-config.sh $file 1.0 > "${file%.*}.json"; done # -# "${name}.rpt": "epanet report", filename="$1" name="${filename%.*}" @@ -38,6 +37,7 @@ cat< Date: Wed, 21 Apr 2021 00:09:36 -0400 Subject: [PATCH 050/233] Update setup.py --- tools/nrtest-epanet/setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/nrtest-epanet/setup.py b/tools/nrtest-epanet/setup.py index 1bf357c..0becedf 100644 --- a/tools/nrtest-epanet/setup.py +++ b/tools/nrtest-epanet/setup.py @@ -18,7 +18,8 @@ entry_points = { 'nrtest.compare': [ 'epanet allclose = nrtest_epanet:epanet_allclose_compare', #'epanet mincdd = nrtest_epanet:epanet_mincdd_compare', - 'epanet report = nrtest_epanet:epanet_report_compare', + #'epanet report = nrtest_epanet:epanet_report_compare', + 'epanet report = null', # Add entry point for new comparison functions here ] } From 650d8e8e53b92d78ec8a1cf9608ede19f43e3dfc Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 21 Apr 2021 00:24:27 -0400 Subject: [PATCH 051/233] Revert "Update setup.py" This reverts commit b77094e694cbbbdf8de28f053de31715dd079e18. --- tools/nrtest-epanet/setup.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/nrtest-epanet/setup.py b/tools/nrtest-epanet/setup.py index 0becedf..1bf357c 100644 --- a/tools/nrtest-epanet/setup.py +++ b/tools/nrtest-epanet/setup.py @@ -18,8 +18,7 @@ entry_points = { 'nrtest.compare': [ 'epanet allclose = nrtest_epanet:epanet_allclose_compare', #'epanet mincdd = nrtest_epanet:epanet_mincdd_compare', - #'epanet report = nrtest_epanet:epanet_report_compare', - 'epanet report = null', + 'epanet report = nrtest_epanet:epanet_report_compare', # Add entry point for new comparison functions here ] } From b1255dead8d37686d3c4e5b6c12071d9a3720c54 Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Tue, 15 Jun 2021 16:15:54 +0300 Subject: [PATCH 052/233] Fix check for roughness coefficient Fix check for roughness coefficient --- src/input3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/input3.c b/src/input3.c index e89d6e1..829e990 100644 --- a/src/input3.c +++ b/src/input3.c @@ -302,7 +302,7 @@ int pipedata(Project *pr) if (!getfloat(parser->Tok[4], &diam)) return setError(parser, 4, 202); if (diam <= 0.0) return setError(parser, 4, 211); if (!getfloat(parser->Tok[5], &rcoeff)) return setError(parser, 5, 202); - if (rcoeff <= 0.0) setError(parser, 5, 211); + if (rcoeff <= 0.0) return setError(parser, 5, 211); // Either a loss coeff. or a status is supplied if (n == 7) From 6728a59e63d95bcbe675139eda07479a9554722d Mon Sep 17 00:00:00 2001 From: mariosmsk Date: Sat, 26 Jun 2021 12:01:19 +0300 Subject: [PATCH 053/233] node is not a tank --- src/epanet.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 4a21fbc..0326625 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2376,7 +2376,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu break; case EN_TANKLEVEL: - if (index <= nJuncs) return 0; + if (index <= nJuncs) return 203; j = index - nJuncs; if (Tank[j].A == 0.0) /* Tank is a reservoir */ { @@ -2400,9 +2400,9 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu case EN_TANKDIAM: if (value <= 0.0) return 209; // invalid diameter - if (index <= nJuncs) return 0; // node is not a tank + if (index <= nJuncs) return 203; // node is not a tank j = index - nJuncs; // tank index - if (Tank[j].A == 0.0) return 0; // tank is a reservoir + if (Tank[j].A == 0.0) return 203; // tank is a reservoir value /= Ucf[ELEV]; // diameter in feet Tank[j].A = PI * SQR(value) / 4.0; // new tank area if (Tank[j].Vcurve > 0) // tank has a volume curve @@ -2424,9 +2424,9 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu case EN_MINVOLUME: if (value < 0.0) return 209; // invalid volume - if (index <= nJuncs) return 0; // node is not a tank + if (index <= nJuncs) return 203; // node is not a tank j = index - nJuncs; // tank index - if (Tank[j].A == 0.0) return 0; // tank is a reservoir + if (Tank[j].A == 0.0) return 203; // tank is a reservoir i = Tank[j].Vcurve; // volume curve index if (i > 0) // tank has a volume curve { @@ -2459,9 +2459,9 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu i = ROUND(value); // curve index if (i <= 0 || i > net->Ncurves) return 205; // invalid curve index - if (index <= nJuncs) return 0; // node not a tank + if (index <= nJuncs) return 203; // node not a tank j = index - nJuncs; // tank index - if (Tank[j].A == 0.0) return 0; // tank is a reservoir + if (Tank[j].A == 0.0) return 203; // tank is a reservoir curve = &net->Curve[i]; // curve object // Check that tank's min/max levels lie within curve @@ -2481,9 +2481,9 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu case EN_MINLEVEL: if (value < 0.0) return 209; // invalid water level - if (index <= nJuncs) return 0; // node not a tank + if (index <= nJuncs) return 203; // node not a tank j = index - nJuncs; // tank index - if (Tank[j].A == 0.0) return 0; // tank is a reservoir + if (Tank[j].A == 0.0) return 203; // tank is a reservoir hTmp = value / Ucf[ELEV] + Node[index].El; // convert level to head if (hTmp >= Tank[j].Hmax || hTmp > Tank[j].H0) return 225; // invalid water levels @@ -2502,9 +2502,9 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu case EN_MAXLEVEL: if (value <= 0.0) return 209; // invalid water level - if (index <= nJuncs) return 0; // node not a tank + if (index <= nJuncs) return 203; // node not a tank j = index - nJuncs; // tank index - if (Tank[j].A == 0.0) return 0; // tank is a reservoir + if (Tank[j].A == 0.0) return 203; // tank is a reservoir hTmp = value / Ucf[ELEV] + Node[index].El; // convert level to head if (hTmp < Tank[j].Hmin || hTmp < Tank[j].H0) return 225; // invalid water levels @@ -2521,7 +2521,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu case EN_MIXMODEL: j = ROUND(value); - if (index <= nJuncs) return 0; + if (index <= nJuncs) return 203; if (j < MIX1 || j > LIFO) return 251; if (Tank[index - nJuncs].A > 0.0) { @@ -2530,7 +2530,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu break; case EN_MIXFRACTION: - if (index <= nJuncs) return 0; + if (index <= nJuncs) return 203; if (value < 0.0 || value > 1.0) return 209; j = index - nJuncs; if (Tank[j].A > 0.0) @@ -2540,7 +2540,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu break; case EN_TANK_KBULK: - if (index <= nJuncs) return 0; + if (index <= nJuncs) return 203; j = index - nJuncs; if (Tank[j].A > 0.0) { @@ -2550,7 +2550,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu break; case EN_CANOVERFLOW: - if (Node[index].Type != TANK) return 0; + if (Node[index].Type != TANK) return 203; Tank[index - nJuncs].CanOverflow = (value != 0.0); break; @@ -2634,7 +2634,7 @@ int DLLEXPORT EN_settankdata(EN_Project p, int index, double elev, if (!p->Openflag) return 102; if (index <= net->Njuncs || index > net->Nnodes) return 203; j = index - net->Njuncs; - if (Tank[j].A == 0) return 0; // Tank is a Reservoir + if (Tank[j].A == 0) return 203; // Tank is a Reservoir // Check for valid parameter values if (initlvl < 0.0 || minlvl < 0.0 || maxlvl < 0.0) return 209; From 79b2c4c8eea42fbe4e1570eb2809d64fc9ce2bed Mon Sep 17 00:00:00 2001 From: mariosmsk Date: Sat, 26 Jun 2021 17:11:33 +0300 Subject: [PATCH 054/233] add new errcode 263 "node is not a tank" --- src/epanet.c | 34 +++++++++++++++++----------------- src/errors.dat | 1 + 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 0326625..3a20c57 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2376,7 +2376,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu break; case EN_TANKLEVEL: - if (index <= nJuncs) return 203; + if (index <= nJuncs) return 263; j = index - nJuncs; if (Tank[j].A == 0.0) /* Tank is a reservoir */ { @@ -2400,9 +2400,9 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu case EN_TANKDIAM: if (value <= 0.0) return 209; // invalid diameter - if (index <= nJuncs) return 203; // node is not a tank + if (index <= nJuncs) return 263; // node is not a tank j = index - nJuncs; // tank index - if (Tank[j].A == 0.0) return 203; // tank is a reservoir + if (Tank[j].A == 0.0) return 263; // tank is a reservoir value /= Ucf[ELEV]; // diameter in feet Tank[j].A = PI * SQR(value) / 4.0; // new tank area if (Tank[j].Vcurve > 0) // tank has a volume curve @@ -2424,9 +2424,9 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu case EN_MINVOLUME: if (value < 0.0) return 209; // invalid volume - if (index <= nJuncs) return 203; // node is not a tank + if (index <= nJuncs) return 263; // node is not a tank j = index - nJuncs; // tank index - if (Tank[j].A == 0.0) return 203; // tank is a reservoir + if (Tank[j].A == 0.0) return 263; // tank is a reservoir i = Tank[j].Vcurve; // volume curve index if (i > 0) // tank has a volume curve { @@ -2459,9 +2459,9 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu i = ROUND(value); // curve index if (i <= 0 || i > net->Ncurves) return 205; // invalid curve index - if (index <= nJuncs) return 203; // node not a tank + if (index <= nJuncs) return 263; // node not a tank j = index - nJuncs; // tank index - if (Tank[j].A == 0.0) return 203; // tank is a reservoir + if (Tank[j].A == 0.0) return 263; // tank is a reservoir curve = &net->Curve[i]; // curve object // Check that tank's min/max levels lie within curve @@ -2481,9 +2481,9 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu case EN_MINLEVEL: if (value < 0.0) return 209; // invalid water level - if (index <= nJuncs) return 203; // node not a tank + if (index <= nJuncs) return 263; // node not a tank j = index - nJuncs; // tank index - if (Tank[j].A == 0.0) return 203; // tank is a reservoir + if (Tank[j].A == 0.0) return 263; // tank is a reservoir hTmp = value / Ucf[ELEV] + Node[index].El; // convert level to head if (hTmp >= Tank[j].Hmax || hTmp > Tank[j].H0) return 225; // invalid water levels @@ -2502,9 +2502,9 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu case EN_MAXLEVEL: if (value <= 0.0) return 209; // invalid water level - if (index <= nJuncs) return 203; // node not a tank + if (index <= nJuncs) return 263; // node not a tank j = index - nJuncs; // tank index - if (Tank[j].A == 0.0) return 203; // tank is a reservoir + if (Tank[j].A == 0.0) return 263; // tank is a reservoir hTmp = value / Ucf[ELEV] + Node[index].El; // convert level to head if (hTmp < Tank[j].Hmin || hTmp < Tank[j].H0) return 225; // invalid water levels @@ -2521,7 +2521,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu case EN_MIXMODEL: j = ROUND(value); - if (index <= nJuncs) return 203; + if (index <= nJuncs) return 263; if (j < MIX1 || j > LIFO) return 251; if (Tank[index - nJuncs].A > 0.0) { @@ -2530,7 +2530,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu break; case EN_MIXFRACTION: - if (index <= nJuncs) return 203; + if (index <= nJuncs) return 263; if (value < 0.0 || value > 1.0) return 209; j = index - nJuncs; if (Tank[j].A > 0.0) @@ -2540,7 +2540,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu break; case EN_TANK_KBULK: - if (index <= nJuncs) return 203; + if (index <= nJuncs) return 263; j = index - nJuncs; if (Tank[j].A > 0.0) { @@ -2550,7 +2550,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu break; case EN_CANOVERFLOW: - if (Node[index].Type != TANK) return 203; + if (Node[index].Type != TANK) return 263; Tank[index - nJuncs].CanOverflow = (value != 0.0); break; @@ -2632,9 +2632,9 @@ int DLLEXPORT EN_settankdata(EN_Project p, int index, double elev, // Check that tank exists if (!p->Openflag) return 102; - if (index <= net->Njuncs || index > net->Nnodes) return 203; + if (index <= net->Njuncs || index > net->Nnodes) return 263; j = index - net->Njuncs; - if (Tank[j].A == 0) return 203; // Tank is a Reservoir + if (Tank[j].A == 0) return 263; // Tank is a Reservoir // Check for valid parameter values if (initlvl < 0.0 || minlvl < 0.0 || maxlvl < 0.0) return 209; diff --git a/src/errors.dat b/src/errors.dat index 7a18303..65cb39a 100644 --- a/src/errors.dat +++ b/src/errors.dat @@ -61,6 +61,7 @@ DAT(259,"attempt to delete a node that still has links connected to it") DAT(260,"attempt to delete node assigned as a Trace Node") DAT(261,"attempt to delete a node or link contained in a control") DAT(262,"attempt to modify network structure while solver is active") +DAT(263,"node is not a tank") // File errors DAT(301,"identical file names") From 1df2ea80b06750a3f4beb253ee2fe59ab65e28f1 Mon Sep 17 00:00:00 2001 From: Sahand Tashak Date: Tue, 20 Jul 2021 22:58:43 -0400 Subject: [PATCH 055/233] Method parameter types need to match definitions in epanet2.c --- include/epanet.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/epanet.cs b/include/epanet.cs index 7081459..2cec376 100644 --- a/include/epanet.cs +++ b/include/epanet.cs @@ -475,7 +475,7 @@ namespace EpanetCSharpLibrary //Link Functions [DllImport(EPANETDLL, EntryPoint = "ENaddlink")] - public static extern int ENaddlink(string id, int linkType, string fromNode, string toNode, string index); + public static extern int ENaddlink(string id, int linkType, string fromNode, string toNode, ref int index); [DllImport(EPANETDLL, EntryPoint = "ENdeletelink")] public static extern int ENdeletelink(int index, int actionCode); @@ -517,7 +517,7 @@ namespace EpanetCSharpLibrary public static extern int ENgetvertex(int index, int vertex, ref double x, ref double y); [DllImport(EPANETDLL, EntryPoint = "ENsetvertices")] - public static extern int ENsetvertices(int index, ref double x, ref double y, int count); + public static extern int ENsetvertices(int index, ref double[] x, ref double[] y, int count); //Pump Functions @@ -595,7 +595,7 @@ namespace EpanetCSharpLibrary public static extern int ENgetcurve(int index, string id, ref int nPoints, ref float xValues, ref float yValues); [DllImport(EPANETDLL, EntryPoint = "ENsetcurve")] - public static extern int ENsetcurve(int index, ref float xValues, ref float yValues, int nPoints); + public static extern int ENsetcurve(int index, ref float[] xValues, ref float[] yValues, int nPoints); //Simple Control Functions @@ -659,4 +659,4 @@ namespace EpanetCSharpLibrary #endregion } -} \ No newline at end of file +} From 886a5cf266f5a5ecf2eaa3e502330689bb6ea3dc Mon Sep 17 00:00:00 2001 From: james uber Date: Wed, 8 Sep 2021 10:49:57 -0400 Subject: [PATCH 056/233] Bugfix for En_getaveragepatternvalue() Fixes a bug where 0 was not considered to be a valid pattern index. --- src/epanet.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/epanet.c b/src/epanet.c index 3a20c57..7cb2b0b 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -4525,7 +4525,7 @@ int DLLEXPORT EN_getaveragepatternvalue(EN_Project p, int index, double *value) *value = 0.0; if (!p->Openflag) return 102; - if (index < 1 || index > net->Npats) return 205; + if (index < 0 || index > net->Npats) return 205; for (i = 0; i < Pattern[index].Length; i++) { *value += (double)Pattern[index].F[i]; From 3be813facb21fad593fa18f517ab4ed4e10cc804 Mon Sep 17 00:00:00 2001 From: james uber Date: Thu, 23 Sep 2021 11:04:19 -0400 Subject: [PATCH 057/233] Return MISSING as initial valve setting If the initial setting is indeed MISSING, that means the status of the valve has been set to OPEN or CLOSED, and the valve is non-functional (until the setting is changed by a control). This change is required to be able to accurately see the initial setting, because the status does not distinguish between open and active valves. --- src/epanet.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 7cb2b0b..2bee08a 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -3635,8 +3635,7 @@ int DLLEXPORT EN_getlinkvalue(EN_Project p, int index, int property, double *val { return EN_getlinkvalue(p, index, EN_ROUGHNESS, value); } - if (Link[index].Kc == MISSING) v = 0.0; - else v = Link[index].Kc; + v = Link[index].Kc; switch (Link[index].Type) { case PRV: @@ -3649,6 +3648,9 @@ int DLLEXPORT EN_getlinkvalue(EN_Project p, int index, int property, double *val default: break; } + if (Link[index].Kc == MISSING) { + v = MISSING; + } break; case EN_KBULK: From d552d0c92cf7d6721c1253cff16506e3d5477770 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sat, 25 Sep 2021 09:32:20 -0400 Subject: [PATCH 058/233] Removes silent change to WQ option for 0 duration run --- src/input1.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/input1.c b/src/input1.c index e79da83..6145983 100644 --- a/src/input1.c +++ b/src/input1.c @@ -229,9 +229,6 @@ void adjustdata(Project *pr) // Report start time cannot be greater than simulation duration if (time->Rstart > time->Dur) time->Rstart = 0; - // No water quality analysis for single period run - if (time->Dur == 0) qual->Qualflag = NONE; - // If no quality timestep, then make it 1/10 of hydraulic timestep if (time->Qstep == 0) time->Qstep = time->Hstep / 10; From afda609223472cd4f871e19257bbb7427e26485d Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Fri, 14 Jan 2022 08:50:33 -0500 Subject: [PATCH 059/233] Adds get/set for default demand pattern to toolkit --- include/epanet2_enums.h | 3 ++- src/epanet.c | 9 +++++++++ src/hydraul.c | 2 ++ src/inpfile.c | 2 ++ src/input1.c | 16 +++++----------- src/types.h | 4 ++-- 6 files changed, 22 insertions(+), 14 deletions(-) diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index 53a3103..a000b0c 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -320,7 +320,8 @@ typedef enum { EN_BULKORDER = 19, //!< Bulk water reaction order for pipes EN_WALLORDER = 20, //!< Wall reaction order for pipes (either 0 or 1) EN_TANKORDER = 21, //!< Bulk water reaction order for tanks - EN_CONCENLIMIT = 22 //!< Limiting concentration for growth reactions + EN_CONCENLIMIT = 22, //!< Limiting concentration for growth reactions + EN_DEMANDPATTERN = 23 //!< Name of default demand pattern } EN_Option; /// Simple control types diff --git a/src/epanet.c b/src/epanet.c index 2bee08a..361cfd6 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1188,6 +1188,9 @@ int DLLEXPORT EN_getoption(EN_Project p, int option, double *value) v = qual->Climit * p->Ucf[QUALITY]; break; + case EN_DEMANDPATTERN: + v = hyd->DefPat; + default: return 251; } @@ -1344,6 +1347,12 @@ int DLLEXPORT EN_setoption(EN_Project p, int option, double value) qual->Climit = value / p->Ucf[QUALITY]; break; + case EN_DEMANDPATTERN: + pat = ROUND(value); + if (pat < 0 || pat > net->Npats) return 205; + hyd->DefPat = pat; + break; + default: return 251; } diff --git a/src/hydraul.c b/src/hydraul.c index 6ce427d..91a5c5a 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -485,6 +485,8 @@ void demands(Project *pr) { // pattern period (k) = (elapsed periods) modulus (periods per pattern) j = demand->Pat; + if (j == 0) + j = hyd->DefPat; k = p % (long)net->Pattern[j].Length; djunc = (demand->Base) * net->Pattern[j].F[k] * hyd->Dmult; if (djunc > 0.0) hyd->Dsystem += djunc; diff --git a/src/inpfile.c b/src/inpfile.c index c8eb1a9..91c9fc9 100644 --- a/src/inpfile.c +++ b/src/inpfile.c @@ -666,6 +666,8 @@ int saveinpfile(Project *pr, const char *fname) break; } + if (hyd->DefPat > 0) + fprintf(f, "\n PATTERN %s", net->Pattern[hyd->DefPat].ID); fprintf(f, "\n DEMAND MULTIPLIER %-.4f", hyd->Dmult); fprintf(f, "\n EMITTER EXPONENT %-.4f", 1.0 / hyd->Qexp); fprintf(f, "\n VISCOSITY %-.6f", hyd->Viscos / VISCOS); diff --git a/src/input1.c b/src/input1.c index 6145983..c83d877 100644 --- a/src/input1.c +++ b/src/input1.c @@ -97,7 +97,6 @@ void setdefaults(Project *pr) parser->Unitsflag = US; // US unit system parser->Flowflag = GPM; // Flow units are gpm parser->Pressflag = PSI; // Pressure units are psi - parser->DefPat = 0; // Default demand pattern index out->Hydflag = SCRATCH; // No external hydraulics file rpt->Tstatflag = SERIES; // Generate time series output @@ -121,6 +120,7 @@ void setdefaults(Project *pr) hyd->Epump = EPUMP; // Default pump efficiency hyd->Emax = 0.0; // Zero peak energy usage hyd->Qexp = 2.0; // Flow exponent for emitters + hyd->DefPat = 0; // Default demand pattern index hyd->Dmult = 1.0; // Demand multiplier hyd->RQtol = RQTOL; // Default hydraulics parameters hyd->CheckFreq = CHECKFREQ; @@ -319,16 +319,10 @@ void adjustdata(Project *pr) if (tank->Kb == MISSING) tank->Kb = qual->Kbulk; } - // Use default pattern if none assigned to a demand - parser->DefPat = findpattern(net, parser->DefPatID); - if (parser->DefPat > 0) for (i = 1; i <= net->Nnodes; i++) - { - node = &net->Node[i]; - for (demand = node->D; demand != NULL; demand = demand->next) - { - if (demand->Pat == 0) demand->Pat = parser->DefPat; - } - } + // Set default pattern index + i = findpattern(net, parser->DefPatID); + if (i > 0) + hyd->DefPat = i; // Remove QUALITY as a reporting variable if no WQ analysis if (qual->Qualflag == NONE) rpt->Field[QUALITY].Enabled = FALSE; diff --git a/src/types.h b/src/types.h index 788eb20..b0e91b5 100755 --- a/src/types.h +++ b/src/types.h @@ -573,8 +573,7 @@ typedef struct { ErrTok, // Index of error-producing token Unitsflag, // Unit system flag Flowflag, // Flow units flag - Pressflag, // Pressure units flag - DefPat; // Default demand pattern + Pressflag; // Pressure units flag Spattern *PrevPat; // Previous pattern processed Scurve *PrevCurve; // Previous curve processed @@ -735,6 +734,7 @@ typedef struct { *Xflow; // Inflow - outflow at each node int + DefPat, // Default demand pattern Epat, // Energy cost time pattern DemandModel, // Fixed or pressure dependent Formflag, // Head loss formula flag From 14de37d0cb50b983f3510825cf7316518c9d28e4 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Fri, 14 Jan 2022 09:09:32 -0500 Subject: [PATCH 060/233] Adjust default pattern index after a pattern is deleted --- src/epanet.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/epanet.c b/src/epanet.c index 361cfd6..3c3412a 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -4387,6 +4387,10 @@ int DLLEXPORT EN_deletepattern(EN_Project p, int index) if (hyd->Epat == index) hyd->Epat = 0; else if (hyd->Epat > index) hyd->Epat--; + // Modify global default demand pattern + if (hyd->DefPat == index) hyd->DefPat = 0; + else if (hyd->DefPat > index) hyd->DefPat--; + // Free the pattern's factor array FREE(net->Pattern[index].F); FREE(net->Pattern[index].Comment); From f9189d04b48532d81af98e3b0546d0a33c113715 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sat, 15 Jan 2022 11:21:24 -0500 Subject: [PATCH 061/233] Updates to default demand pattern fix --- src/epanet.c | 3 +-- src/input1.c | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 3c3412a..9a3c194 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1187,10 +1187,9 @@ int DLLEXPORT EN_getoption(EN_Project p, int option, double *value) case EN_CONCENLIMIT: v = qual->Climit * p->Ucf[QUALITY]; break; - case EN_DEMANDPATTERN: v = hyd->DefPat; - + break; default: return 251; } diff --git a/src/input1.c b/src/input1.c index c83d877..540225d 100644 --- a/src/input1.c +++ b/src/input1.c @@ -212,9 +212,7 @@ void adjustdata(Project *pr) int i; double ucf; // Unit conversion factor - Pdemand demand; // Pointer to demand record Slink *link; - Snode *node; Stank *tank; // Use 1 hr pattern & report time step if none specified From 43092c8647408c2a668bcae164c866ed4f77df74 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sat, 15 Jan 2022 11:37:35 -0500 Subject: [PATCH 062/233] Update test_node.cpp --- tests/test_node.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_node.cpp b/tests/test_node.cpp index aa3e21e..5bcf8cf 100644 --- a/tests/test_node.cpp +++ b/tests/test_node.cpp @@ -89,7 +89,7 @@ BOOST_FIXTURE_TEST_CASE(test_junc_props, FixtureOpenClose) double *value = test.data(); error = EN_getnodeindex(ph, (char *)"11", &index); - std::vector ref = {710.0, 150.0, 1.0, 0.0, 0.5}; + std::vector ref = {710.0, 150.0, 0.0, 0.0, 0.5}; // Ranged for loop iterates over property set From 070901d6bf26255ed9e51c05cd3ba86c4a08e7b1 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Mon, 14 Feb 2022 11:03:22 -0500 Subject: [PATCH 063/233] Update hydsolver.c --- src/hydsolver.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/hydsolver.c b/src/hydsolver.c index c3b5979..ff2f352 100644 --- a/src/hydsolver.c +++ b/src/hydsolver.c @@ -555,8 +555,8 @@ void newdemandflows(Project *pr, Hydbalance *hbal, double *qsum, double *dqsum) dq *= hyd->RelaxFactor; // Prevent a flow change greater than full demand - if (fabs(dq) > hyd->NodeDemand[i]) - dq = 0.5 * SGN(dq) * hyd->NodeDemand[i]; + if (fabs(dq) > 0.4 * hyd->NodeDemand[i]) + dq = 0.4 * SGN(dq) * hyd->NodeDemand[i]; hyd->DemandFlow[i] -= dq; // Update system flow summation @@ -658,9 +658,11 @@ int pdaconverged(Project *pr) { Hydraul *hyd = &pr->hydraul; - const double TOL = 0.001; + const double QTOL = 0.0001; // 0.0001 cfs ~= 0.005 gpm ~= 0.2 lpm) int i, converged = 1; double totalDemand = 0.0, totalReduction = 0.0; + double dp = hyd->Preq - hyd->Pmin; + double p, q, r; hyd->DeficientNodes = 0; hyd->DemandReduction = 0.0; @@ -670,15 +672,25 @@ int pdaconverged(Project *pr) { // Skip nodes whose required demand is non-positive if (hyd->NodeDemand[i] <= 0.0) continue; + + // Evaluate demand equation at current pressure solution + p = hyd->NodeHead[i] - pr->network.Node[i].El; + if (p <= hyd->Pmin) + q = 0.0; + else if (p >= hyd->Preq) + q = hyd->NodeDemand[i]; + else + { + r = (p - hyd->Pmin) / dp; + q = hyd->NodeDemand[i] * pow(r, hyd->Pexp); + } - // Check for negative demand flow or positive demand flow at negative pressure - if (hyd->DemandFlow[i] < -TOL) converged = 0; - if (hyd->DemandFlow[i] > TOL && - hyd->NodeHead[i] - pr->network.Node[i].El - hyd->Pmin < -TOL) - converged = 0; + // Check if demand has not converged + if (fabs(q - hyd->DemandFlow[i]) > QTOL) + converged = 0; // Accumulate total required demand and demand deficit - if (hyd->DemandFlow[i] + 0.0001 < hyd->NodeDemand[i]) + if (hyd->DemandFlow[i] + QTOL < hyd->NodeDemand[i]) { hyd->DeficientNodes++; totalDemand += hyd->NodeDemand[i]; From a63f553b5f435bf3d13b8acc3e2b4577f5436ddf Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Mon, 14 Feb 2022 11:19:00 -0500 Subject: [PATCH 064/233] Adds PDA convergence test --- src/hydcoeffs.c | 18 +++++++++++------- src/hydsolver.c | 2 +- tools/nrtest-epanet/nrtest_epanet/__init__.py | 6 ++++-- tools/run-nrtest.sh | 4 ++-- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index 8fe5426..ff18996 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 10/04/2019 + Last Updated: 02/14/2022 ****************************************************************************** */ @@ -400,7 +400,7 @@ void emitterheadloss(Project *pr, int i, double *hloss, double *hgrad) // Use linear head loss function for small gradient if (*hgrad < hyd->RQtol) { - *hgrad = hyd->RQtol; + *hgrad = hyd->RQtol / hyd->Qexp; *hloss = (*hgrad) * q; } @@ -492,7 +492,7 @@ void demandheadloss(Project *pr, int i, double dp, double n, // ... use linear function for very small gradient if (*hgrad < hyd->RQtol) { - *hgrad = hyd->RQtol; + *hgrad = hyd->RQtol / n; *hloss = (*hgrad) * d; } else *hloss = (*hgrad) * d / n; @@ -553,7 +553,7 @@ void pipecoeff(Project *pr, int k) // ... use linear function for very small gradient if (hgrad < hyd->RQtol) { - hgrad = hyd->RQtol; + hgrad = hyd->RQtol / hyd->Hexp; hloss = hgrad * q; } // ... otherwise use original formula @@ -691,6 +691,8 @@ void pumpcoeff(Project *pr, int k) hgrad; // Head loss gradient Spump *pump; + double qstar; + // Use high resistance pipe if pump closed or cannot deliver head setting = hyd->LinkSetting[k]; if (hyd->LinkStatus[k] <= CLOSED || setting == 0.0) @@ -748,12 +750,14 @@ void pumpcoeff(Project *pr, int k) if (hgrad > CBIG) { hgrad = CBIG; - hloss = -hgrad * hyd->LinkFlow[k]; + qstar = sqrt(-r / hgrad); + hloss = (r / qstar) - hgrad * (qstar - q); } else if (hgrad < hyd->RQtol) { hgrad = hyd->RQtol; - hloss = -hgrad * hyd->LinkFlow[k]; + qstar = sqrt(-r / hgrad); + hloss = (r / qstar) - hgrad * (qstar - q); } // ... otherwise compute head loss from pump curve else @@ -1131,7 +1135,7 @@ void valvecoeff(Project *pr, int k) // Guard against too small a head loss gradient if (hgrad < hyd->RQtol) { - hgrad = hyd->RQtol; + hgrad = hyd->RQtol / 2.0; hloss = flow * hgrad; } else hloss = flow * hgrad / 2.0; diff --git a/src/hydsolver.c b/src/hydsolver.c index ff2f352..25c6752 100644 --- a/src/hydsolver.c +++ b/src/hydsolver.c @@ -8,7 +8,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 07/15/2019 + Last Updated: 02/14/2022 ****************************************************************************** */ diff --git a/tools/nrtest-epanet/nrtest_epanet/__init__.py b/tools/nrtest-epanet/nrtest_epanet/__init__.py index 5c36f71..fa84ef5 100644 --- a/tools/nrtest-epanet/nrtest_epanet/__init__.py +++ b/tools/nrtest-epanet/nrtest_epanet/__init__.py @@ -102,7 +102,9 @@ def epanet_mincdd_compare(path_test, path_ref, rtol, atol): ValueError() AssertionError() - Modified by L. Rossman (4/20/21) + ''' + #Turned off by L. Rossman (4/20/21) + return True ''' min_cdd = 100.0 @@ -134,7 +136,7 @@ def epanet_mincdd_compare(path_test, path_ref, rtol, atol): return True else: raise AssertionError('min_cdd=%d less than atol=%g' % (min_cdd, atol)) - + ''' def _log_relative_error(q, c): ''' diff --git a/tools/run-nrtest.sh b/tools/run-nrtest.sh index cefeac6..6efa433 100755 --- a/tools/run-nrtest.sh +++ b/tools/run-nrtest.sh @@ -29,8 +29,8 @@ sut_output_path="benchmark/epanet-$3" nrtest_compare_cmd="nrtest compare" ref_output_path="benchmark/epanet-$2" -rtol_value=0.1 -atol_value=0.0 +rtol_value=0.01 +atol_value=0.0001 # change current directory to test_suite From f865cbbba845a07198abec070c9fa63a46c33559 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Mon, 14 Feb 2022 13:43:48 -0500 Subject: [PATCH 065/233] Update ReleaseNotes2_3.md --- ReleaseNotes2_3.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 3d7ba97..a22c38b 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -10,4 +10,6 @@ This document describes the changes and updates that have been made in version 2 - The `EN_getlinkvalue` and `EN_setlinkvalue` functions were updated to get and set the value of `EN_GPV_CURVE`. - Negative pressure values for `EN_SETTING` are now permitted in the `EN_setlinkvalue` function. - The `EN_STARTTIME` parameter was added into the `EN_settimeparam` function. + - The calculation of head loss gradient for low flow conditions was corrected. + - Improved updating and convergence tests were added to pressure dependent demand analysis. From 0687aa63e27d78ea46016453886d4c96b8f7b639 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Mon, 14 Feb 2022 15:10:18 -0500 Subject: [PATCH 066/233] Update ReleaseNotes2_3.md --- ReleaseNotes2_3.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index a22c38b..93d0897 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -12,4 +12,6 @@ This document describes the changes and updates that have been made in version 2 - The `EN_STARTTIME` parameter was added into the `EN_settimeparam` function. - The calculation of head loss gradient for low flow conditions was corrected. - Improved updating and convergence tests were added to pressure dependent demand analysis. + - + From 750dda1fe6f5029e044240664429c07ebb6e7721 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Mon, 14 Feb 2022 15:38:21 -0500 Subject: [PATCH 067/233] Update ReleaseNotes2_3.md --- ReleaseNotes2_3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 93d0897..0a176dd 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -12,6 +12,6 @@ This document describes the changes and updates that have been made in version 2 - The `EN_STARTTIME` parameter was added into the `EN_settimeparam` function. - The calculation of head loss gradient for low flow conditions was corrected. - Improved updating and convergence tests were added to pressure dependent demand analysis. - - + - From dbd3f6387dad540457170b2468311e3153e29f2b Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sat, 19 Mar 2022 13:25:55 -0400 Subject: [PATCH 068/233] Fixes possible integer overflow Fixes a possible integer overflow when computing time for a tank to fill/empty (issue #666 ). Also fixes issue #642 that failed to set a pump's initial setting to 0 when its initial status was CLOSED. --- src/hydraul.c | 8 +++++--- src/input3.c | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/hydraul.c b/src/hydraul.c index 91a5c5a..36cd67b 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/03/2020 + Last Updated: 03/19/2022 ****************************************************************************** */ @@ -668,7 +668,7 @@ int tanktimestep(Project *pr, long *tstep) Hydraul *hyd = &pr->hydraul; int i, n, tankIdx = 0; - double h, q, v; + double h, q, v, xt; long t; Stank *tank; @@ -691,7 +691,9 @@ int tanktimestep(Project *pr, long *tstep) else continue; // Find time to fill/drain tank - t = (long)ROUND(v / q); + xt = v / q; + if (ABS(xt) > *tstep + 1) continue; + t = (long)ROUND(xt); if (t > 0 && t < *tstep) { *tstep = t; diff --git a/src/input3.c b/src/input3.c index 829e990..50576a7 100644 --- a/src/input3.c +++ b/src/input3.c @@ -7,7 +7,7 @@ Description: parses network data from a line of an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 11/29/2019 +Last Updated: 03/19/2022 ****************************************************************************** */ @@ -2159,6 +2159,7 @@ void changestatus(Network *net, int j, StatusType status, double y) if (y == 0.0) status = CLOSED; } else if (status == OPEN) link->Kc = 1.0; + else if (status == CLOSED) link->Kc = 0.0; link->Status = status; } else if (link->Type >= PRV) From cecc941d29c779d593a18982b4fd25e75090b0a2 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sun, 20 Mar 2022 09:27:37 -0400 Subject: [PATCH 069/233] Update to force re-check of PR --- src/input3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/input3.c b/src/input3.c index 50576a7..c32eaf7 100644 --- a/src/input3.c +++ b/src/input3.c @@ -7,7 +7,7 @@ Description: parses network data from a line of an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 03/19/2022 +Last Updated: 03/20/2022 ****************************************************************************** */ From 4bdbe6cd78193fd13f7ae567bc3c46eb63534b18 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 30 Mar 2022 09:22:01 -0400 Subject: [PATCH 070/233] Modify const. HP pump --- src/hydcoeffs.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index ff18996..73c38a1 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/14/2022 + Last Updated: 03/30/2022 ****************************************************************************** */ @@ -691,8 +691,6 @@ void pumpcoeff(Project *pr, int k) hgrad; // Head loss gradient Spump *pump; - double qstar; - // Use high resistance pipe if pump closed or cannot deliver head setting = hyd->LinkSetting[k]; if (hyd->LinkStatus[k] <= CLOSED || setting == 0.0) @@ -746,19 +744,23 @@ void pumpcoeff(Project *pr, int k) { // ... compute pump curve's gradient hgrad = -r / q / q; - // ... use linear curve if gradient too large or too small + + // ... treat as closed link if gradient too large if (hgrad > CBIG) { - hgrad = CBIG; - qstar = sqrt(-r / hgrad); - hloss = (r / qstar) - hgrad * (qstar - q); + hyd->P[k] = 1.0 / CBIG; + hyd->Y[k] = hyd->LinkFlow[k]; + return; } - else if (hgrad < hyd->RQtol) + + // ... treat as open valve if gradient too small + else if (hgrad < CSMALL) { - hgrad = hyd->RQtol; - qstar = sqrt(-r / hgrad); - hloss = (r / qstar) - hgrad * (qstar - q); - } + hyd->P[k] = 1.0 / CSMALL; + hyd->Y[k] = hyd->LinkFlow[k]; + return; + } + // ... otherwise compute head loss from pump curve else { From 0945683bf9cd22d34ebd4c12b555151f6f8b1fc2 Mon Sep 17 00:00:00 2001 From: Luke Butler Date: Wed, 30 Mar 2022 11:14:05 -0400 Subject: [PATCH 071/233] Bug in example code for detecting error conditions EN_geterror doesn't take in the project wrapper, and you need to include maxLen --- doc/toolkit-usage.dox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/toolkit-usage.dox b/doc/toolkit-usage.dox index 3bf06de..6859317 100644 --- a/doc/toolkit-usage.dox +++ b/doc/toolkit-usage.dox @@ -34,7 +34,7 @@ void runHydraulics(EN_Project ph, char *inputFile, char *reportFile) ERRCODE(EN_solveH(ph)); ERRCODE(EN_saveH(ph)); ERRCODE(EN_report(ph)); - EN_geterror(ph, errcode, errmsg); + EN_geterror(errcode, errmsg, EN_MAXMSG); if (errcode) printf("\n%s\n", errmsg); } \endcode From 9c0b57618228958aa5537772abf907aeea97d371 Mon Sep 17 00:00:00 2001 From: Luke Butler Date: Wed, 30 Mar 2022 23:13:48 -0400 Subject: [PATCH 072/233] Fix for GPV controls in EN_saveinpfile EN_saveinpfile was incorrectly saving the index of the GPV head loss curve inside of a simple control instead of the control status --- src/inpfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/inpfile.c b/src/inpfile.c index 91c9fc9..bc5d4e6 100644 --- a/src/inpfile.c +++ b/src/inpfile.c @@ -425,7 +425,7 @@ int saveinpfile(Project *pr, const char *fname) link = &net->Link[j]; // Get text of control's link status/setting - if (control->Setting == MISSING) + if (control->Setting == MISSING || link->Type == GPV) { sprintf(s, " LINK %s %s ", link->ID, StatTxt[control->Status]); } From c500cddd6dd177e1a7b0e3c53261d709b093ba33 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Tue, 14 Jun 2022 09:36:56 -0400 Subject: [PATCH 073/233] fixes issue where a string position an underflow (#676) under some circumstances, like certain input lines that have long comments, the code here can cause an underflow in size_t which casts to a very large integer during comparison and results in the number of tokens being over-reported (max of 40). Most of these tokens are of course garbage. Changing this `len` variable to an integer permits it to be less than zero, thus allowing an exit from the `while` at L665. --- src/input2.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/input2.c b/src/input2.c index 27a0733..0ece6fd 100644 --- a/src/input2.c +++ b/src/input2.c @@ -630,7 +630,7 @@ int gettokens(char *s, char** Tok, int maxToks, char *comment) */ { int n; - size_t len, m; + int len, m; char *c, *c2; // clear comment @@ -648,10 +648,10 @@ int gettokens(char *s, char** Tok, int maxToks, char *comment) if (c2) { // there is a comment here, after the semi-colon. - len = strlen(c2); + len = (int)strlen(c2); if (len > 0) { - len = strcspn(c2, "\n\r"); + len = (int)strcspn(c2, "\n\r"); len = MIN(len, MAXMSG); strncpy(comment, c2, len); comment[MIN(len,MAXMSG)] = '\0'; From 09b44add36d98a4ea0c32a8e7622aae8cb8a31c6 Mon Sep 17 00:00:00 2001 From: Robert Janke Date: Tue, 14 Jun 2022 09:38:37 -0400 Subject: [PATCH 074/233] Update AUTHORS file - organize by release and order alphabetically (#573) * Update LICENSE * Update AUTHORS Co-authored-by: Sam Hatchett --- AUTHORS | 48 ++++++++++++++++++++++++++++++++---------------- LICENSE | 6 +++--- 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/AUTHORS b/AUTHORS index c1cda77..7e5301d 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,27 +1,43 @@ -# Authors ordered by first contribution. +# Authors ordered alphabetically. Authors with Contributions in the Public Domain: - Lewis Rossman Michael Tryby -Authors with Contributions Subject to Copyright (see LICENSE): +Version 2.0 +Lewis Rossman -Sam Hatchett -Feng Shang -James Uber -Tom Taxon -Hyoungmin Woo -Jinduan Chen -Yunier Soad -Mike Kane +Authors with Contributions Subject to Copyright (see LICENSE): +Except where noted. + +Version 2.1 +Jinduan Chen +Maurizio Cingi Demetrios Eliades Will Furnass -Steffen Macke +Milad Ghiami +Sam Hatchett +Mike Kane Marios Kyriakou -Elad Salomons -Maurizio Cingi -Bryant McDonnell +Steffen Macke Angela Marchi +Bryant McDonnell +Lew Rossman +Elad Salomons +Feng Shang +Yunier Soad +Tom Taxon +Michael Tryby (Contributions in the Public Domain) +James Uber +Hyoungmin Woo + +Version 2.2 +Demetrios Eliades +Sam Hatchett +Abel Heinsbroek +Marios Kyriakou +Lewis Rossman +Elad Salomons Markus Sunela -Milad Ghiami +Michael Tryby (Contributions in the Public Domain) + diff --git a/LICENSE b/LICENSE index 09e0360..bf633d4 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017 (see AUTHORS) +Copyright (c) 2019 (See AUTHORS) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -9,8 +9,8 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The above copyright notice, list of authors, and this permission notice shall +be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, From 13b5da52071b3794ca40fabe6490397a072f8918 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Tue, 14 Jun 2022 10:07:50 -0400 Subject: [PATCH 075/233] attempting hotfix for appveyor issues. curl needs to follow the redirect --- tools/before-test.cmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/before-test.cmd b/tools/before-test.cmd index 16ec3dd..063969e 100644 --- a/tools/before-test.cmd +++ b/tools/before-test.cmd @@ -58,7 +58,7 @@ IF NOT DEFINED PLATFORM ( :: hack to determine latest tag in epanet-example-networks repo set "LATEST_URL=https://github.com/OpenWaterAnalytics/epanet-example-networks/releases/latest" -FOR /F delims^=^"^ tokens^=2 %%g IN ('curl --silent %LATEST_URL%') DO ( set "LATEST_TAG=%%~nxg" ) +FOR /F delims^=^"^ tokens^=2 %%g IN ('curl -L --silent %LATEST_URL%') DO ( set "LATEST_TAG=%%~nxg" ) IF defined LATEST_TAG ( set "TESTFILES_URL=https://github.com/OpenWaterAnalytics/epanet-example-networks/archive/%LATEST_TAG%.zip" From f3b8e9db1891302c0ac9d2d6423590dd87ed64d1 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Tue, 14 Jun 2022 10:22:43 -0400 Subject: [PATCH 076/233] Update before-test.cmd --- tools/before-test.cmd | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/before-test.cmd b/tools/before-test.cmd index 063969e..e1bde5a 100644 --- a/tools/before-test.cmd +++ b/tools/before-test.cmd @@ -58,7 +58,10 @@ IF NOT DEFINED PLATFORM ( :: hack to determine latest tag in epanet-example-networks repo set "LATEST_URL=https://github.com/OpenWaterAnalytics/epanet-example-networks/releases/latest" -FOR /F delims^=^"^ tokens^=2 %%g IN ('curl -L --silent %LATEST_URL%') DO ( set "LATEST_TAG=%%~nxg" ) +FOR /F delims^=^"^ tokens^=2 %%g IN ('curl --silent %LATEST_URL%') DO ( set "LATEST_TAG=%%~nxg" ) + +:: even better hack to fix the latest test suite version +set "LATEST_TAG=v1.0.2-dev.10.zip" IF defined LATEST_TAG ( set "TESTFILES_URL=https://github.com/OpenWaterAnalytics/epanet-example-networks/archive/%LATEST_TAG%.zip" From c07674e95b1bd6f62fc043638530644aa4b2be78 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Tue, 14 Jun 2022 10:28:24 -0400 Subject: [PATCH 077/233] Update before-test.cmd --- tools/before-test.cmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/before-test.cmd b/tools/before-test.cmd index e1bde5a..d276761 100644 --- a/tools/before-test.cmd +++ b/tools/before-test.cmd @@ -61,7 +61,7 @@ set "LATEST_URL=https://github.com/OpenWaterAnalytics/epanet-example-networks/re FOR /F delims^=^"^ tokens^=2 %%g IN ('curl --silent %LATEST_URL%') DO ( set "LATEST_TAG=%%~nxg" ) :: even better hack to fix the latest test suite version -set "LATEST_TAG=v1.0.2-dev.10.zip" +set "LATEST_TAG=v1.0.2-dev.10" IF defined LATEST_TAG ( set "TESTFILES_URL=https://github.com/OpenWaterAnalytics/epanet-example-networks/archive/%LATEST_TAG%.zip" From 0b1e5408bfffd526c8f89f09a22de04f9d5c0797 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Mon, 27 Jun 2022 13:00:02 -0400 Subject: [PATCH 078/233] Update ReleaseNotes2_3.md --- ReleaseNotes2_3.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 0a176dd..3e3f924 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -10,8 +10,18 @@ This document describes the changes and updates that have been made in version 2 - The `EN_getlinkvalue` and `EN_setlinkvalue` functions were updated to get and set the value of `EN_GPV_CURVE`. - Negative pressure values for `EN_SETTING` are now permitted in the `EN_setlinkvalue` function. - The `EN_STARTTIME` parameter was added into the `EN_settimeparam` function. + - A `EN_DEMANDPATTERN` parameter was added as the index of the default time pattern used by demands with no specific pattern assigned. It can be set or retrieved with the `EN_setoption` and `EN_getoption` functions, respectively, and is saved to file when the `EN_saveinpfile` function is called. + - The `EN_getaveragepatternvalue` function will now accept a pattern index of 0 which represents the constant pattern assigned to junction demands by default. + - The adjustment of a tank's minimum volume (`Vmin`) when its parameters are changed using `EN_setnodevalue` or `EN_settankdata` has been corrected. + - A pump whose status is set to CLOSED in the input file now also has its speed setting set to 0 which fixes having a simple pressure control activate the pump correctly. + - A failure to raise an error condition for a pipe roughness <= 0 in the input file has been fixed. - The calculation of head loss gradient for low flow conditions was corrected. - Improved updating and convergence tests were added to pressure dependent demand analysis. - - + - Improved checks to prevent outflow from empty tanks or inflow to full (non-overflow) tanks. *(Still needs more work).* + - The CI regression test protocol was modified by: + - changing the absolute tolerance used to compare the closeness of test results to benchmark values from 0 to 0.0001 + - dropping the "correct decimal digits" test + - dropping the check for identical status report content since it prevents accepting code changes that produce more accurate solutions in fewer iterations. + From 92cef4692c0199959e5a7985a2f05835b1d12628 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Wed, 27 Jul 2022 14:01:45 -0400 Subject: [PATCH 079/233] Create conanfile.py --- conanfile.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 conanfile.py diff --git a/conanfile.py b/conanfile.py new file mode 100644 index 0000000..fb9db09 --- /dev/null +++ b/conanfile.py @@ -0,0 +1,45 @@ +from conans import ConanFile +from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout + +class EpanetConan(ConanFile): + name = "epanet" + version = "2.2" + description = "EPANET is an industry-standard program for modeling the hydraulic and water quality behavior of water distribution system pipe networks." + homepage = "https://github.com/OpenWaterAnalytics/EPANET" + url = "https://github.com/OpenWaterAnalytics/EPANET" + license = "MIT" + + # Binary configuration + settings = "os", "compiler", "build_type", "arch" + options = {"shared": [True, False], "fPIC": [True, False]} + default_options = {"shared": False, "fPIC": True} + + exports_sources = "CMakeLists.txt", "src/*", "include/*", "run/*" + + def config_options(self): + if self.settings.os == "Windows": + del self.options.fPIC + + def layout(self): + cmake_layout(self) + + def generate(self): + tc = CMakeToolchain(self) + tc.generate() + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def package(self): + self.copy("lib/libepanet2.dylib", "lib", keep_path=False) + self.copy("lib/libepanet-output.dylib", "lib", keep_path=False) + self.copy("*.h", "include", "include", keep_path=False) + self.copy("types.h", "include", "src", keep_path=False) + self.copy("hash.h", "include", "src", keep_path=False) + + def package_info(self): + self.cpp_info.libdirs = ["lib"] + self.cpp_info.libs = ["epanet2", "epanet-output"] + self.cpp_info.includedirs = ["include"] From 5f8ee49fd6480f4ecf38bd95e2d1328071d35d69 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Wed, 27 Jul 2022 14:18:50 -0400 Subject: [PATCH 080/233] adds an API function to get information about upcoming events --- include/epanet2_2.h | 10 ++++ include/epanet2_enums.h | 12 +++++ src/epanet.c | 107 ++++++++++++++++++++++++++-------------- src/funcs.h | 3 +- src/hydraul.c | 25 +++++----- 5 files changed, 109 insertions(+), 48 deletions(-) diff --git a/include/epanet2_2.h b/include/epanet2_2.h index 18ef127..4393073 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -638,6 +638,16 @@ typedef struct Project *EN_Project; */ int DLLEXPORT EN_getstatistic(EN_Project ph, int type, double* out_value); + + /** + @brief Get information about upcoming time step events, and what causes them. + @param ph an EPANET project handle. + @param[out] eventType the type of event that will occur. + @param[out] duration the amount of time in the future this event will occur + @param[out] elementIndex the index of the element causing the event. + **/ + int DLLEXPORT EN_timeToNextEvent(EN_Project ph, EN_TimestepEvent *eventType, long *duration, int *elementIndex); + /** @brief Retrieves the order in which a node or link appears in an @ref OutFile "output file". @param ph an EPANET project handle. diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index a000b0c..e0aa9ae 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -125,6 +125,18 @@ typedef enum { EN_NEXTEVENTTANK = 15 //!< Index of tank with shortest time to become empty or full (read only) } EN_TimeParameter; + +/** +These are the types of events that can cause a timestep to end. +**/ +typedef enum { + EN_STEP_REPORT = 0, + EN_STEP_HYD = 1, + EN_STEP_WQ = 2, + EN_STEP_TANKEVENT = 3, + EN_STEP_CONTROLEVENT = 4 +} EN_TimestepEvent; + /// Analysis convergence statistics /** These statistics report the convergence criteria for the most current hydraulic analysis diff --git a/src/epanet.c b/src/epanet.c index 9a3c194..9c5783c 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1610,6 +1610,41 @@ int DLLEXPORT EN_settimeparam(EN_Project p, int param, long value) return 0; } + +/// get the time to next event, and give a reason for the time step truncation +int DLLEXPORT EN_timeToNextEvent(EN_Project p, EN_TimestepEvent *eventType, long *duration, int *elementIndex) +{ + Times *time = &p->times; + long hydStep, tankStep, controlStep; + + hydStep = time->Hstep; + tankStep = hydStep; + controlStep = hydStep; + + int iTank = tanktimestep(p, &tankStep); + int iControl = controltimestep(p, &controlStep); + + // return the lesser of the three step lengths + if (controlStep < tankStep) { + *eventType = EN_STEP_CONTROLEVENT; + *duration = controlStep; + *elementIndex = iControl; + } + else if (tankStep < hydStep) { + *eventType = EN_STEP_TANKEVENT; + *duration = tankStep; + *elementIndex = iTank; + } + else { + *eventType = EN_STEP_HYD; + *duration = hydStep; + *elementIndex = 0; + } + + return 0; +} + + int DLLEXPORT EN_getqualinfo(EN_Project p, int *qualType, char *chemName, char *chemUnits, int *traceNode) /*---------------------------------------------------------------- @@ -1774,9 +1809,9 @@ int DLLEXPORT EN_addnode(EN_Project p, char *id, int nodeType, int *index) // Check if a node with same id already exists if (EN_getnodeindex(p, id, &i) == 0) return 215; - + // Check for valid node type - if (nodeType < EN_JUNCTION || nodeType > EN_TANK) return 251; + if (nodeType < EN_JUNCTION || nodeType > EN_TANK) return 251; // Grow node-related arrays to accomodate the new node size = (net->Nnodes + 2) * sizeof(Snode); @@ -1797,7 +1832,7 @@ int DLLEXPORT EN_addnode(EN_Project p, char *id, int nodeType, int *index) hashtable_update(net->NodeHashTable, net->Node[i].ID, i + 1); net->Node[i + 1] = net->Node[i]; } - + // set index of new Junction node net->Njuncs++; nIdx = net->Njuncs; @@ -2254,20 +2289,20 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val if (Node[index].Type != TANK) return 0; v = Tank[index - nJuncs].CanOverflow; break; - + case EN_DEMANDDEFICIT: if (index > nJuncs) return 0; // After an analysis, DemandFlow contains node's required demand // while NodeDemand contains delivered demand + emitter flow if (hyd->DemandFlow[index] < 0.0) return 0; - v = (hyd->DemandFlow[index] - + v = (hyd->DemandFlow[index] - (hyd->NodeDemand[index] - hyd->EmitterFlow[index])) * Ucf[FLOW]; break; - + case EN_NODE_INCONTROL: v = (double)incontrols(p, NODE, index); break; - + default: return 251; } @@ -2483,7 +2518,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu Tank[j].Vmin = tankvolume(p, j, Tank[j].Hmin); // new min. volume Tank[j].V0 = tankvolume(p, j, Tank[j].H0); // new init. volume Tank[j].Vmax = tankvolume(p, j, Tank[j].Hmax); // new max. volume - Tank[j].A = (curve->Y[n] - curve->Y[0]) / // nominal area + Tank[j].A = (curve->Y[n] - curve->Y[0]) / // nominal area (curve->X[n] - curve->X[0]); break; @@ -3793,7 +3828,7 @@ int DLLEXPORT EN_getlinkvalue(EN_Project p, int index, int property, double *val v = (double)Pump[findpump(&p->network, index)].Epat; } break; - + case EN_GPV_CURVE: if (Link[index].Type == GPV) { @@ -3804,7 +3839,7 @@ int DLLEXPORT EN_getlinkvalue(EN_Project p, int index, int property, double *val case EN_LINK_INCONTROL: v = (double)incontrols(p, LINK, index); break; - + default: return 251; } @@ -4011,7 +4046,7 @@ int DLLEXPORT EN_setlinkvalue(EN_Project p, int index, int property, double valu net->Pump[pumpIndex].Epat = patIndex; } break; - + case EN_GPV_CURVE: if (Link[index].Type == GPV) { @@ -4077,20 +4112,20 @@ int DLLEXPORT EN_getvertexcount(EN_Project p, int index, int *count) */ { Network *net = &p->network; - + Slink *Link = net->Link; Pvertices vertices; - + // Check that link exists *count = 0; if (!p->Openflag) return 102; if (index <= 0 || index > net->Nlinks) return 204; - + // Set count to number of vertices vertices = Link[index].Vertices; if (vertices) *count = vertices->Npts; return 0; -} +} int DLLEXPORT EN_getvertex(EN_Project p, int index, int vertex, double *x, double *y) /*---------------------------------------------------------------- @@ -4104,22 +4139,22 @@ int DLLEXPORT EN_getvertex(EN_Project p, int index, int vertex, double *x, doubl */ { Network *net = &p->network; - + Slink *Link = net->Link; Pvertices vertices; - + // Check that link exists *x = MISSING; *y = MISSING; if (!p->Openflag) return 102; if (index <= 0 || index > net->Nlinks) return 204; - + // Check that vertex exists vertices = Link[index].Vertices; if (vertices == NULL) return 255; if (vertex <= 0 || vertex > vertices->Npts) return 255; *x = vertices->X[vertex - 1]; - *y = vertices->Y[vertex - 1]; + *y = vertices->Y[vertex - 1]; return 0; } @@ -4135,23 +4170,23 @@ int DLLEXPORT EN_setvertex(EN_Project p, int index, int vertex, double x, double */ { Network *net = &p->network; - + Slink *Link = net->Link; Pvertices vertices; - + // Check that link exists if (!p->Openflag) return 102; if (index <= 0 || index > net->Nlinks) return 204; - + // Check that vertex exists vertices = Link[index].Vertices; if (vertices == NULL) return 255; if (vertex <= 0 || vertex > vertices->Npts) return 255; vertices->X[vertex - 1] = x; - vertices->Y[vertex - 1] = y; + vertices->Y[vertex - 1] = y; return 0; } - + int DLLEXPORT EN_setvertices(EN_Project p, int index, double *x, double *y, int count) /*---------------------------------------------------------------- ** Input: index = link index @@ -4164,11 +4199,11 @@ int DLLEXPORT EN_setvertices(EN_Project p, int index, double *x, double *y, int */ { Network *net = &p->network; - + Slink *link; int i; int err = 0; - + // Check that link exists if (!p->Openflag) return 102; if (index <= 0 || index > net->Nlinks) return 204; @@ -4176,7 +4211,7 @@ int DLLEXPORT EN_setvertices(EN_Project p, int index, double *x, double *y, int // Delete existing set of vertices freelinkvertices(link); - + // Add each new vertex to the link for (i = 0; i < count; i++) { @@ -4185,7 +4220,7 @@ int DLLEXPORT EN_setvertices(EN_Project p, int index, double *x, double *y, int } if (err) freelinkvertices(link); return err; -} +} /******************************************************************** @@ -4269,16 +4304,16 @@ int DLLEXPORT EN_setheadcurveindex(EN_Project p, int linkIndex, int curveIndex) pump = &p->network.Pump[pumpIndex]; oldCurveIndex = pump->Hcurve; newCurveType = p->network.Curve[curveIndex].Type; - + // Assign the new curve to the pump pump->Ptype = NOCURVE; pump->Hcurve = curveIndex; if (curveIndex == 0) return 0; - + // Update the pump's head curve parameters (which also changes // the new curve's Type to PUMP_CURVE) err = updatepumpparams(p, pumpIndex); - + // If the parameter updating failed (new curve was not a valid pump curve) // restore the pump's original curve and its parameters if (err > 0) @@ -4288,8 +4323,8 @@ int DLLEXPORT EN_setheadcurveindex(EN_Project p, int linkIndex, int curveIndex) pump->Hcurve = oldCurveIndex; if (oldCurveIndex == 0) return err; updatepumpparams(p, pumpIndex); - } - + } + // Convert the units of the updated pump parameters to feet and cfs if (pump->Ptype == POWER_FUNC) { @@ -4778,7 +4813,7 @@ int DLLEXPORT EN_setcurvetype(EN_Project p, int index, int type) Network *net = &p->network; if (!p->Openflag) return 102; if (index < 1 || index > net->Ncurves) return 206; - if (type < 0 || type > EN_GENERIC_CURVE) return 251; + if (type < 0 || type > EN_GENERIC_CURVE) return 251; net->Curve[index].Type = type; return 0; } @@ -4852,7 +4887,7 @@ int DLLEXPORT EN_setcurvevalue(EN_Project p, int curveIndex, int pointIndex, // Insert new point into curve curve->X[n] = x; curve->Y[n] = y; - + // Adjust parameters for pumps using curve as a head curve return adjustpumpparams(p, curveIndex); } @@ -4926,7 +4961,7 @@ int DLLEXPORT EN_setcurve(EN_Project p, int index, double *xValues, curve->X[j] = xValues[j]; curve->Y[j] = yValues[j]; } - + // Adjust parameters for pumps using curve as a head curve return adjustpumpparams(p, index); } diff --git a/src/funcs.h b/src/funcs.h index 366e5c7..1e6be71 100755 --- a/src/funcs.h +++ b/src/funcs.h @@ -155,6 +155,7 @@ void closehyd(Project *); void setlinkstatus(Project *, int, char, StatusType *, double *); void setlinksetting(Project *, int, double, StatusType *, double *); int tanktimestep(Project *, long *); +int controltimestep(Project *, long *); void getenergy(Project *, int, double *, double *); double tankvolume(Project *, int, double); double tankgrade(Project *, int, double); @@ -164,7 +165,7 @@ double tankgrade(Project *, int, double); void resistcoeff(Project *, int); void headlosscoeffs(Project *); void matrixcoeffs(Project *); -void emitterheadloss(Project *, int, double *, double *); +void emitterheadloss(Project *, int, double *, double *); void demandheadloss(Project *, int, double, double, double *, double *); // ------- QUALITY.C -------------------- diff --git a/src/hydraul.c b/src/hydraul.c index 36cd67b..fecc9f8 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -34,7 +34,6 @@ void initlinkflow(Project *, int, char, double); void demands(Project *); int controls(Project *); long timestep(Project *); -void controltimestep(Project *, long *); void ruletimestep(Project *, long *); void addenergy(Project *, long); void tanklevels(Project *, long); @@ -192,7 +191,7 @@ int runhyd(Project *pr, long *t) int iter; // Iteration count int errcode; // Error code double relerr; // Solution accuracy - + // Find new demands & control actions *t = time->Htime; demands(pr); @@ -390,7 +389,7 @@ void setlinkstatus(Project *pr, int index, char value, StatusType *s, double *k if (t == PUMP) { *k = 1.0; - // Check if a re-opened pump needs its flow reset + // Check if a re-opened pump needs its flow reset if (*s == CLOSED) resetpumpflow(pr, index); } if (t > PUMP && t != GPV) *k = MISSING; @@ -596,11 +595,11 @@ int controls(Project *pr) k1 = hyd->LinkSetting[k]; k2 = k1; if (link->Type > PIPE) k2 = control->Setting; - + // Check if a re-opened pump needs its flow reset if (link->Type == PUMP && s1 == CLOSED && s2 == OPEN) resetpumpflow(pr, k); - + if (s1 != s2 || k1 != k2) { hyd->LinkStatus[k] = s2; @@ -704,7 +703,7 @@ int tanktimestep(Project *pr, long *tstep) } -void controltimestep(Project *pr, long *tstep) +int controltimestep(Project *pr, long *tstep) /* **------------------------------------------------------------------ ** Input: *tstep = current time step @@ -717,7 +716,7 @@ void controltimestep(Project *pr, long *tstep) Network *net = &pr->network; Hydraul *hyd = &pr->hydraul; - int i, j, k, n; + int i, j, k, n, controlIndex; double h, q, v; long t, t1, t2; Slink *link; @@ -774,9 +773,14 @@ void controltimestep(Project *pr, long *tstep) k = control->Link; link = &net->Link[k]; if ( (link->Type > PIPE && hyd->LinkSetting[k] != control->Setting) - || (hyd->LinkStatus[k] != control->Status) ) *tstep = t; + || (hyd->LinkStatus[k] != control->Status) ) + { + *tstep = t; + controlIndex = i; + } } } + return controlIndex; } @@ -1009,7 +1013,7 @@ void getallpumpsenergy(Project *pr) getenergy(pr, pump->Link, &(pump->Energy.CurrentPower), &(pump->Energy.CurrentEffic)); } -} +} void tanklevels(Project *pr, long tstep) @@ -1129,6 +1133,5 @@ void resetpumpflow(Project *pr, int i) Network *net = &pr->network; Spump *pump = &net->Pump[findpump(net, i)]; if (pump->Ptype == CONST_HP) - pr->hydraul.LinkFlow[i] = pump->Q0; + pr->hydraul.LinkFlow[i] = pump->Q0; } - From 41887e90168fec96c109225aa011359a0218fea8 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Wed, 27 Jul 2022 16:37:49 -0400 Subject: [PATCH 081/233] adds client callback API function --- include/epanet2_2.h | 12 ++++++++++++ src/epanet.c | 13 +++++++++++++ src/project.c | 2 ++ src/report.c | 6 ++++++ src/types.h | 5 ++++- 5 files changed, 37 insertions(+), 1 deletion(-) diff --git a/include/epanet2_2.h b/include/epanet2_2.h index 18ef127..ddd1db7 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -517,6 +517,18 @@ typedef struct Project *EN_Project; ********************************************************************/ + /** + @brief Set a user-supplied callback function for reporting + @param ph an EPANET project handle. + @param callback a function pointer with declared signature, which gets called by EPANET for reporting. + @return an error code. + @details The report callback function must have the signature specified - void(void* userData, EN_Project, char*) - + use the userData parameter to pass any client context necessary (a context pointer or wrapper object perhaps). + Leave un-set or set the report callback to NULL to revert to EPANET's default behavior. + **/ + int DLLEXPORT EN_setReportCallback(EN_Project ph, void (*callback)(void *userData, void *EN_projectHandle, char*)); + int DLLEXPORT EN_setReportCallbackUserData(EN_Project ph, void *userData); + /** @brief Writes a line of text to a project's report file. @param ph an EPANET project handle. diff --git a/src/epanet.c b/src/epanet.c index 9a3c194..6c2ba3d 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -841,6 +841,19 @@ int DLLEXPORT EN_closeQ(EN_Project p) ********************************************************************/ + + int DLLEXPORT EN_setReportCallback(EN_Project p, void (*callback)(void*,void*,char*)) + { + p->report.reportCallback = callback; + return 0; + } + + int DLLEXPORT EN_setReportCallbackUserData(EN_Project p, void *userData) + { + p->report.reportCallbackUserData = userData; + return 0; + } + int DLLEXPORT EN_writeline(EN_Project p, char *line) /*---------------------------------------------------------------- ** Input: line = line of text diff --git a/src/project.c b/src/project.c index b470ec3..40f5639 100644 --- a/src/project.c +++ b/src/project.c @@ -281,6 +281,8 @@ void initpointers(Project *pr) pr->hydraul.smatrix.NZSUB = NULL; pr->hydraul.smatrix.LNZ = NULL; + pr->report.reportCallback = NULL; + initrules(pr); } diff --git a/src/report.c b/src/report.c index 8fc6d16..2922332 100644 --- a/src/report.c +++ b/src/report.c @@ -885,6 +885,12 @@ void writeline(Project *pr, char *s) **-------------------------------------------------------------- */ { + if (pr->report.reportCallback != NULL) + { + pr->report.reportCallback(pr->report.reportCallbackUserData, pr, s); + return; + } + Report *rpt = &pr->report; if (rpt->RptFile == NULL) return; diff --git a/src/types.h b/src/types.h index b0e91b5..27d2fd7 100755 --- a/src/types.h +++ b/src/types.h @@ -629,7 +629,10 @@ typedef struct { Rpt2Fname[MAXFNAME+1], // Secondary report file name DateStamp[26]; // Current date & time - SField Field[MAXVAR]; // Output reporting fields + SField Field[MAXVAR]; // Output reporting fields + + void (*reportCallback)(void*,void*,char*); // user-supplied reporting callback + void *reportCallbackUserData; // user-supplied reporting context } Report; From 0bf09b525fc88e6b151d3180aeb289adb430df57 Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Thu, 28 Jul 2022 23:37:10 +0300 Subject: [PATCH 082/233] build libs / win & linux --- .github/workflows/ccpp.yml | 6 +++++- .github/workflows/win32.yml | 22 ++++++++++++++++++++++ .github/workflows/win64.yml | 22 ++++++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/win32.yml create mode 100644 .github/workflows/win64.yml diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index 4f163f3..9dc80b2 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -1,4 +1,4 @@ -name: C/C++ CI +name: linux on: [push] @@ -17,3 +17,7 @@ jobs: - name: make working-directory: ./buildproducts run: make + - uses: actions/upload-artifact@v2 + with: + name: libepanet-output + path: /home/runner/work/EPANET/EPANET/buildproducts/ diff --git a/.github/workflows/win32.yml b/.github/workflows/win32.yml new file mode 100644 index 0000000..94b09ae --- /dev/null +++ b/.github/workflows/win32.yml @@ -0,0 +1,22 @@ +name: epanet2-win32 + +on: [push] + +jobs: + build: + runs-on: windows-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: setup_build_dir + run: mkdir buildproducts + - name: cmake + working-directory: ./buildproducts + run: cmake .. -A Win32 && cmake --build . --config Release + + - uses: actions/upload-artifact@v2 + with: + name: epanet2-win32 + path: D:\a\EPANET\EPANET\buildproducts\bin\Release\ diff --git a/.github/workflows/win64.yml b/.github/workflows/win64.yml new file mode 100644 index 0000000..c6802ae --- /dev/null +++ b/.github/workflows/win64.yml @@ -0,0 +1,22 @@ +name: epanet2-win64 + +on: [push] + +jobs: + build: + runs-on: windows-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: setup_build_dir + run: mkdir buildproducts + - name: cmake + working-directory: ./buildproducts + run: cmake .. -A x64 && cmake --build . --config Release + + - uses: actions/upload-artifact@v2 + with: + name: epanet2-win64 + path: D:\a\EPANET\EPANET\buildproducts\bin\Release\ From 93389ad1e4b22885e45cb69fe2b334ea3096c142 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 3 Aug 2022 19:52:01 -0400 Subject: [PATCH 083/233] Fix for PRV directly downstream of a PSV --- src/hydcoeffs.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index 73c38a1..b4ba6cd 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -62,6 +62,7 @@ static void tcvcoeff(Project *pr, int k); static void prvcoeff(Project *pr, int k, int n1, int n2); static void psvcoeff(Project *pr, int k, int n1, int n2); static void fcvcoeff(Project *pr, int k, int n1, int n2); +static void valveconnectcoeffs(Project *pr, int k, int n1, int n2); void resistcoeff(Project *pr, int k) @@ -317,9 +318,11 @@ void valvecoeffs(Project *pr) { case PRV: prvcoeff(pr, k, n1, n2); + valveconnectcoeffs(pr, k, n1, n2); break; case PSV: psvcoeff(pr, k, n1, n2); + valveconnectcoeffs(pr, k, n1, n2); break; case FCV: fcvcoeff(pr, k, n1, n2); @@ -329,6 +332,25 @@ void valvecoeffs(Project *pr) } } +void valveconnectcoeffs(Project *pr, int k, int n1, int n2) +/* +**-------------------------------------------------------------- +** Input: k = valve's link index +** n1 = upstream node of valve +** n2 = downstream node of valve +** Output: none +** Purpose: insures that the off-diagonals in the rows for a +** PRV/PSV are non-zero to preserve connectivity. +**-------------------------------------------------------------- +*/ +{ + Smatrix *sm = &pr->hydraul.smatrix; + double p = 1.0 / CBIG; + sm->Aij[sm->Ndx[k]] -= p; + sm->Aii[sm->Row[n1]] += p; + sm->Aii[sm->Row[n2]] += p; +} + void emittercoeffs(Project *pr) /* From 79b4fa45a15a511d035e1fbb14b4e0736f7a7870 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Fri, 5 Aug 2022 16:59:32 -0400 Subject: [PATCH 084/233] Update hydcoeffs.c Only an Active PSV needs to preserve connectivity. --- src/hydcoeffs.c | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index b4ba6cd..83b2dc3 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -62,7 +62,6 @@ static void tcvcoeff(Project *pr, int k); static void prvcoeff(Project *pr, int k, int n1, int n2); static void psvcoeff(Project *pr, int k, int n1, int n2); static void fcvcoeff(Project *pr, int k, int n1, int n2); -static void valveconnectcoeffs(Project *pr, int k, int n1, int n2); void resistcoeff(Project *pr, int k) @@ -318,11 +317,9 @@ void valvecoeffs(Project *pr) { case PRV: prvcoeff(pr, k, n1, n2); - valveconnectcoeffs(pr, k, n1, n2); break; case PSV: psvcoeff(pr, k, n1, n2); - valveconnectcoeffs(pr, k, n1, n2); break; case FCV: fcvcoeff(pr, k, n1, n2); @@ -332,25 +329,6 @@ void valvecoeffs(Project *pr) } } -void valveconnectcoeffs(Project *pr, int k, int n1, int n2) -/* -**-------------------------------------------------------------- -** Input: k = valve's link index -** n1 = upstream node of valve -** n2 = downstream node of valve -** Output: none -** Purpose: insures that the off-diagonals in the rows for a -** PRV/PSV are non-zero to preserve connectivity. -**-------------------------------------------------------------- -*/ -{ - Smatrix *sm = &pr->hydraul.smatrix; - double p = 1.0 / CBIG; - sm->Aij[sm->Ndx[k]] -= p; - sm->Aii[sm->Row[n1]] += p; - sm->Aii[sm->Row[n2]] += p; -} - void emittercoeffs(Project *pr) /* @@ -1057,6 +1035,8 @@ void psvcoeff(Project *pr, int k, int n1, int n2) { sm->F[j] += hyd->Xflow[n1]; } + sm->Aij[sm->Ndx[k]] -= 1.0 / CBIG; // Preserve connectivity + sm->Aii[j] += 1.0 / CBIG; return; } From b1396841642c8445510ac1710b3da1dd77f93fab Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Mon, 8 Aug 2022 11:58:09 -0400 Subject: [PATCH 085/233] fixes non-camelcase convention and adds rich corinthian vintage-style (projectless) function declarations --- include/epanet2.h | 24 ++++++++------ include/epanet2_2.h | 4 +-- src/epanet.c | 76 ++++++++++++++++++++++----------------------- src/epanet2.c | 18 ++++++++--- 4 files changed, 68 insertions(+), 54 deletions(-) diff --git a/include/epanet2.h b/include/epanet2.h index 3779d66..99c0ad0 100644 --- a/include/epanet2.h +++ b/include/epanet2.h @@ -72,9 +72,9 @@ extern "C" { int DLLEXPORT ENopen(const char *inpFile, const char *rptFile, const char *outFile); - + int DLLEXPORT ENgettitle(char *line1, char *line2, char *line3); - + int DLLEXPORT ENsettitle(char *line1, char *line2, char *line3); int DLLEXPORT ENgetcomment(int object, int index, char *comment); @@ -156,9 +156,13 @@ extern "C" { int DLLEXPORT ENgeterror(int errcode, char *errmsg, int maxLen); int DLLEXPORT ENgetstatistic(int type, EN_API_FLOAT_TYPE* value); - + int DLLEXPORT ENgetresultindex(int type, int index, int *value); + int DLLEXPORT ENsetreportcallback(void (*callback)(void *userData, void *EN_projectHandle, char*)); + int DLLEXPORT ENsetreportcallbackuserdata(void *userData); + + /******************************************************************** Analysis Options Functions @@ -235,7 +239,7 @@ extern "C" { char *demandPattern, char *demandName); int DLLEXPORT ENdeletedemand(int nodeIndex, int demandIndex); - + int DLLEXPORT ENgetnumdemands(int nodeIndex, int *numDemands); int DLLEXPORT ENgetdemandindex(int nodeIndex, char *demandName, int *demandIndex); @@ -285,13 +289,13 @@ extern "C" { int DLLEXPORT ENsetpipedata(int index, EN_API_FLOAT_TYPE length, EN_API_FLOAT_TYPE diam, EN_API_FLOAT_TYPE rough, EN_API_FLOAT_TYPE mloss); - + int DLLEXPORT ENgetvertexcount(int index, int *count); - + int DLLEXPORT ENgetvertex(int index, int vertex, double *x, double *y); - + int DLLEXPORT ENsetvertex(int index, int vertex, double x, double y); - + int DLLEXPORT ENsetvertices(int index, double *x, double *y, int count); /******************************************************************** @@ -351,7 +355,7 @@ extern "C" { int DLLEXPORT ENgetcurvelen(int index, int *len); int DLLEXPORT ENgetcurvetype(int index, int *type); - + int DLLEXPORT ENsetcurvetype(int index, int type); int DLLEXPORT ENgetcurvevalue(int curveIndex, int pointIndex, @@ -425,7 +429,7 @@ extern "C" { int DLLEXPORT ENsetelseaction(int ruleIndex, int actionIndex, int linkIndex, int status, EN_API_FLOAT_TYPE setting); - + int DLLEXPORT ENsetrulepriority(int index, EN_API_FLOAT_TYPE priority); #if defined(__cplusplus) diff --git a/include/epanet2_2.h b/include/epanet2_2.h index ddd1db7..852eab2 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -526,8 +526,8 @@ typedef struct Project *EN_Project; use the userData parameter to pass any client context necessary (a context pointer or wrapper object perhaps). Leave un-set or set the report callback to NULL to revert to EPANET's default behavior. **/ - int DLLEXPORT EN_setReportCallback(EN_Project ph, void (*callback)(void *userData, void *EN_projectHandle, char*)); - int DLLEXPORT EN_setReportCallbackUserData(EN_Project ph, void *userData); + int DLLEXPORT EN_setreportcallback(EN_Project ph, void (*callback)(void *userData, void *EN_projectHandle, char*)); + int DLLEXPORT EN_setreportcallbackuserdata(EN_Project ph, void *userData); /** @brief Writes a line of text to a project's report file. diff --git a/src/epanet.c b/src/epanet.c index 6c2ba3d..4f026da 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -842,13 +842,13 @@ int DLLEXPORT EN_closeQ(EN_Project p) ********************************************************************/ - int DLLEXPORT EN_setReportCallback(EN_Project p, void (*callback)(void*,void*,char*)) + int DLLEXPORT EN_setreportcallback(EN_Project p, void (*callback)(void*,void*,char*)) { p->report.reportCallback = callback; return 0; } - int DLLEXPORT EN_setReportCallbackUserData(EN_Project p, void *userData) + int DLLEXPORT EN_setreportcallbackuserdata(EN_Project p, void *userData) { p->report.reportCallbackUserData = userData; return 0; @@ -1787,9 +1787,9 @@ int DLLEXPORT EN_addnode(EN_Project p, char *id, int nodeType, int *index) // Check if a node with same id already exists if (EN_getnodeindex(p, id, &i) == 0) return 215; - + // Check for valid node type - if (nodeType < EN_JUNCTION || nodeType > EN_TANK) return 251; + if (nodeType < EN_JUNCTION || nodeType > EN_TANK) return 251; // Grow node-related arrays to accomodate the new node size = (net->Nnodes + 2) * sizeof(Snode); @@ -1810,7 +1810,7 @@ int DLLEXPORT EN_addnode(EN_Project p, char *id, int nodeType, int *index) hashtable_update(net->NodeHashTable, net->Node[i].ID, i + 1); net->Node[i + 1] = net->Node[i]; } - + // set index of new Junction node net->Njuncs++; nIdx = net->Njuncs; @@ -2267,20 +2267,20 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val if (Node[index].Type != TANK) return 0; v = Tank[index - nJuncs].CanOverflow; break; - + case EN_DEMANDDEFICIT: if (index > nJuncs) return 0; // After an analysis, DemandFlow contains node's required demand // while NodeDemand contains delivered demand + emitter flow if (hyd->DemandFlow[index] < 0.0) return 0; - v = (hyd->DemandFlow[index] - + v = (hyd->DemandFlow[index] - (hyd->NodeDemand[index] - hyd->EmitterFlow[index])) * Ucf[FLOW]; break; - + case EN_NODE_INCONTROL: v = (double)incontrols(p, NODE, index); break; - + default: return 251; } @@ -2496,7 +2496,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu Tank[j].Vmin = tankvolume(p, j, Tank[j].Hmin); // new min. volume Tank[j].V0 = tankvolume(p, j, Tank[j].H0); // new init. volume Tank[j].Vmax = tankvolume(p, j, Tank[j].Hmax); // new max. volume - Tank[j].A = (curve->Y[n] - curve->Y[0]) / // nominal area + Tank[j].A = (curve->Y[n] - curve->Y[0]) / // nominal area (curve->X[n] - curve->X[0]); break; @@ -3806,7 +3806,7 @@ int DLLEXPORT EN_getlinkvalue(EN_Project p, int index, int property, double *val v = (double)Pump[findpump(&p->network, index)].Epat; } break; - + case EN_GPV_CURVE: if (Link[index].Type == GPV) { @@ -3817,7 +3817,7 @@ int DLLEXPORT EN_getlinkvalue(EN_Project p, int index, int property, double *val case EN_LINK_INCONTROL: v = (double)incontrols(p, LINK, index); break; - + default: return 251; } @@ -4024,7 +4024,7 @@ int DLLEXPORT EN_setlinkvalue(EN_Project p, int index, int property, double valu net->Pump[pumpIndex].Epat = patIndex; } break; - + case EN_GPV_CURVE: if (Link[index].Type == GPV) { @@ -4090,20 +4090,20 @@ int DLLEXPORT EN_getvertexcount(EN_Project p, int index, int *count) */ { Network *net = &p->network; - + Slink *Link = net->Link; Pvertices vertices; - + // Check that link exists *count = 0; if (!p->Openflag) return 102; if (index <= 0 || index > net->Nlinks) return 204; - + // Set count to number of vertices vertices = Link[index].Vertices; if (vertices) *count = vertices->Npts; return 0; -} +} int DLLEXPORT EN_getvertex(EN_Project p, int index, int vertex, double *x, double *y) /*---------------------------------------------------------------- @@ -4117,22 +4117,22 @@ int DLLEXPORT EN_getvertex(EN_Project p, int index, int vertex, double *x, doubl */ { Network *net = &p->network; - + Slink *Link = net->Link; Pvertices vertices; - + // Check that link exists *x = MISSING; *y = MISSING; if (!p->Openflag) return 102; if (index <= 0 || index > net->Nlinks) return 204; - + // Check that vertex exists vertices = Link[index].Vertices; if (vertices == NULL) return 255; if (vertex <= 0 || vertex > vertices->Npts) return 255; *x = vertices->X[vertex - 1]; - *y = vertices->Y[vertex - 1]; + *y = vertices->Y[vertex - 1]; return 0; } @@ -4148,23 +4148,23 @@ int DLLEXPORT EN_setvertex(EN_Project p, int index, int vertex, double x, double */ { Network *net = &p->network; - + Slink *Link = net->Link; Pvertices vertices; - + // Check that link exists if (!p->Openflag) return 102; if (index <= 0 || index > net->Nlinks) return 204; - + // Check that vertex exists vertices = Link[index].Vertices; if (vertices == NULL) return 255; if (vertex <= 0 || vertex > vertices->Npts) return 255; vertices->X[vertex - 1] = x; - vertices->Y[vertex - 1] = y; + vertices->Y[vertex - 1] = y; return 0; } - + int DLLEXPORT EN_setvertices(EN_Project p, int index, double *x, double *y, int count) /*---------------------------------------------------------------- ** Input: index = link index @@ -4177,11 +4177,11 @@ int DLLEXPORT EN_setvertices(EN_Project p, int index, double *x, double *y, int */ { Network *net = &p->network; - + Slink *link; int i; int err = 0; - + // Check that link exists if (!p->Openflag) return 102; if (index <= 0 || index > net->Nlinks) return 204; @@ -4189,7 +4189,7 @@ int DLLEXPORT EN_setvertices(EN_Project p, int index, double *x, double *y, int // Delete existing set of vertices freelinkvertices(link); - + // Add each new vertex to the link for (i = 0; i < count; i++) { @@ -4198,7 +4198,7 @@ int DLLEXPORT EN_setvertices(EN_Project p, int index, double *x, double *y, int } if (err) freelinkvertices(link); return err; -} +} /******************************************************************** @@ -4282,16 +4282,16 @@ int DLLEXPORT EN_setheadcurveindex(EN_Project p, int linkIndex, int curveIndex) pump = &p->network.Pump[pumpIndex]; oldCurveIndex = pump->Hcurve; newCurveType = p->network.Curve[curveIndex].Type; - + // Assign the new curve to the pump pump->Ptype = NOCURVE; pump->Hcurve = curveIndex; if (curveIndex == 0) return 0; - + // Update the pump's head curve parameters (which also changes // the new curve's Type to PUMP_CURVE) err = updatepumpparams(p, pumpIndex); - + // If the parameter updating failed (new curve was not a valid pump curve) // restore the pump's original curve and its parameters if (err > 0) @@ -4301,8 +4301,8 @@ int DLLEXPORT EN_setheadcurveindex(EN_Project p, int linkIndex, int curveIndex) pump->Hcurve = oldCurveIndex; if (oldCurveIndex == 0) return err; updatepumpparams(p, pumpIndex); - } - + } + // Convert the units of the updated pump parameters to feet and cfs if (pump->Ptype == POWER_FUNC) { @@ -4791,7 +4791,7 @@ int DLLEXPORT EN_setcurvetype(EN_Project p, int index, int type) Network *net = &p->network; if (!p->Openflag) return 102; if (index < 1 || index > net->Ncurves) return 206; - if (type < 0 || type > EN_GENERIC_CURVE) return 251; + if (type < 0 || type > EN_GENERIC_CURVE) return 251; net->Curve[index].Type = type; return 0; } @@ -4865,7 +4865,7 @@ int DLLEXPORT EN_setcurvevalue(EN_Project p, int curveIndex, int pointIndex, // Insert new point into curve curve->X[n] = x; curve->Y[n] = y; - + // Adjust parameters for pumps using curve as a head curve return adjustpumpparams(p, curveIndex); } @@ -4939,7 +4939,7 @@ int DLLEXPORT EN_setcurve(EN_Project p, int index, double *xValues, curve->X[j] = xValues[j]; curve->Y[j] = yValues[j]; } - + // Adjust parameters for pumps using curve as a head curve return adjustpumpparams(p, index); } diff --git a/src/epanet2.c b/src/epanet2.c index 1706936..5618550 100644 --- a/src/epanet2.c +++ b/src/epanet2.c @@ -212,6 +212,16 @@ int DLLEXPORT ENsetstatusreport(int level) return EN_setstatusreport(_defaultProject, level); } +int DLLEXPORT ENsetreportcallback(void (*callback)(void *userData, void *EN_projectHandle, char*)) +{ + return EN_setreportcallback(_defaultProject, callback); +} + +int DLLEXPORT ENsetreportcallbackuserdata(void *userData) +{ + return EN_setreportcallbackuserdata(_defaultProject, userData); +} + int DLLEXPORT ENgetversion(int *version) { return EN_getversion(version); } int DLLEXPORT ENgeterror(int errcode, char *errmsg, int maxLen) @@ -516,7 +526,7 @@ int DLLEXPORT ENgetvertexcount(int index, int *count) { return EN_getvertexcount(_defaultProject, index, count); } - + int DLLEXPORT ENgetvertex(int index, int vertex, double *x, double *y) { return EN_getvertex(_defaultProject, index, vertex, x, y); @@ -530,7 +540,7 @@ int DLLEXPORT ENsetvertex(int index, int vertex, double x, double y) int DLLEXPORT ENsetvertices(int index, double *x, double *y, int count) { return EN_setvertices(_defaultProject, index, x, y, count); -} +} /******************************************************************** @@ -714,10 +724,10 @@ int DLLEXPORT ENsetcurve(int index, EN_API_FLOAT_TYPE *xValues, double *xx = NULL; double *yy = NULL; int i, errcode = 0; - + if (xValues == NULL || yValues == NULL) return 206; if (nPoints < 1) return 202; - + xx = (double *)calloc(nPoints, sizeof(double)); yy = (double *)calloc(nPoints, sizeof(double)); if (xx && yy) From 9b3007ff55f474ccab89b239473afa69617a1590 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Mon, 8 Aug 2022 12:02:22 -0400 Subject: [PATCH 086/233] adds projectless function declarations and fixes non-camelcase convention --- include/epanet2.h | 22 ++++++++++++---------- include/epanet2_2.h | 2 +- src/epanet.c | 2 +- src/epanet2.c | 12 ++++++++---- 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/include/epanet2.h b/include/epanet2.h index 3779d66..21d553f 100644 --- a/include/epanet2.h +++ b/include/epanet2.h @@ -72,9 +72,9 @@ extern "C" { int DLLEXPORT ENopen(const char *inpFile, const char *rptFile, const char *outFile); - + int DLLEXPORT ENgettitle(char *line1, char *line2, char *line3); - + int DLLEXPORT ENsettitle(char *line1, char *line2, char *line3); int DLLEXPORT ENgetcomment(int object, int index, char *comment); @@ -156,9 +156,11 @@ extern "C" { int DLLEXPORT ENgeterror(int errcode, char *errmsg, int maxLen); int DLLEXPORT ENgetstatistic(int type, EN_API_FLOAT_TYPE* value); - + int DLLEXPORT ENgetresultindex(int type, int index, int *value); + int DLLEXPORT ENtimetonextevent(EN_TimestepEvent *eventType, long *duration, int *elementIndex); + /******************************************************************** Analysis Options Functions @@ -235,7 +237,7 @@ extern "C" { char *demandPattern, char *demandName); int DLLEXPORT ENdeletedemand(int nodeIndex, int demandIndex); - + int DLLEXPORT ENgetnumdemands(int nodeIndex, int *numDemands); int DLLEXPORT ENgetdemandindex(int nodeIndex, char *demandName, int *demandIndex); @@ -285,13 +287,13 @@ extern "C" { int DLLEXPORT ENsetpipedata(int index, EN_API_FLOAT_TYPE length, EN_API_FLOAT_TYPE diam, EN_API_FLOAT_TYPE rough, EN_API_FLOAT_TYPE mloss); - + int DLLEXPORT ENgetvertexcount(int index, int *count); - + int DLLEXPORT ENgetvertex(int index, int vertex, double *x, double *y); - + int DLLEXPORT ENsetvertex(int index, int vertex, double x, double y); - + int DLLEXPORT ENsetvertices(int index, double *x, double *y, int count); /******************************************************************** @@ -351,7 +353,7 @@ extern "C" { int DLLEXPORT ENgetcurvelen(int index, int *len); int DLLEXPORT ENgetcurvetype(int index, int *type); - + int DLLEXPORT ENsetcurvetype(int index, int type); int DLLEXPORT ENgetcurvevalue(int curveIndex, int pointIndex, @@ -425,7 +427,7 @@ extern "C" { int DLLEXPORT ENsetelseaction(int ruleIndex, int actionIndex, int linkIndex, int status, EN_API_FLOAT_TYPE setting); - + int DLLEXPORT ENsetrulepriority(int index, EN_API_FLOAT_TYPE priority); #if defined(__cplusplus) diff --git a/include/epanet2_2.h b/include/epanet2_2.h index 4393073..3306b95 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -646,7 +646,7 @@ typedef struct Project *EN_Project; @param[out] duration the amount of time in the future this event will occur @param[out] elementIndex the index of the element causing the event. **/ - int DLLEXPORT EN_timeToNextEvent(EN_Project ph, EN_TimestepEvent *eventType, long *duration, int *elementIndex); + int DLLEXPORT EN_timetonextevent(EN_Project ph, EN_TimestepEvent *eventType, long *duration, int *elementIndex); /** @brief Retrieves the order in which a node or link appears in an @ref OutFile "output file". diff --git a/src/epanet.c b/src/epanet.c index 9c5783c..b8fa26d 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1612,7 +1612,7 @@ int DLLEXPORT EN_settimeparam(EN_Project p, int param, long value) /// get the time to next event, and give a reason for the time step truncation -int DLLEXPORT EN_timeToNextEvent(EN_Project p, EN_TimestepEvent *eventType, long *duration, int *elementIndex) +int DLLEXPORT EN_timetonextevent(EN_Project p, EN_TimestepEvent *eventType, long *duration, int *elementIndex) { Times *time = &p->times; long hydStep, tankStep, controlStep; diff --git a/src/epanet2.c b/src/epanet2.c index 1706936..d3a3f86 100644 --- a/src/epanet2.c +++ b/src/epanet2.c @@ -232,6 +232,10 @@ int DLLEXPORT ENgetresultindex(int type, int index, int *value) return EN_getresultindex(_defaultProject, type, index, value); } +int DLLEXPORT ENtimetonextevent(EN_TimestepEvent *eventType, long *duration, int *elementIndex) +{ + return EN_timetonextevent(_defaultProject, eventType, duration, elementIndex); +} /******************************************************************** @@ -516,7 +520,7 @@ int DLLEXPORT ENgetvertexcount(int index, int *count) { return EN_getvertexcount(_defaultProject, index, count); } - + int DLLEXPORT ENgetvertex(int index, int vertex, double *x, double *y) { return EN_getvertex(_defaultProject, index, vertex, x, y); @@ -530,7 +534,7 @@ int DLLEXPORT ENsetvertex(int index, int vertex, double x, double y) int DLLEXPORT ENsetvertices(int index, double *x, double *y, int count) { return EN_setvertices(_defaultProject, index, x, y, count); -} +} /******************************************************************** @@ -714,10 +718,10 @@ int DLLEXPORT ENsetcurve(int index, EN_API_FLOAT_TYPE *xValues, double *xx = NULL; double *yy = NULL; int i, errcode = 0; - + if (xValues == NULL || yValues == NULL) return 206; if (nPoints < 1) return 202; - + xx = (double *)calloc(nPoints, sizeof(double)); yy = (double *)calloc(nPoints, sizeof(double)); if (xx && yy) From 2d783041a4506a1e3e0ddb35c9aa0aa375b4ac5f Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Mon, 8 Aug 2022 18:08:45 -0400 Subject: [PATCH 087/233] Fix for FCV problem This update prevents a solution where the computed loss coefficient for a FCV at its flow setting would be less than the user supplied fully opened coefficient. --- ReleaseNotes2_3.md | 2 ++ src/hydstatus.c | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 3e3f924..7042988 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -22,6 +22,8 @@ This document describes the changes and updates that have been made in version 2 - changing the absolute tolerance used to compare the closeness of test results to benchmark values from 0 to 0.0001 - dropping the "correct decimal digits" test - dropping the check for identical status report content since it prevents accepting code changes that produce more accurate solutions in fewer iterations. + - A possible loss of network connectivity when evaluating a Pressure Sustaining Valve was prevented. + - Having the implied loss coefficient for an active Flow Control Valve be less than its fully opened value was prevented. diff --git a/src/hydstatus.c b/src/hydstatus.c index 4013ec9..d0f1d02 100644 --- a/src/hydstatus.c +++ b/src/hydstatus.c @@ -7,7 +7,7 @@ Description: updates hydraulic status of network elements Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 05/15/2019 +Last Updated: 08/08/2022 ****************************************************************************** */ @@ -394,6 +394,15 @@ StatusType fcvstatus(Project *pr, int k, StatusType s, double h1, double h2) { status = ACTIVE; } + + // Active valve's loss coeff. can't be < fully open loss coeff. + else if (status == ACTIVE) + { + if ((h1 - h2) / SQR(hyd->LinkFlow[k] < pr->network.Link[k].Km) + { + status = XFCV; + } + } return status; } From 6ccddb811d205ea4ec0fd0fce1c7b1b0acf7597d Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Mon, 8 Aug 2022 18:37:07 -0400 Subject: [PATCH 088/233] Update hydstatus.c --- src/hydstatus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hydstatus.c b/src/hydstatus.c index d0f1d02..f3cae46 100644 --- a/src/hydstatus.c +++ b/src/hydstatus.c @@ -398,7 +398,7 @@ StatusType fcvstatus(Project *pr, int k, StatusType s, double h1, double h2) // Active valve's loss coeff. can't be < fully open loss coeff. else if (status == ACTIVE) { - if ((h1 - h2) / SQR(hyd->LinkFlow[k] < pr->network.Link[k].Km) + if ((h1 - h2) / SQR(hyd->LinkFlow[k]) < pr->network.Link[k].Km) { status = XFCV; } From 3287cc3b849762ba44eb9a3a790c9e6ef40f8f74 Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Sun, 14 Aug 2022 09:02:20 +0300 Subject: [PATCH 089/233] Remove travis-ci.org badge Closes #693 --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 65fa407..513ce49 100755 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ OWA-EPANET ## Build Status [![Build status](https://ci.appveyor.com/api/projects/status/19wpg4g2cmj3oihl?svg=true)](https://ci.appveyor.com/project/OpenWaterAnalytics/epanet) -[![Build Status](https://travis-ci.org/OpenWaterAnalytics/EPANET.svg)](https://travis-ci.org/OpenWaterAnalytics/EPANET) [![codecov](https://codecov.io/gh/OpenWaterAnalytics/EPANET/branch/master/graph/badge.svg)](https://codecov.io/gh/OpenWaterAnalytics/EPANET) From 3485551f221b5c93dde87cc626d7f1837b0e5341 Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Sun, 14 Aug 2022 09:06:44 +0300 Subject: [PATCH 090/233] Create workflow build bagges As suggested in #690 --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 513ce49..af87356 100755 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ OWA-EPANET [![codecov](https://codecov.io/gh/OpenWaterAnalytics/EPANET/branch/master/graph/badge.svg)](https://codecov.io/gh/OpenWaterAnalytics/EPANET) +[![linux](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/ccpp.yml/badge.svg)](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/ccpp.yml) +[![epanet2-win32](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/win32.yml/badge.svg)](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/win32.yml) +[![epanet2-win64](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/win64.yml/badge.svg)](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/win64.yml) + ## DESCRIPTION **EPANET** is an industry-standard program for modeling the hydraulic and water quality behavior of water distribution system pipe networks. The EPANET Programmer's Toolkit is a library of functions (or API) written in C that allow programmers to customize the use of EPANET's solution engine for their own applications. Both EPANET and its toolkit were originally developed by the U.S. Environmental Protection Agency (USEPA). If you are interested in using/extending the EPANET engine and its API for academic, personal, or commercial use, then you've come to the right place. [Read more about EPANET on Wikipedia](https://en.wikipedia.org/wiki/EPANET). (Please note that this project covers only the EPANET hydraulic and water quality solver engine, not the graphical user interface.) From 6db17193f51149e1c4659d473f9a90a801d21e37 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 16 Aug 2022 11:47:44 -0400 Subject: [PATCH 091/233] New positional control valve added --- ReleaseNotes2_3.md | 1 + doc/input-file.dox | 12 +++- include/epanet2_enums.h | 11 ++-- src/enumstxt.h | 5 +- src/epanet.c | 24 +++++++- src/funcs.h | 3 +- src/hydcoeffs.c | 121 +++++++++++++++++++++++++++++++++++++++- src/hydraul.c | 4 +- src/inpfile.c | 7 ++- src/input3.c | 20 ++++++- src/output.c | 3 +- src/project.c | 28 +++++++--- src/text.h | 3 +- src/types.h | 9 ++- tests/CMakeLists.txt | 1 + tests/test_valve.cpp | 73 ++++++++++++++++++++++++ 16 files changed, 292 insertions(+), 33 deletions(-) create mode 100644 tests/test_valve.cpp diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 7042988..5a3b2d3 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -24,6 +24,7 @@ This document describes the changes and updates that have been made in version 2 - dropping the check for identical status report content since it prevents accepting code changes that produce more accurate solutions in fewer iterations. - A possible loss of network connectivity when evaluating a Pressure Sustaining Valve was prevented. - Having the implied loss coefficient for an active Flow Control Valve be less than its fully opened value was prevented. + - A new type of valve, a Positional Control Valve (PCV), was added that uses a valve characteristic curve to relate its loss coefficient to its fraction open setting. diff --git a/doc/input-file.dox b/doc/input-file.dox index 8bbe5c1..c0b69f5 100644 --- a/doc/input-file.dox +++ b/doc/input-file.dox @@ -92,9 +92,10 @@ __Remarks:__ - Head v. Flow for pumps - Efficiency v. Flow for pumps - Volume v. Depth for tanks + - Fraction of fully open flow v. fraction open for Positional Control Valves - Head Loss v. Flow for General Purpose Valves 2. The points of a curve must be entered in order of increasing X-values (lower to higher). -3. If the input file will be used with the Windows version of EPANET, then adding a comment which contains the curve type and description, separated by a colon, directly above the first entry for a curve will ensure that these items appear correctly in EPANET's Curve Editor. Curve types include PUMP, EFFICIENCY, VOLUME, and HEADLOSS. See the examples below. +3. If the input file will be used with the Windows version of EPANET, then adding a comment which contains the curve type and description, separated by a colon, directly above the first entry for a curve will ensure that these items appear correctly in EPANET's Curve Editor. Curve types include PUMP, EFFICIENCY, VOLUME, VALVE, and HEADLOSS. See the examples below. __Example:__ ``` @@ -1028,7 +1029,8 @@ One line for each valve containing: - Diameter, inches (mm) - Valve type - Valve setting -- Minor loss coefficient +- Minor loss coefficient when fully open +- ID of valve characteristic curve (PCVs only) __Remarks:__ 1. Valve types and settings include: @@ -1038,9 +1040,13 @@ __Remarks:__ |PSV (pressure sustaining valve) | Pressure, psi (m) | |PBV (pressure breaker valve) | Pressure, psi (m) | |FCV (flow control valve) | Flow (flow units) | -|TCV (throttle control valve) | Loss Coefficient | +|TCV (throttle control valve) | Partially open loss coefficient | +|PCV (positional control valve) | Fraction open | |GPV (general purpose valve) | ID of head loss curve | 2. Shutoff valves and check valves are considered to be part of a pipe, not a separate control valve component (see @ref PipesPage). +3. The loss coefficient setting for a TCV should not be less than its fully open loss coefficient. +4. The characteristic curve for a PCV relates the valve's fraction of fully open flow to the fraction open. +5. The head loss curve for a GPV relates head loss across the valve to the flow rate through it. */ /** diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index a000b0c..b3347bc 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -9,7 +9,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/01/2020 + Last Updated: 08/13/2022 ****************************************************************************** */ @@ -97,7 +97,8 @@ typedef enum { EN_PUMP_ECOST = 21, //!< Pump average energy price EN_PUMP_EPAT = 22, //!< Pump energy price time pattern index EN_LINK_INCONTROL = 23, //!< Is present in any simple or rule-based control (= 1) or not (= 0) - EN_GPV_CURVE = 24 //!< GPV head loss v. flow curve index + EN_GPV_CURVE = 24, //!< GPV head loss v. flow curve index + EN_PCV_CURVE = 25 //!< PCV loss coeff. curve index } EN_LinkProperty; /// Time parameters @@ -191,7 +192,8 @@ typedef enum { EN_PBV = 5, //!< Pressure breaker valve EN_FCV = 6, //!< Flow control valve EN_TCV = 7, //!< Throttle control valve - EN_GPV = 8 //!< General purpose valve + EN_GPV = 8, //!< General purpose valve + EN_PCV = 9 //!< Positional control valve } EN_LinkType; /// Link status @@ -397,7 +399,8 @@ typedef enum { EN_PUMP_CURVE = 1, //!< Pump head v. flow curve EN_EFFIC_CURVE = 2, //!< Pump efficiency v. flow curve EN_HLOSS_CURVE = 3, //!< Valve head loss v. flow curve - EN_GENERIC_CURVE = 4 //!< Generic curve + EN_GENERIC_CURVE = 4, //!< Generic curve + EN_VALVE_CURVE = 5 //!< Valve loss coeff. v. frac. open } EN_CurveType; /// Deletion action codes diff --git a/src/enumstxt.h b/src/enumstxt.h index fdb9311..ccc12e8 100755 --- a/src/enumstxt.h +++ b/src/enumstxt.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 06/20/2019 + Last Updated: 08/13/2022 ****************************************************************************** */ @@ -27,7 +27,8 @@ char *LinkTxt[] = {w_CV, w_PBV, w_FCV, w_TCV, - w_GPV}; + w_GPV, + w_PCV}; char *StatTxt[] = {t_XHEAD, t_TEMPCLOSED, diff --git a/src/epanet.c b/src/epanet.c index 9a3c194..1635b36 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 11/08/2020 + Last Updated: 08/13/2022 ****************************************************************************** */ @@ -3149,7 +3149,7 @@ int DLLEXPORT EN_addlink(EN_Project p, char *id, int linkType, if (EN_getlinkindex(p, id, &i) == 0) return 215; // Check for valid link type - if (linkType < CVPIPE || linkType > GPV) return 251; + if (linkType < CVPIPE || linkType > PCV) return 251; // Lookup the link's from and to nodes n1 = hashtable_find(net->NodeHashTable, fromNode); @@ -3209,6 +3209,7 @@ int DLLEXPORT EN_addlink(EN_Project p, char *id, int linkType, size = (net->Nvalves + 1) * sizeof(Svalve); net->Valve = (Svalve *)realloc(net->Valve, size); net->Valve[net->Nvalves].Link = n; + net->Valve[net->Nvalves].Curve = 0; } link->Type = linkType; @@ -3468,7 +3469,7 @@ int DLLEXPORT EN_setlinktype(EN_Project p, int *index, int linkType, int actionC if (p->hydraul.OpenHflag || p->quality.OpenQflag) return 262; // Check for valid input parameters - if (linkType < 0 || linkType > GPV || actionCode < EN_UNCONDITIONAL || + if (linkType < 0 || linkType > PCV || actionCode < EN_UNCONDITIONAL || actionCode > EN_CONDITIONAL) { return 251; @@ -3794,6 +3795,13 @@ int DLLEXPORT EN_getlinkvalue(EN_Project p, int index, int property, double *val } break; + case EN_PCV_CURVE: + if (Link[index].Type == PCV) + { + v = net->Valve[findvalve(&p->network, index)].Curve; + } + break; + case EN_GPV_CURVE: if (Link[index].Type == GPV) { @@ -3916,6 +3924,7 @@ int DLLEXPORT EN_setlinkvalue(EN_Project p, int index, int property, double valu value /= Ucf[FLOW]; break; case TCV: + case PCV: break; case GPV: return 207; // Cannot modify setting for GPV @@ -4012,6 +4021,15 @@ int DLLEXPORT EN_setlinkvalue(EN_Project p, int index, int property, double valu } break; + case EN_PCV_CURVE: + if (Link[index].Type == PCV) + { + curveIndex = ROUND(value); + if (curveIndex < 0 || curveIndex > net->Ncurves) return 206; + net->Valve[findvalve(&p->network, index)].Curve = curveIndex; + } + break; + case EN_GPV_CURVE: if (Link[index].Type == GPV) { diff --git a/src/funcs.h b/src/funcs.h index 366e5c7..f3e5ea4 100755 --- a/src/funcs.h +++ b/src/funcs.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/03/2020 + Last Updated: 08/13/2022 ****************************************************************************** */ #ifndef FUNCS_H @@ -166,6 +166,7 @@ void headlosscoeffs(Project *); void matrixcoeffs(Project *); void emitterheadloss(Project *, int, double *, double *); void demandheadloss(Project *, int, double, double, double *, double *); +double pcvlosscoeff(Project *, int, double); // ------- QUALITY.C -------------------- diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index 83b2dc3..b45f032 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 03/30/2022 + Last Updated: 08/13/2022 ****************************************************************************** */ @@ -36,6 +36,7 @@ const double CBIG = 1.e8; // Exported functions //void resistcoeff(Project *, int ); +//double pcvlosscoeff(Project *, int, double); //void headlosscoeffs(Project *); //void matrixcoeffs(Project *); //void emitterheadloss(Project *, int, double *, double *); @@ -59,6 +60,7 @@ static void valvecoeff(Project *pr, int k); static void gpvcoeff(Project *pr, int k); static void pbvcoeff(Project *pr, int k); static void tcvcoeff(Project *pr, int k); +static void pcvcoeff(Project *pr, int k); static void prvcoeff(Project *pr, int k, int n1, int n2); static void psvcoeff(Project *pr, int k, int n1, int n2); static void fcvcoeff(Project *pr, int k, int n1, int n2); @@ -107,6 +109,10 @@ void resistcoeff(Project *pr, int k) case PUMP: link->R = CBIG; break; + + case PCV: + link->R = pcvlosscoeff(pr, k, link->Kc); + break; // ... For all other links (e.g. valves) use a small resistance default: @@ -116,6 +122,86 @@ void resistcoeff(Project *pr, int k) } +double pcvlosscoeff(Project* pr, int k, double s) +/* +**-------------------------------------------------------------- +** Input: k = link index +** s = valve fraction open setting +** Output: returns a valve loss coefficient +** Purpose: finds a Positional Control Valve's loss +** coefficient from its fraction open setting. +**-------------------------------------------------------------- +*/ +{ + Network* net = &pr->network; + + int v = findvalve(net, k); // valve index + int c = net->Valve[v].Curve; // Kv curve index + double d; // valve diameter + double kmo; // fully open loss coeff. + double km; // partly open loss coeff. + double kvr; // Kv / Kvo (Kvo = Kv at fully open) + double *x, *y; // points on kvr v. frac. open curve + int k1, k2, npts; + Scurve *curve; + + // Valve has no setting so return 0 + if (s == MISSING) return 0.0; + + // Valve is completely open so return its Km value + d = net->Link[k].Diam; + kmo = net->Link[k].Km; + if (s >= 1.0) return kmo; + + // Valve is completely closed so return a large coeff. + if (s <= 0.0) return CBIG; + + // Valve has no assigned curve so assume a linear one + if (c == 0) kvr = s; + + else + { + // Valve curve data + curve = &net->Curve[c]; + npts = curve->Npts; + x = curve->X; // x = frac. open + y = curve->Y; // y = Kv / Kvo + + // s lies below first point of curve + if (s < x[0]) + kvr = s / x[0] * y[0]; + + // s lies above last point of curve + else if (s > x[npts-1]) + { + k2 = npts - 1; + kvr = (s - x[k2]) / (1. - x[k2]) * (1. - y[k2]) + y[k2]; + } + + // Otherwise interpolate over curve segment that brackets s + else + { + k2 = 0; + while (k2 < npts && x[k2] < s) k2++; + if (k2 == 0) k2++; + else if (k2 == npts) k2--; + k1 = k2 - 1; + kvr = (y[k2] - y[k1]) / (x[k2] - x[k1]); + kvr = y[k1] + kvr * (s - x[k1]); + } + } + + // kvr can't be > 1 or <= 0 + kvr = MIN(kvr, 1.0); + kvr = MAX(kvr, CSMALL); + + // Convert from Kv ratio to minor loss coeff. + km = kmo / (kvr * kvr); + km = MIN(km, CBIG); + return km; +} + + void headlosscoeffs(Project *pr) /* **-------------------------------------------------------------- @@ -148,6 +234,9 @@ void headlosscoeffs(Project *pr) case TCV: tcvcoeff(pr, k); break; + case PCV: + pcvcoeff(pr, k); + break; case GPV: gpvcoeff(pr, k); break; @@ -945,6 +1034,36 @@ void tcvcoeff(Project *pr, int k) } +void pcvcoeff(Project *pr, int k) +/* +**-------------------------------------------------------------- +** Input: k = link index +** Output: none +** Purpose: computes P & Y coeffs. for positional control valve +**-------------------------------------------------------------- +*/ +{ + double km; + Hydraul *hyd = &pr->hydraul; + Slink *link = &pr->network.Link[k]; + + // Save original loss coeff. for open valve + km = link->Km; + + // If valve not fixed OPEN or CLOSED, compute its loss coeff. + if (hyd->LinkSetting[k] != MISSING) + { + link->Km = link->R; + } + + // Then apply usual valve formula + valvecoeff(pr, k); + + // Restore original loss coeff. + link->Km = km; +} + + void prvcoeff(Project *pr, int k, int n1, int n2) /* **-------------------------------------------------------------- diff --git a/src/hydraul.c b/src/hydraul.c index 36cd67b..fe9999a 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 03/19/2022 + Last Updated: 08/13/2022 ****************************************************************************** */ @@ -450,6 +450,7 @@ void setlinksetting(Project *pr, int index, double value, StatusType *s, else { if (*k == MISSING && *s <= CLOSED) *s = OPEN; + if (t == PCV) link->R = pcvlosscoeff(pr, index, link->Kc); *k = value; } } @@ -605,6 +606,7 @@ int controls(Project *pr) { hyd->LinkStatus[k] = s2; hyd->LinkSetting[k] = k2; + if (link->Type == PCV) link->R = pcvlosscoeff(pr, k, k2); if (pr->report.Statflag) writecontrolaction(pr,k,i); setsum++; } diff --git a/src/inpfile.c b/src/inpfile.c index bc5d4e6..c1fcc48 100644 --- a/src/inpfile.c +++ b/src/inpfile.c @@ -7,7 +7,7 @@ Description: saves network data to an EPANET formatted text file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 10/29/2019 +Last Updated: 08/13/2022 ****************************************************************************** */ @@ -312,6 +312,11 @@ int saveinpfile(Project *pr, const char *fname) { sprintf(s1, "%-31s %12.4f", net->Curve[j].ID, km); } + // For PCV add loss curve if present + else if (link->Type == PCV && (j = net->Valve[i].Curve) > 0) + { + sprintf(s1, "%12.4f %12.4f %-31s", kc, km, net->Curve[j].ID); + } else sprintf(s1, "%12.4f %12.4f", kc, km); fprintf(f, "\n%s %s", s, s1); if (link->Comment) fprintf(f, " ;%s", link->Comment); diff --git a/src/input3.c b/src/input3.c index c32eaf7..9534b35 100644 --- a/src/input3.c +++ b/src/input3.c @@ -7,7 +7,7 @@ Description: parses network data from a line of an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 03/20/2022 +Last Updated: 08/13/2022 ****************************************************************************** */ @@ -471,7 +471,7 @@ int valvedata(Project *pr) ** Purpose: processes valve data ** Format: ** [VALVE] -** id node1 node2 diam type setting (lcoeff) +** id node1 node2 diam type setting (lcoeff lcurve) **-------------------------------------------------------------- */ { @@ -488,7 +488,8 @@ int valvedata(Project *pr) setting, // Valve setting lcoeff = 0.0; // Minor loss coeff. Slink *link; - int err = 0; + int err = 0, + losscurve = 0; // Loss coeff. curve // Add new valve to data base n = parser->Ntokens; @@ -521,6 +522,8 @@ int valvedata(Project *pr) type = TCV; else if (match(parser->Tok[4], w_GPV)) type = GPV; + else if (match(parser->Tok[4], w_PCV)) + type = PCV; else return setError(parser, 4, 213); @@ -538,6 +541,16 @@ int valvedata(Project *pr) } else if (!getfloat(parser->Tok[5], &setting)) return setError(parser, 5, 202); if (n >= 7 && !getfloat(parser->Tok[6], &lcoeff)) return setError(parser, 6, 202); + + // Find loss coeff. curve for PCV + if (type == PCV && n >= 8) + { + c = findcurve(net, parser->Tok[7]); + if (c == 0) return setError(parser, 7, 206); + losscurve = c; + net->Curve[c].Type = VALVE_CURVE; + if (setting > 1.0) setting = 1.0; + } // Check for illegal connections if (valvecheck(pr, net->Nlinks, type, j1, j2)) @@ -563,6 +576,7 @@ int valvedata(Project *pr) link->ResultIndex = 0; link->Comment = xstrcpy(&link->Comment, parser->Comment, MAXMSG); net->Valve[net->Nvalves].Link = net->Nlinks; + net->Valve[net->Nvalves].Curve = losscurve; return 0; } diff --git a/src/output.c b/src/output.c index 1e9a6ab..51685e2 100644 --- a/src/output.c +++ b/src/output.c @@ -7,7 +7,7 @@ Description: binary file read/write routines Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 05/13/2019 +Last Updated: 08/13/2022 ****************************************************************************** */ @@ -567,6 +567,7 @@ int linkoutput(Project *pr, int j, REAL4 *x, double ucf) case FCV: x[i] = (REAL4)(setting * pr->Ucf[FLOW]); break; case TCV: + case PCV: x[i] = (REAL4)setting; break; default: x[i] = 0.0f; } diff --git a/src/project.c b/src/project.c index b470ec3..4b8a971 100644 --- a/src/project.c +++ b/src/project.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/03/2020 + Last Updated: 08/13/2022 ****************************************************************************** */ @@ -860,7 +860,7 @@ int findtank(Network *network, int index) /*---------------------------------------------------------------- ** Input: index = node index ** Output: none -** Returns: index of tank with given node id, or NOTFOUND if tank not found +** Returns: index of tank with given node index, or NOTFOUND if tank not found ** Purpose: for use in the deletenode function **---------------------------------------------------------------- */ @@ -877,7 +877,7 @@ int findpump(Network *network, int index) /*---------------------------------------------------------------- ** Input: index = link ID ** Output: none -** Returns: index of pump with given link id, or NOTFOUND if pump not found +** Returns: index of pump with given link index, or NOTFOUND if pump not found ** Purpose: for use in the deletelink function **---------------------------------------------------------------- */ @@ -894,7 +894,7 @@ int findvalve(Network *network, int index) /*---------------------------------------------------------------- ** Input: index = link ID ** Output: none -** Returns: index of valve with given link id, or NOTFOUND if valve not found +** Returns: index of valve with given link index, or NOTFOUND if valve not found ** Purpose: for use in the deletelink function **---------------------------------------------------------------- */ @@ -1010,7 +1010,7 @@ void adjustcurves(Network *network, int index) **---------------------------------------------------------------- */ { - int j, k, setting; + int j, k, curve; // Adjust tank volume curves for (j = 1; j <= network->Ntanks; j++) @@ -1025,15 +1025,25 @@ void adjustcurves(Network *network, int index) adjustcurve(&network->Pump[j].Ecurve, index); } - // Adjust GPV curves + // Adjust PCV & GPV curves for (j = 1; j <= network->Nvalves; j++) { k = network->Valve[j].Link; + if (network->Link[k].Type == PCV) + { + if ((curve = network->Valve[j].Curve) > 0) + { + adjustcurve(&curve, index); + network->Valve[j].Curve = curve; + if (curve == 0) + network->Link[k].Kc = 0.0; + } + } if (network->Link[k].Type == GPV) { - setting = INT(network->Link[k].Kc); - adjustcurve(&setting, index); - network->Link[k].Kc = setting; + curve = INT(network->Link[k].Kc); + adjustcurve(&curve, index); + network->Link[k].Kc = curve; } } } diff --git a/src/text.h b/src/text.h index a4ac84b..72fef68 100755 --- a/src/text.h +++ b/src/text.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 07/15/2019 + Last Updated: 08/13/2022 ****************************************************************************** */ @@ -40,6 +40,7 @@ #define w_FCV "FCV" #define w_TCV "TCV" #define w_GPV "GPV" +#define w_PCV "PCV" #define w_OPEN "OPEN" #define w_CLOSED "CLOSED" diff --git a/src/types.h b/src/types.h index b0e91b5..281e012 100755 --- a/src/types.h +++ b/src/types.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 07/11/2020 + Last Updated: 08/13/2022 ****************************************************************************** */ @@ -145,7 +145,8 @@ typedef enum { PBV, // pressure breaker valve FCV, // flow control valve TCV, // throttle control valve - GPV // general purpose valve + GPV, // general purpose valve + PCV // positional control valve } LinkType; typedef enum { @@ -166,7 +167,8 @@ typedef enum { PUMP_CURVE, // pump curve EFFIC_CURVE, // efficiency curve HLOSS_CURVE, // head loss curve - GENERIC_CURVE // generic curve + GENERIC_CURVE, // generic curve + VALVE_CURVE // positional valve loss curve } CurveType; typedef enum { @@ -455,6 +457,7 @@ typedef struct // Pump Object typedef struct // Valve Object { int Link; // link index of valve + int Curve; // positional loss coeff. curve } Svalve; typedef struct // Control Statement diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 995d01f..946e9f6 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -39,6 +39,7 @@ set(toolkit_test_srcs test_control.cpp test_overflow.cpp test_pda.cpp + test_valve.cpp ) add_executable(test_toolkit ${toolkit_test_srcs}) diff --git a/tests/test_valve.cpp b/tests/test_valve.cpp new file mode 100644 index 0000000..a4c3c89 --- /dev/null +++ b/tests/test_valve.cpp @@ -0,0 +1,73 @@ +/* + ****************************************************************************** + Project: OWA EPANET + Version: 2.2 + Module: test_valve.cpp + Description: Tests EPANET toolkit api functions + Authors: see AUTHORS + Copyright: see AUTHORS + License: see LICENSE + Last Updated: 07/28/2022 + ****************************************************************************** +*/ + +/* + Tests PCV valve with position curve +*/ + +#include + +#include "test_toolkit.hpp" + +BOOST_AUTO_TEST_SUITE (test_valve) + +BOOST_FIXTURE_TEST_CASE(test_PCV_valve, FixtureOpenClose) + +{ + int npts = 5; + double x[] = { 0.0, 0.25, 0.5, 0.75, 1. }; + double y[] = {0.0, 0.089, 0.184, 0.406, 1.0}; + double v; + int linkIndex, curveIndex; + + // Make steady state run + error = EN_settimeparam(ph, EN_DURATION, 0); + BOOST_REQUIRE(error == 0); + + // Convert pipe 22 to a PCV + error = EN_getlinkindex(ph, (char*)"22", &linkIndex); + BOOST_REQUIRE(error == 0); + error = EN_setlinktype(ph, &linkIndex, EN_PCV, EN_UNCONDITIONAL); + BOOST_REQUIRE(error == 0); + error = EN_setlinkvalue(ph, linkIndex, EN_DIAMETER, 12); + BOOST_REQUIRE(error == 0); + error = EN_setlinkvalue(ph, linkIndex, EN_MINORLOSS, 0.19); + + // Create the PCV's position-loss curve + error = EN_addcurve(ph, (char*)"ValveCurve"); + BOOST_REQUIRE(error == 0); + error = EN_getcurveindex(ph, (char*)"ValveCurve", &curveIndex); + BOOST_REQUIRE(error == 0); + error = EN_setcurve(ph, curveIndex, x, y, npts); + BOOST_REQUIRE(error == 0); + + // Assign curve & initial setting to PCV + error = EN_setlinkvalue(ph, linkIndex, EN_PCV_CURVE, curveIndex); + BOOST_REQUIRE(error == 0); + error = EN_setlinkvalue(ph, linkIndex, EN_INITSETTING, 0.35); + BOOST_REQUIRE(error == 0); + + // Solve for hydraulics + error = EN_solveH(ph); + BOOST_REQUIRE(error == 0); + + // The PCV interpolated relative flow coeff. at 0.35 open is 0.127. + // This translates to a minor loss coeff. of 0.19 / 0.127^2 = 11.78. + // If the PCV were replaced with a TCV at that setting the resulting + // head loss would be 0.0255 ft which should equal the PCV result. + error = EN_getlinkvalue(ph, linkIndex, EN_HEADLOSS, &v); + BOOST_REQUIRE(error == 0); + BOOST_REQUIRE(abs(v - 0.0255) < 0.001); +} + +BOOST_AUTO_TEST_SUITE_END() From 5b3d75cc0da9d3e80cba2dc180d9e4c1e3e63da6 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 16 Aug 2022 13:13:39 -0400 Subject: [PATCH 092/233] Updated language binding files added. --- doc/input-file.dox | 5 +++-- include/epanet.cs | 5 +++++ include/epanet2.bas | 5 ++++- include/epanet2.pas | 7 +++++-- include/epanet2.vb | 5 ++++- 5 files changed, 21 insertions(+), 6 deletions(-) diff --git a/doc/input-file.dox b/doc/input-file.dox index c0b69f5..f4d36ce 100644 --- a/doc/input-file.dox +++ b/doc/input-file.dox @@ -1045,8 +1045,9 @@ __Remarks:__ |GPV (general purpose valve) | ID of head loss curve | 2. Shutoff valves and check valves are considered to be part of a pipe, not a separate control valve component (see @ref PipesPage). 3. The loss coefficient setting for a TCV should not be less than its fully open loss coefficient. -4. The characteristic curve for a PCV relates the valve's fraction of fully open flow to the fraction open. -5. The head loss curve for a GPV relates head loss across the valve to the flow rate through it. +4. The characteristic curve for a PCV relates the valve's fraction of fully open flow to the fraction open. If not supplied then a linear curve is assumed. +5. The partially opened loss coefficient for a PCV is the inverse of the squared value from its characteristic curve times the fully open loss coefficient. +6. The head loss curve for a GPV relates head loss across the valve to the flow rate through it. */ /** diff --git a/include/epanet.cs b/include/epanet.cs index 2cec376..68489e6 100644 --- a/include/epanet.cs +++ b/include/epanet.cs @@ -73,6 +73,9 @@ namespace EpanetCSharpLibrary public const int EN_PUMP_ECURVE = 20; public const int EN_PUMP_ECOST = 21; public const int EN_PUMP_EPAT = 22; + public const int EN_LINK_INCONTROL = 23; + public const int EN_GPV_CURVE = 24; + public const int EN_PCV_CURVE = 25; public const int EN_DURATION = 0; //Time parameters public const int EN_HYDSTEP = 1; @@ -126,6 +129,7 @@ namespace EpanetCSharpLibrary public const int EN_FCV = 6; public const int EN_TCV = 7; public const int EN_GPV = 8; + public const int EN_PCV = 9; public const int EN_NONE = 0; //Quality analysis types public const int EN_CHEM = 1; @@ -209,6 +213,7 @@ namespace EpanetCSharpLibrary public const int EN_EFFIC_CURVE = 2; //Efficiency curve public const int EN_HLOSS_CURVE = 3; //Head loss curve public const int EN_GENERIC_CURVE = 4; //Generic curve + public const int EN_VALVE_CURVE = 5; //Valve position curve public const int EN_UNCONDITIONAL = 0; //Unconditional object deletion public const int EN_CONDITIONAL = 1; //Conditional object deletion diff --git a/include/epanet2.bas b/include/epanet2.bas index c38003e..bc2ce1e 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -5,7 +5,7 @@ Attribute VB_Name = "Module1" 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) -'Last updated on 02/01/2020 +'Last updated on 07/28/2022 ' These are codes used by the DLL functions Public Const EN_ELEVATION = 0 ' Node parameters @@ -63,6 +63,7 @@ Public Const EN_PUMP_ECOST = 21 Public Const EN_PUMP_EPAT = 22 Public Const EN_LINK_INCONTROL = 23 Public Const EN_GPV_CURVE = 24 +Public Const EN_PCV_CURVE= 25 Public Const EN_DURATION = 0 ' Time parameters Public Const EN_HYDSTEP = 1 @@ -117,6 +118,7 @@ Public Const EN_PBV = 5 Public Const EN_FCV = 6 Public Const EN_TCV = 7 Public Const EN_GPV = 8 +Public Const EN_PCV = 9 Public Const EN_CLOSED = 0 ' Link status types Public Const EN_OPEN = 1 @@ -209,6 +211,7 @@ Public Const EN_PUMP_CURVE = 1 ' Pump curve Public Const EN_EFFIC_CURVE = 2 ' Efficiency curve Public Const EN_HLOSS_CURVE = 3 ' Head loss curve Public Const EN_GENERIC_CURVE = 4 ' Generic curve +Public Const EN_VALVE_CURVE = 5 ' Valve position curve Public Const EN_UNCONDITIONAL = 0 ' Unconditional object deletion Public Const EN_CONDITIONAL = 1 ' Conditional object deletion diff --git a/include/epanet2.pas b/include/epanet2.pas index cbba41e..fba8147 100644 --- a/include/epanet2.pas +++ b/include/epanet2.pas @@ -3,7 +3,7 @@ unit epanet2; { Declarations of imported procedures from the EPANET PROGRAMMERs TOOLKIT } { (EPANET2.DLL) } -{Last updated on 02/01/2020} +{Last updated on 07/28/2022} interface @@ -69,6 +69,7 @@ const EN_PUMP_EPAT = 22; EN_LINK_INCONTROL = 23; EN_GPV_CURVE = 24; + EN_PCV_CURVE = 25; EN_DURATION = 0; { Time parameters } EN_HYDSTEP = 1; @@ -123,6 +124,7 @@ const EN_FCV = 6; EN_TCV = 7; EN_GPV = 8; + EN_PCV = 9; EN_CLOSED = 0; { Link status types } EN_OPEN = 1; @@ -214,7 +216,8 @@ const EN_PUMP_CURVE = 1; EN_EFFIC_CURVE = 2; EN_HLOSS_CURVE = 3; - EN_GENERIC_CURVE = 4; + EN_GENERIC_CURVE = 4; + EN_VALVE_CURVE = 5; EN_UNCONDITIONAL = 0; { Deletion action codes } EN_CONDITIONAL = 1; diff --git a/include/epanet2.vb b/include/epanet2.vb index bbd365e..7c283f0 100644 --- a/include/epanet2.vb +++ b/include/epanet2.vb @@ -4,7 +4,7 @@ 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) for use with VB.Net. -'Last updated on 02/01/2020 +'Last updated on 07/28/2022 Imports System.Runtime.InteropServices Imports System.Text @@ -67,6 +67,7 @@ Public Const EN_PUMP_ECOST = 21 Public Const EN_PUMP_EPAT = 22 Public Const EN_LINK_INCONTROL = 23 Public Const EN_GPV_CURVE = 24 +Public Const EN_PCV_CURVE = 25 Public Const EN_DURATION = 0 ' Time parameters Public Const EN_HYDSTEP = 1 @@ -120,6 +121,7 @@ Public Const EN_PBV = 5 Public Const EN_FCV = 6 Public Const EN_TCV = 7 Public Const EN_GPV = 8 +Public Const EN_PCV = 9 Public Const EN_NONE = 0 ' Quality analysis types Public Const EN_CHEM = 1 @@ -203,6 +205,7 @@ Public Const EN_PUMP_CURVE = 1 ' Pump curve Public Const EN_EFFIC_CURVE = 2 ' Efficiency curve Public Const EN_HLOSS_CURVE = 3 ' Head loss curve Public Const EN_GENERIC_CURVE = 4 ' Generic curve +Public Const EN_VALVE_CURVE = 5 ' Valve position curve Public Const EN_UNCONDITIONAL = 0 ' Unconditional object deletion Public Const EN_CONDITIONAL = 1 ' Conditional object deletion From 86085d4550bf04c7b7f68e2100ebcac3e0e931be Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Tue, 17 Jan 2023 00:32:39 +0200 Subject: [PATCH 093/233] Add a cron schedule in actions per month to create artifacts without any commit at 2023-02-01 00:00:00 then at 2023-03-01 00:00:00 then at 2023-04-01 00:00:00 then at 2023-05-01 00:00:00 then at 2023-06-01 00:00:00 ... Co-Authored-By: Elad Salomons --- .github/workflows/ccpp.yml | 6 +++++- .github/workflows/win32.yml | 6 +++++- .github/workflows/win64.yml | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index 9dc80b2..dc121b5 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -1,6 +1,10 @@ name: linux -on: [push] +on: + push: + pull_request: + schedule: + - cron: '0 0 1 * *' jobs: build: diff --git a/.github/workflows/win32.yml b/.github/workflows/win32.yml index 94b09ae..dd673c8 100644 --- a/.github/workflows/win32.yml +++ b/.github/workflows/win32.yml @@ -1,6 +1,10 @@ name: epanet2-win32 -on: [push] +on: + push: + pull_request: + schedule: + - cron: '0 0 1 * *' jobs: build: diff --git a/.github/workflows/win64.yml b/.github/workflows/win64.yml index c6802ae..560a4a3 100644 --- a/.github/workflows/win64.yml +++ b/.github/workflows/win64.yml @@ -1,6 +1,10 @@ name: epanet2-win64 -on: [push] +on: + push: + pull_request: + schedule: + - cron: '0 0 1 * *' jobs: build: From 736f5ebdd45668686f7154da56c3d24503e31f98 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Thu, 19 Jan 2023 09:50:50 -0500 Subject: [PATCH 094/233] updates function signatures to use int-casted enum --- include/epanet2.h | 2 +- include/epanet2_2.h | 4 ++-- src/epanet.c | 8 ++++---- src/epanet2.c | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/include/epanet2.h b/include/epanet2.h index 21d553f..c8d023f 100644 --- a/include/epanet2.h +++ b/include/epanet2.h @@ -159,7 +159,7 @@ extern "C" { int DLLEXPORT ENgetresultindex(int type, int index, int *value); - int DLLEXPORT ENtimetonextevent(EN_TimestepEvent *eventType, long *duration, int *elementIndex); + int DLLEXPORT ENtimetonextevent(int *eventType, long *duration, int *elementIndex); /******************************************************************** diff --git a/include/epanet2_2.h b/include/epanet2_2.h index 3306b95..4f49d1a 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -642,11 +642,11 @@ typedef struct Project *EN_Project; /** @brief Get information about upcoming time step events, and what causes them. @param ph an EPANET project handle. - @param[out] eventType the type of event that will occur. + @param[out] eventType the type of event that will occur (see @ref EN_TimestepEvent). @param[out] duration the amount of time in the future this event will occur @param[out] elementIndex the index of the element causing the event. **/ - int DLLEXPORT EN_timetonextevent(EN_Project ph, EN_TimestepEvent *eventType, long *duration, int *elementIndex); + int DLLEXPORT EN_timetonextevent(EN_Project ph, int *eventType, long *duration, int *elementIndex); /** @brief Retrieves the order in which a node or link appears in an @ref OutFile "output file". diff --git a/src/epanet.c b/src/epanet.c index b8fa26d..fb3861e 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1612,7 +1612,7 @@ int DLLEXPORT EN_settimeparam(EN_Project p, int param, long value) /// get the time to next event, and give a reason for the time step truncation -int DLLEXPORT EN_timetonextevent(EN_Project p, EN_TimestepEvent *eventType, long *duration, int *elementIndex) +int DLLEXPORT EN_timetonextevent(EN_Project p, int *eventType, long *duration, int *elementIndex) { Times *time = &p->times; long hydStep, tankStep, controlStep; @@ -1626,17 +1626,17 @@ int DLLEXPORT EN_timetonextevent(EN_Project p, EN_TimestepEvent *eventType, lon // return the lesser of the three step lengths if (controlStep < tankStep) { - *eventType = EN_STEP_CONTROLEVENT; + *eventType = (int)EN_STEP_CONTROLEVENT; *duration = controlStep; *elementIndex = iControl; } else if (tankStep < hydStep) { - *eventType = EN_STEP_TANKEVENT; + *eventType = (int)EN_STEP_TANKEVENT; *duration = tankStep; *elementIndex = iTank; } else { - *eventType = EN_STEP_HYD; + *eventType = (int)EN_STEP_HYD; *duration = hydStep; *elementIndex = 0; } diff --git a/src/epanet2.c b/src/epanet2.c index d3a3f86..3534d70 100644 --- a/src/epanet2.c +++ b/src/epanet2.c @@ -232,7 +232,7 @@ int DLLEXPORT ENgetresultindex(int type, int index, int *value) return EN_getresultindex(_defaultProject, type, index, value); } -int DLLEXPORT ENtimetonextevent(EN_TimestepEvent *eventType, long *duration, int *elementIndex) +int DLLEXPORT ENtimetonextevent(int *eventType, long *duration, int *elementIndex) { return EN_timetonextevent(_defaultProject, eventType, duration, elementIndex); } From e2df3e87ace62351446276a6d90e25c5edc5741c Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Thu, 19 Jan 2023 20:45:30 +0200 Subject: [PATCH 095/233] Adding support for VB Also supporting C89 compiler. --- include/epanet2.bas | 7 +++++++ include/epanet2.def | 1 + src/epanet.c | 7 ++++--- src/report.c | 4 ++-- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/include/epanet2.bas b/include/epanet2.bas index bc2ce1e..2d41bb2 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -253,6 +253,12 @@ Public Const EN_R_IS_OPEN = 1 ' Rule status types Public Const EN_R_IS_CLOSED = 2 Public Const EN_R_IS_ACTIVE = 3 +Public Const EN_STEP_REPORT = 0 ' Types of events that can cause a timestep to end +Public Const EN_STEP_HYD = 1 +Public Const EN_STEP_WQ = 2 +Public Const EN_STEP_TANKEVENT = 3 +Public Const EN_STEP_CONTROLEVENT = 4 + Public Const EN_MISSING As Double = -1.0E10 'These are the external functions that comprise the DLL @@ -302,6 +308,7 @@ Public Const EN_MISSING As Double = -1.0E10 Declare Function ENgeterror Lib "epanet2.dll" (ByVal errcode As Long, ByVal errmsg As String, ByVal maxLen As Long) As Long Declare Function ENgetstatistic Lib "epanet2.dll" (ByVal type_ As Long, ByRef value As Single) As Long Declare Function ENgetresultindex Lib "epanet2.dll" (ByVal type_ As Long, ByVal index As Long, ByRef value As Long) As Long + Declare Function ENtimetonextevent Lib "epanet2.dll" (eventType As Long, duration As Long, elementIndex As Long) As Long 'Analysis Options Functions Declare Function ENgetoption Lib "epanet2.dll" (ByVal option_ As Long, value As Single) As Long diff --git a/include/epanet2.def b/include/epanet2.def index 66b87ed..d72da8e 100644 --- a/include/epanet2.def +++ b/include/epanet2.def @@ -131,3 +131,4 @@ EXPORTS ENstepQ = _ENstepQ@4 ENusehydfile = _ENusehydfile@4 ENwriteline = _ENwriteline@4 + ENtimetonextevent = _ENtimetonextevent@12 \ No newline at end of file diff --git a/src/epanet.c b/src/epanet.c index a5c83ac..6516f7a 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1629,13 +1629,14 @@ int DLLEXPORT EN_timetonextevent(EN_Project p, int *eventType, long *duration, { Times *time = &p->times; long hydStep, tankStep, controlStep; - + int iTank, iControl; + hydStep = time->Hstep; tankStep = hydStep; controlStep = hydStep; - int iTank = tanktimestep(p, &tankStep); - int iControl = controltimestep(p, &controlStep); + iTank = tanktimestep(p, &tankStep); + iControl = controltimestep(p, &controlStep); // return the lesser of the three step lengths if (controlStep < tankStep) { diff --git a/src/report.c b/src/report.c index 2922332..ae675da 100644 --- a/src/report.c +++ b/src/report.c @@ -885,14 +885,14 @@ void writeline(Project *pr, char *s) **-------------------------------------------------------------- */ { + Report *rpt = &pr->report; + if (pr->report.reportCallback != NULL) { pr->report.reportCallback(pr->report.reportCallbackUserData, pr, s); return; } - Report *rpt = &pr->report; - if (rpt->RptFile == NULL) return; if (rpt->Rptflag) { From 57ae3eeab8ed9d3834688776f72d3f5f46c05904 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Thu, 19 Jan 2023 14:16:50 -0500 Subject: [PATCH 096/233] Update ReleaseNotes2_3.md --- ReleaseNotes2_3.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 5a3b2d3..2a51cd6 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -25,6 +25,7 @@ This document describes the changes and updates that have been made in version 2 - A possible loss of network connectivity when evaluating a Pressure Sustaining Valve was prevented. - Having the implied loss coefficient for an active Flow Control Valve be less than its fully opened value was prevented. - A new type of valve, a Positional Control Valve (PCV), was added that uses a valve characteristic curve to relate its loss coefficient to its fraction open setting. - + - A new set of functions have been added to get information about upcoming time step events. Users will now see what type of event is going to cause the end of a time step to occur. See ENtimetonextevent and EN_timetonextevent. + - A new set of functions have been added to allow users to set a reporting callback function. The user-supplied function will recieve all output normally directed to the report file. From f60102105aa8fc2aa82be549e60c20216873fba9 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Thu, 26 Jan 2023 12:50:26 -0500 Subject: [PATCH 097/233] Ignore errors in coords. read from file Ignores errors when reading node & link vertex coordinates from an input file. Also when saving a project to an input file, the [DEMANDS] section only includes non-zero demands. See issues #603 and #174 . --- src/inpfile.c | 1 + src/input3.c | 28 +++++++++++++++++----------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/inpfile.c b/src/inpfile.c index c1fcc48..f8b2005 100644 --- a/src/inpfile.c +++ b/src/inpfile.c @@ -332,6 +332,7 @@ int saveinpfile(Project *pr, const char *fname) node = &net->Node[i]; for (demand = node->D; demand != NULL; demand = demand->next) { + if (demand->Base == 0.0) continue; sprintf(s, " %-31s %14.6f", node->ID, ucf * demand->Base); if ((j = demand->Pat) > 0) sprintf(s1, " %-31s", net->Pattern[j].ID); else strcpy(s1, " "); diff --git a/src/input3.c b/src/input3.c index 9534b35..9c2c795 100644 --- a/src/input3.c +++ b/src/input3.c @@ -700,11 +700,14 @@ int coordata(Project *pr) /* **-------------------------------------------------------------- ** Input: none - ** Output: returns error code - ** Purpose: processes coordinate data + ** Output: returns 0 + ** Purpose: processes node coordinate data ** Format: ** [COORD] ** id x y + ** + ** Note: since node coords. are not used in any computations, + ** invalid data are simply ignored. **-------------------------------------------------------------- */ { @@ -716,12 +719,12 @@ int coordata(Project *pr) Snode *node; // Check for valid node ID - if (parser->Ntokens < 3) return 201; - if ((j = findnode(net, parser->Tok[0])) == 0) return setError(parser, 0, 203); + if (parser->Ntokens < 3) return 0; + if ((j = findnode(net, parser->Tok[0])) == 0) return 0; // Check for valid data - if (!getfloat(parser->Tok[1], &x)) return setError(parser, 1, 202); - if (!getfloat(parser->Tok[2], &y)) return setError(parser, 2, 202); + if (!getfloat(parser->Tok[1], &x)) return 0; + if (!getfloat(parser->Tok[2], &y)) return 0; // Save coord data node = &net->Node[j]; @@ -734,11 +737,14 @@ int vertexdata(Project *pr) /* **-------------------------------------------------------------- ** Input: none - ** Output: returns error code + ** Output: returns 0 ** Purpose: processes link vertex data ** Format: ** [VERTICES] ** id x y + ** + ** Note: since vertex coords. are not used in any computations, + ** invalid data are simply ignored. **-------------------------------------------------------------- */ { @@ -749,12 +755,12 @@ int vertexdata(Project *pr) double x, y; // Check for valid link ID - if (parser->Ntokens < 3) return 201; - if ((j = findlink(net, parser->Tok[0])) == 0) return setError(parser, 0, 204); + if (parser->Ntokens < 3) return 0; + if ((j = findlink(net, parser->Tok[0])) == 0) return 0; // Check for valid coordinate data - if (!getfloat(parser->Tok[1], &x)) return setError(parser, 1, 202); - if (!getfloat(parser->Tok[2], &y)) return setError(parser, 2, 202); + if (!getfloat(parser->Tok[1], &x)) return 0; + if (!getfloat(parser->Tok[2], &y)) return 0; // Add to link's list of vertex points return addlinkvertex(&net->Link[j], x, y); From 2f8561632fafa264aef5eddfaf443114beefe69c Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sun, 29 Jan 2023 12:34:58 -0500 Subject: [PATCH 098/233] Allows string literals as arguments in C++ clients See issue #651. Also addresses issue #602. --- include/epanet2.h | 56 ++++++++++++++++++----------------- include/epanet2_2.h | 71 +++++++++++++++++++++++---------------------- src/epanet.c | 54 +++++++++++++++++----------------- src/epanet2.c | 55 ++++++++++++++++++----------------- src/funcs.h | 14 ++++----- src/hash.c | 12 ++++---- src/hash.h | 10 +++---- src/project.c | 10 +++---- src/report.c | 4 +-- src/types.h | 2 +- 10 files changed, 148 insertions(+), 140 deletions(-) diff --git a/include/epanet2.h b/include/epanet2.h index ec32e67..36a1f0f 100644 --- a/include/epanet2.h +++ b/include/epanet2.h @@ -75,11 +75,11 @@ extern "C" { int DLLEXPORT ENgettitle(char *line1, char *line2, char *line3); - int DLLEXPORT ENsettitle(char *line1, char *line2, char *line3); + int DLLEXPORT ENsettitle(const char *line1, const char *line2, const char *line3); int DLLEXPORT ENgetcomment(int object, int index, char *comment); - int DLLEXPORT ENsetcomment(int object, int index, char *comment); + int DLLEXPORT ENsetcomment(int object, int index, const char *comment); int DLLEXPORT ENgetcount(int object, int *count); @@ -107,9 +107,9 @@ extern "C" { int DLLEXPORT ENcloseH(); - int DLLEXPORT ENsavehydfile(char *filename); + int DLLEXPORT ENsavehydfile(const char *filename); - int DLLEXPORT ENusehydfile(char *filename); + int DLLEXPORT ENusehydfile(const char *filename); /******************************************************************** @@ -137,17 +137,17 @@ extern "C" { ********************************************************************/ - int DLLEXPORT ENwriteline(char *line); + int DLLEXPORT ENwriteline(const char *line); int DLLEXPORT ENreport(); - int DLLEXPORT ENcopyreport(char *filename); + int DLLEXPORT ENcopyreport(const char *filename); int DLLEXPORT ENclearreport(); int DLLEXPORT ENresetreport(); - int DLLEXPORT ENsetreport(char *format); + int DLLEXPORT ENsetreport(const char *format); int DLLEXPORT ENsetstatusreport(int level); @@ -161,7 +161,7 @@ extern "C" { int DLLEXPORT ENtimetonextevent(int *eventType, long *duration, int *elementIndex); - int DLLEXPORT ENsetreportcallback(void (*callback)(void *userData, void *EN_projectHandle, char*)); + int DLLEXPORT ENsetreportcallback(void (*callback)(void *userData, void *EN_projectHandle, const char*)); int DLLEXPORT ENsetreportcallbackuserdata(void *userData); @@ -188,8 +188,8 @@ extern "C" { int DLLEXPORT ENgetqualtype(int *qualType, int *traceNode); - int DLLEXPORT ENsetqualtype(int qualType, char *chemName, char *chemUnits, - char *traceNode); + int DLLEXPORT ENsetqualtype(int qualType, const char *chemName, + const char *chemUnits, const char *traceNode); /******************************************************************** @@ -197,15 +197,15 @@ extern "C" { ********************************************************************/ - int DLLEXPORT ENaddnode(char *id, int nodeType, int *index); + int DLLEXPORT ENaddnode(const char *id, int nodeType, int *index); int DLLEXPORT ENdeletenode(int index, int actionCode); - int DLLEXPORT ENgetnodeindex(char *id, int *index); + int DLLEXPORT ENgetnodeindex(const char *id, int *index); int DLLEXPORT ENgetnodeid(int index, char *id); - int DLLEXPORT ENsetnodeid(int index, char *newid); + int DLLEXPORT ENsetnodeid(int index, const char *newid); int DLLEXPORT ENgetnodetype(int index, int *nodeType); @@ -214,12 +214,12 @@ extern "C" { int DLLEXPORT ENsetnodevalue(int index, int property, EN_API_FLOAT_TYPE value); int DLLEXPORT ENsetjuncdata(int index, EN_API_FLOAT_TYPE elev, - EN_API_FLOAT_TYPE dmnd, char *dmndpat); + EN_API_FLOAT_TYPE dmnd, const char *dmndpat); int DLLEXPORT ENsettankdata(int index, EN_API_FLOAT_TYPE elev, EN_API_FLOAT_TYPE initlvl, EN_API_FLOAT_TYPE minlvl, EN_API_FLOAT_TYPE maxlvl, EN_API_FLOAT_TYPE diam, - EN_API_FLOAT_TYPE minvol, char *volcurve); + EN_API_FLOAT_TYPE minvol, const char *volcurve); int DLLEXPORT ENgetcoord(int index, double *x, double *y); @@ -238,13 +238,14 @@ extern "C" { EN_API_FLOAT_TYPE preq, EN_API_FLOAT_TYPE pexp); int DLLEXPORT ENadddemand(int nodeIndex, EN_API_FLOAT_TYPE baseDemand, - char *demandPattern, char *demandName); + const char *demandPattern, const char *demandName); int DLLEXPORT ENdeletedemand(int nodeIndex, int demandIndex); int DLLEXPORT ENgetnumdemands(int nodeIndex, int *numDemands); - int DLLEXPORT ENgetdemandindex(int nodeIndex, char *demandName, int *demandIndex); + int DLLEXPORT ENgetdemandindex(int nodeIndex, const char *demandName, + int *demandIndex); int DLLEXPORT ENgetbasedemand(int nodeIndex, int demandIndex, EN_API_FLOAT_TYPE *baseDemand); @@ -258,7 +259,7 @@ extern "C" { int DLLEXPORT ENgetdemandname(int nodeIndex, int demandIndex, char *demandName); - int DLLEXPORT ENsetdemandname(int nodeIndex, int demandIndex, char *demandName); + int DLLEXPORT ENsetdemandname(int nodeIndex, int demandIndex, const char *demandName); /******************************************************************** @@ -266,15 +267,16 @@ extern "C" { ********************************************************************/ - int DLLEXPORT ENaddlink(char *id, int linkType, char *fromNode, char *toNode, int *index); + int DLLEXPORT ENaddlink(const char *id, int linkType, const char *fromNode, + const char *toNode, int *index); int DLLEXPORT ENdeletelink(int index, int actionCode); - int DLLEXPORT ENgetlinkindex(char *id, int *index); + int DLLEXPORT ENgetlinkindex(const char *id, int *index); int DLLEXPORT ENgetlinkid(int index, char *id); - int DLLEXPORT ENsetlinkid(int index, char *newid); + int DLLEXPORT ENsetlinkid(int index, const char *newid); int DLLEXPORT ENgetlinktype(int index, int *linkType); @@ -318,15 +320,15 @@ extern "C" { ********************************************************************/ - int DLLEXPORT ENaddpattern(char *id); + int DLLEXPORT ENaddpattern(const char *id); int DLLEXPORT ENdeletepattern(int index); - int DLLEXPORT ENgetpatternindex(char *id, int *index); + int DLLEXPORT ENgetpatternindex(const char *id, int *index); int DLLEXPORT ENgetpatternid(int index, char *id); - int DLLEXPORT ENsetpatternid(int index, char *id); + int DLLEXPORT ENsetpatternid(int index, const char *id); int DLLEXPORT ENgetpatternlen(int index, int *len); @@ -344,15 +346,15 @@ extern "C" { ********************************************************************/ - int DLLEXPORT ENaddcurve(char *id); + int DLLEXPORT ENaddcurve(const char *id); int DLLEXPORT ENdeletecurve(int index); - int DLLEXPORT ENgetcurveindex(char *id, int *index); + int DLLEXPORT ENgetcurveindex(const char *id, int *index); int DLLEXPORT ENgetcurveid(int index, char *id); - int DLLEXPORT ENsetcurveid(int index, char *id); + int DLLEXPORT ENsetcurveid(int index, const char *id); int DLLEXPORT ENgetcurvelen(int index, int *len); diff --git a/include/epanet2_2.h b/include/epanet2_2.h index 76dea18..62e3d1a 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -144,7 +144,8 @@ typedef struct Project *EN_Project; @param line3 third title line @return an error code */ - int DLLEXPORT EN_settitle(EN_Project ph, char *line1, char *line2, char *line3); + int DLLEXPORT EN_settitle(EN_Project ph, const char *line1, const char *line2, + const char *line3); /** @brief Retrieves a descriptive comment assigned to a Node, Link, Pattern or Curve. @@ -164,7 +165,8 @@ typedef struct Project *EN_Project; @param comment the comment string assigned to the object @return an error code */ - int DLLEXPORT EN_setcomment(EN_Project ph, int object, int index, char *comment); + int DLLEXPORT EN_setcomment(EN_Project ph, int object, int index, + const char *comment); /** @brief Retrieves the number of objects of a given type in a project. @@ -526,7 +528,7 @@ typedef struct Project *EN_Project; use the userData parameter to pass any client context necessary (a context pointer or wrapper object perhaps). Leave un-set or set the report callback to NULL to revert to EPANET's default behavior. **/ - int DLLEXPORT EN_setreportcallback(EN_Project ph, void (*callback)(void *userData, void *EN_projectHandle, char*)); + int DLLEXPORT EN_setreportcallback(EN_Project ph, void (*callback)(void *userData, void *EN_projectHandle, const char*)); int DLLEXPORT EN_setreportcallbackuserdata(EN_Project ph, void *userData); /** @@ -535,7 +537,7 @@ typedef struct Project *EN_Project; @param line a text string to write. @return an error code. */ - int DLLEXPORT EN_writeline(EN_Project ph, char *line); + int DLLEXPORT EN_writeline(EN_Project ph, const char *line); /** @brief Writes simulation results in a tabular format to a project's report file. @@ -560,7 +562,7 @@ typedef struct Project *EN_Project; This function allows toolkit clients to retrieve the contents of a project's report file while the project is still open. */ - int DLLEXPORT EN_copyreport(EN_Project ph, char *filename); + int DLLEXPORT EN_copyreport(EN_Project ph, const char *filename); /** @brief Clears the contents of a project's report file. @@ -598,7 +600,7 @@ typedef struct Project *EN_Project; Formatted results of a simulation can be written to a project's report file using the ::EN_report function. */ - int DLLEXPORT EN_setreport(EN_Project ph, char *format); + int DLLEXPORT EN_setreport(EN_Project ph, const char *format); /** @brief Sets the level of hydraulic status reporting. @@ -637,7 +639,7 @@ typedef struct Project *EN_Project; @param maxLen maximum number of characters that errmsg can hold @return an error code - Error message strings should be at least @ref EN_SizeLimits "EN_MAXMSG" characters in length. + Error message strings should be greater than @ref EN_SizeLimits "EN_MAXMSG" characters in length. */ int DLLEXPORT EN_geterror(int errcode, char *out_errmsg, int maxLen); @@ -776,8 +778,8 @@ typedef struct Project *EN_Project; Note that the trace node is specified by ID name and not by index. */ - int DLLEXPORT EN_setqualtype(EN_Project ph, int qualType, char *chemName, - char *chemUnits, char *traceNode); + int DLLEXPORT EN_setqualtype(EN_Project ph, int qualType, const char *chemName, + const char *chemUnits, const char *traceNode); /******************************************************************** @@ -795,7 +797,7 @@ typedef struct Project *EN_Project; When a new node is created all of its properties (see @ref EN_NodeProperty) are set to 0. */ - int DLLEXPORT EN_addnode(EN_Project ph, char *id, int nodeType, int *out_index); + int DLLEXPORT EN_addnode(EN_Project ph, const char *id, int nodeType, int *out_index); /** @brief Deletes a node from a project. @@ -819,7 +821,7 @@ typedef struct Project *EN_Project; @param[out] index the node's index (starting from 1). @return an error code */ - int DLLEXPORT EN_getnodeindex(EN_Project ph, char *id, int *out_index); + int DLLEXPORT EN_getnodeindex(EN_Project ph, const char *id, int *out_index); /** @brief Gets the ID name of a node given its index. @@ -828,7 +830,7 @@ typedef struct Project *EN_Project; @param[out] out_id the node's ID name. @return an error code - The ID name must be sized to hold at least @ref EN_SizeLimits "EN_MAXID" characters. + The ID name must be sized to hold at least @ref EN_SizeLimits "EN_MAXID+1" characters. */ int DLLEXPORT EN_getnodeid(EN_Project ph, int index, char *out_id); @@ -841,7 +843,7 @@ typedef struct Project *EN_Project; The ID name must not be longer than @ref EN_SizeLimits "EN_MAXID" characters. */ - int DLLEXPORT EN_setnodeid(EN_Project ph, int index, char *newid); + int DLLEXPORT EN_setnodeid(EN_Project ph, int index, const char *newid); /** @brief Retrieves a node's type given its index. @@ -889,7 +891,7 @@ typedef struct Project *EN_Project; These properties have units that depend on the units used for flow rate (see @ref Units). */ int DLLEXPORT EN_setjuncdata(EN_Project ph, int index, double elev, double dmnd, - char *dmndpat); + const char *dmndpat); /** @brief Sets a group of properties for a tank node. @@ -907,7 +909,7 @@ typedef struct Project *EN_Project; These properties have units that depend on the units used for flow rate (see @ref Units). */ int DLLEXPORT EN_settankdata(EN_Project ph, int index, double elev, double initlvl, - double minlvl, double maxlvl, double diam, double minvol, char *volcurve); + double minlvl, double maxlvl, double diam, double minvol, const char *volcurve); /** @brief Gets the (x,y) coordinates of a node. @@ -985,7 +987,7 @@ typedef struct Project *EN_Project; that no time pattern or category name is associated with the demand. */ int DLLEXPORT EN_adddemand(EN_Project ph, int nodeIndex, double baseDemand, - char *demandPattern, char *demandName); + const char *demandPattern, const char *demandName); /** @brief deletes a demand from a junction node. @@ -1004,7 +1006,7 @@ typedef struct Project *EN_Project; @param[out] demandIndex the index of the demand being sought @return an error code */ - int DLLEXPORT EN_getdemandindex(EN_Project ph, int nodeIndex, char *demandName, + int DLLEXPORT EN_getdemandindex(EN_Project ph, int nodeIndex, const char *demandName, int *out_demandIndex); /** @@ -1073,7 +1075,7 @@ typedef struct Project *EN_Project; @param[out] out_demandName The name of the selected category. @return an error code. - \b demandName must be sized to contain at least @ref EN_SizeLimits "EN_MAXID" characters. + \b demandName must be sized to contain at least @ref EN_SizeLimits "EN_MAXID+1" characters. */ int DLLEXPORT EN_getdemandname(EN_Project ph, int nodeIndex, int demandIndex, char *out_demandName); @@ -1087,7 +1089,8 @@ typedef struct Project *EN_Project; The category name must contain no more than @ref EN_SizeLimits "EN_MAXID" characters. */ - int DLLEXPORT EN_setdemandname(EN_Project ph, int nodeIndex, int demandIdx, char *demandName); + int DLLEXPORT EN_setdemandname(EN_Project ph, int nodeIndex, int demandIdx, + const char *demandName); /******************************************************************** @@ -1120,8 +1123,8 @@ typedef struct Project *EN_Project; See @ref EN_LinkProperty. */ - int DLLEXPORT EN_addlink(EN_Project ph, char *id, int linkType, char *fromNode, - char *toNode, int *out_index); + int DLLEXPORT EN_addlink(EN_Project ph, const char *id, int linkType, const char *fromNode, + const char *toNode, int *out_index); /** @brief Deletes a link from the project. @@ -1143,7 +1146,7 @@ typedef struct Project *EN_Project; @param[out] index the link's index (starting from 1). @return an error code. */ - int DLLEXPORT EN_getlinkindex(EN_Project ph, char *id, int *out_index); + int DLLEXPORT EN_getlinkindex(EN_Project ph, const char *id, int *out_index); /** @brief Gets the ID name of a link given its index. @@ -1152,7 +1155,7 @@ typedef struct Project *EN_Project; @param[out] out_id The link's ID name. @return an error code. - The ID name must be sized to hold at least @ref EN_SizeLimits "EN_MAXID" characters. + The ID name must be sized to hold at least @ref EN_SizeLimits "EN_MAXID+1" characters. */ int DLLEXPORT EN_getlinkid(EN_Project ph, int index, char *out_id); @@ -1165,7 +1168,7 @@ typedef struct Project *EN_Project; The ID name must not be longer than @ref EN_SizeLimits "EN_MAXID" characters. */ - int DLLEXPORT EN_setlinkid(EN_Project ph, int index, char *newid); + int DLLEXPORT EN_setlinkid(EN_Project ph, int index, const char *newid); /** @brief Retrieves a link's type. @@ -1341,7 +1344,7 @@ typedef struct Project *EN_Project; The new pattern contains a single time period whose factor is 1.0. */ - int DLLEXPORT EN_addpattern(EN_Project ph, char *id); + int DLLEXPORT EN_addpattern(EN_Project ph, const char *id); /** @brief Deletes a time pattern from a project. @@ -1358,7 +1361,7 @@ typedef struct Project *EN_Project; @param[out] index the time pattern's index (starting from 1). @return an error code. */ - int DLLEXPORT EN_getpatternindex(EN_Project ph, char *id, int *out_index); + int DLLEXPORT EN_getpatternindex(EN_Project ph, const char *id, int *out_index); /** @brief Retrieves the ID name of a time pattern given its index. @@ -1367,7 +1370,7 @@ typedef struct Project *EN_Project; @param[out] out_id the time pattern's ID name. @return an error code. - The ID name must be sized to hold at least @ref EN_SizeLimits "EN_MAXID" characters. + The ID name must be sized to hold at least @ref EN_SizeLimits "EN_MAXID+1" characters. */ int DLLEXPORT EN_getpatternid(EN_Project ph, int index, char *out_id); @@ -1380,7 +1383,7 @@ typedef struct Project *EN_Project; The new ID name must not exceed @ref EN_SizeLimits "EN_MAXID" characters. */ - int DLLEXPORT EN_setpatternid(EN_Project ph, int index, char *id); + int DLLEXPORT EN_setpatternid(EN_Project ph, int index, const char *id); /** @brief Retrieves the number of time periods in a time pattern. @@ -1449,7 +1452,7 @@ typedef struct Project *EN_Project; The new curve contains a single data point (1.0, 1.0). */ - int DLLEXPORT EN_addcurve(EN_Project ph, char *id); + int DLLEXPORT EN_addcurve(EN_Project ph, const char *id); /** @brief Deletes a data curve from a project. @@ -1466,7 +1469,7 @@ typedef struct Project *EN_Project; @param[out] index The curve's index (starting from 1). @return an error code. */ - int DLLEXPORT EN_getcurveindex(EN_Project ph, char *id, int *out_index); + int DLLEXPORT EN_getcurveindex(EN_Project ph, const char *id, int *out_index); /** @brief Retrieves the ID name of a curve given its index. @@ -1475,7 +1478,7 @@ typedef struct Project *EN_Project; @param[out] out_id the curve's ID name. @return an error code. - The ID name must be sized to hold at least @ref EN_SizeLimits "EN_MAXID" characters. + The ID name must be sized to hold at least @ref EN_SizeLimits "EN_MAXID+1" characters. */ int DLLEXPORT EN_getcurveid(EN_Project ph, int index, char *out_id); @@ -1488,7 +1491,7 @@ typedef struct Project *EN_Project; The new ID name must not exceed @ref EN_SizeLimits "EN_MAXID" characters. */ - int DLLEXPORT EN_setcurveid(EN_Project ph, int index, char *id); + int DLLEXPORT EN_setcurveid(EN_Project ph, int index, const char *id); /** @brief Retrieves the number of points in a curve. @@ -1553,7 +1556,7 @@ typedef struct Project *EN_Project; The calling program is responsible for making `xValues` and `yValues` large enough to hold `nPoints` number of data points and for sizing `id` to hold at least - @ref EN_SizeLimits "EN_MAXID" characters. + @ref EN_SizeLimits "EN_MAXID+1" characters. */ int DLLEXPORT EN_getcurve(EN_Project ph, int index, char *out_id, int *out_nPoints, double *out_xValues, double *out_yValues); @@ -1683,7 +1686,7 @@ typedef struct Project *EN_Project; @param[out] out_id the rule's ID name. @return Error code. - The ID name must be sized to hold at least @ref EN_SizeLimits "EN_MAXID" characters. + The ID name must be sized to hold at least @ref EN_SizeLimits "EN_MAXID+1" characters. */ int DLLEXPORT EN_getruleID(EN_Project ph, int index, char *out_id); diff --git a/src/epanet.c b/src/epanet.c index 6516f7a..d9e0280 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -251,7 +251,8 @@ int DLLEXPORT EN_gettitle(EN_Project p, char *line1, char *line2, char *line3) return 0; } -int DLLEXPORT EN_settitle(EN_Project p, char *line1, char *line2, char *line3) +int DLLEXPORT EN_settitle(EN_Project p, const char *line1, + const char *line2, const char *line3) /*---------------------------------------------------------------- ** Input: line1, line2, line3 = project's title lines ** Returns: error code @@ -279,7 +280,8 @@ int DLLEXPORT EN_getcomment(EN_Project p, int object, int index, char *comment) return getcomment(&p->network, object, index, comment); } -int DLLEXPORT EN_setcomment(EN_Project p, int object, int index, char *comment) +int DLLEXPORT EN_setcomment(EN_Project p, int object, int index, + const char *comment) /*---------------------------------------------------------------- ** Input: object = a type of object (see EN_ObjectType) ** index = the object's index @@ -842,7 +844,7 @@ int DLLEXPORT EN_closeQ(EN_Project p) ********************************************************************/ - int DLLEXPORT EN_setreportcallback(EN_Project p, void (*callback)(void*,void*,char*)) + int DLLEXPORT EN_setreportcallback(EN_Project p, void (*callback)(void*,void*,const char*)) { p->report.reportCallback = callback; return 0; @@ -854,7 +856,7 @@ int DLLEXPORT EN_closeQ(EN_Project p) return 0; } -int DLLEXPORT EN_writeline(EN_Project p, char *line) +int DLLEXPORT EN_writeline(EN_Project p, const char *line) /*---------------------------------------------------------------- ** Input: line = line of text ** Output: none @@ -890,7 +892,7 @@ int DLLEXPORT EN_report(EN_Project p) return errcode; } -int DLLEXPORT EN_copyreport(EN_Project p, char *filename) +int DLLEXPORT EN_copyreport(EN_Project p, const char *filename) /*---------------------------------------------------------------- ** Input: filename = name of file to receive copy of report ** Output: none @@ -939,7 +941,7 @@ int DLLEXPORT EN_resetreport(EN_Project p) return 0; } -int DLLEXPORT EN_setreport(EN_Project p, char *format) +int DLLEXPORT EN_setreport(EN_Project p, const char *format) /*---------------------------------------------------------------- ** Input: format = a report formatting command ** Output: none @@ -1714,8 +1716,8 @@ int DLLEXPORT EN_getqualtype(EN_Project p, int *qualType, int *traceNode) return 0; } -int DLLEXPORT EN_setqualtype(EN_Project p, int qualType, char *chemName, - char *chemUnits, char *traceNode) +int DLLEXPORT EN_setqualtype(EN_Project p, int qualType, const char *chemName, + const char *chemUnits, const char *traceNode) /*---------------------------------------------------------------- ** Input: qualType = type of quality analysis to run (see EN_QualityType) ** chemname = name of chemical constituent @@ -1794,7 +1796,7 @@ int DLLEXPORT EN_setqualtype(EN_Project p, int qualType, char *chemName, ********************************************************************/ -int DLLEXPORT EN_addnode(EN_Project p, char *id, int nodeType, int *index) +int DLLEXPORT EN_addnode(EN_Project p, const char *id, int nodeType, int *index) /*---------------------------------------------------------------- ** Input: id = node ID name ** nodeType = type of node (see EN_NodeType) @@ -2043,7 +2045,7 @@ int DLLEXPORT EN_deletenode(EN_Project p, int index, int actionCode) return 0; } -int DLLEXPORT EN_getnodeindex(EN_Project p, char *id, int *index) +int DLLEXPORT EN_getnodeindex(EN_Project p, const char *id, int *index) /*---------------------------------------------------------------- ** Input: id = node ID name ** Output: index = node index @@ -2075,7 +2077,7 @@ int DLLEXPORT EN_getnodeid(EN_Project p, int index, char *id) return 0; } -int DLLEXPORT EN_setnodeid(EN_Project p, int index, char *newid) +int DLLEXPORT EN_setnodeid(EN_Project p, int index, const char *newid) /*---------------------------------------------------------------- ** Input: index = node index ** newid = new node ID name @@ -2618,7 +2620,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu } int DLLEXPORT EN_setjuncdata(EN_Project p, int index, double elev, - double dmnd, char *dmndpat) + double dmnd, const char *dmndpat) /*---------------------------------------------------------------- ** Input: index = junction node index ** elev = junction elevation @@ -2663,7 +2665,7 @@ int DLLEXPORT EN_setjuncdata(EN_Project p, int index, double elev, int DLLEXPORT EN_settankdata(EN_Project p, int index, double elev, double initlvl, double minlvl, double maxlvl, double diam, - double minvol, char *volcurve) + double minvol, const char *volcurve) /*---------------------------------------------------------------- ** Input: index = tank node index ** elev = tank bottom elevation @@ -2839,7 +2841,7 @@ int DLLEXPORT EN_setdemandmodel(EN_Project p, int model, double pmin, } int DLLEXPORT EN_adddemand(EN_Project p, int nodeIndex, double baseDemand, - char *demandPattern, char *demandName) + const char *demandPattern, const char *demandName) /*---------------------------------------------------------------- ** Input: nodeIndex = node index ** baseDemand = baseline demand value @@ -2926,7 +2928,7 @@ int DLLEXPORT EN_deletedemand(EN_Project p, int nodeIndex, int demandIndex) return 0; } -int DLLEXPORT EN_getdemandindex(EN_Project p, int nodeIndex, char *demandName, +int DLLEXPORT EN_getdemandindex(EN_Project p, int nodeIndex, const char *demandName, int *demandIndex) /*---------------------------------------------------------------- ** Input: nodeIndex = node index @@ -3075,7 +3077,7 @@ int DLLEXPORT EN_getdemandname(EN_Project p, int nodeIndex, int demandIndex, } int DLLEXPORT EN_setdemandname(EN_Project p, int nodeIndex, int demandIndex, - char *demandName) + const char *demandName) /*---------------------------------------------------------------- ** Input: nodeIndex = node index ** demandIndex = demand category index @@ -3165,8 +3167,8 @@ int DLLEXPORT EN_setdemandpattern(EN_Project p, int nodeIndex, int demandIndex, ********************************************************************/ -int DLLEXPORT EN_addlink(EN_Project p, char *id, int linkType, - char *fromNode, char *toNode, int *index) +int DLLEXPORT EN_addlink(EN_Project p, const char *id, int linkType, + const char *fromNode, const char *toNode, int *index) /*---------------------------------------------------------------- ** Input: id = link ID name ** type = link type (see EN_LinkType) @@ -3416,7 +3418,7 @@ int DLLEXPORT EN_deletelink(EN_Project p, int index, int actionCode) return 0; } -int DLLEXPORT EN_getlinkindex(EN_Project p, char *id, int *index) +int DLLEXPORT EN_getlinkindex(EN_Project p, const char *id, int *index) /*---------------------------------------------------------------- ** Input: id = link ID name ** Output: index = link index @@ -3448,7 +3450,7 @@ int DLLEXPORT EN_getlinkid(EN_Project p, int index, char *id) return 0; } -int DLLEXPORT EN_setlinkid(EN_Project p, int index, char *newid) +int DLLEXPORT EN_setlinkid(EN_Project p, int index, const char *newid) /*---------------------------------------------------------------- ** Input: index = link index ** id = link ID name @@ -4376,7 +4378,7 @@ int DLLEXPORT EN_setheadcurveindex(EN_Project p, int linkIndex, int curveIndex) ********************************************************************/ -int DLLEXPORT EN_addpattern(EN_Project p, char *id) +int DLLEXPORT EN_addpattern(EN_Project p, const char *id) /*---------------------------------------------------------------- ** Input: id = time pattern ID name ** Output: none @@ -4468,7 +4470,7 @@ int DLLEXPORT EN_deletepattern(EN_Project p, int index) return 0; } -int DLLEXPORT EN_getpatternindex(EN_Project p, char *id, int *index) +int DLLEXPORT EN_getpatternindex(EN_Project p, const char *id, int *index) /*---------------------------------------------------------------- ** Input: id = time pattern name ** Output: index = time pattern index @@ -4509,7 +4511,7 @@ int DLLEXPORT EN_getpatternid(EN_Project p, int index, char *id) return 0; } -int DLLEXPORT EN_setpatternid(EN_Project p, int index, char *id) +int DLLEXPORT EN_setpatternid(EN_Project p, int index, const char *id) /*---------------------------------------------------------------- ** Input: index = time pattern index ** id = time pattern ID name @@ -4653,7 +4655,7 @@ int DLLEXPORT EN_setpattern(EN_Project p, int index, double *values, int len) ********************************************************************/ -int DLLEXPORT EN_addcurve(EN_Project p, char *id) +int DLLEXPORT EN_addcurve(EN_Project p, const char *id) /*---------------------------------------------------------------- ** Input: id = data curve ID name ** Output: none @@ -4745,7 +4747,7 @@ int DLLEXPORT EN_deletecurve(EN_Project p, int index) return 0; } -int DLLEXPORT EN_getcurveindex(EN_Project p, char *id, int *index) +int DLLEXPORT EN_getcurveindex(EN_Project p, const char *id, int *index) /*---------------------------------------------------------------- ** Input: id = data curve name ** Output: index = data curve index @@ -4777,7 +4779,7 @@ int DLLEXPORT EN_getcurveid(EN_Project p, int index, char *id) return 0; } -int DLLEXPORT EN_setcurveid(EN_Project p, int index, char *id) +int DLLEXPORT EN_setcurveid(EN_Project p, int index, const char *id) /*---------------------------------------------------------------- ** Input: index = data curve index ** id = data curve ID name diff --git a/src/epanet2.c b/src/epanet2.c index be16f6a..53d1732 100644 --- a/src/epanet2.c +++ b/src/epanet2.c @@ -104,7 +104,7 @@ int DLLEXPORT ENgettitle(char *line1, char *line2, char *line3) return EN_gettitle(_defaultProject, line1, line2, line3) ; } -int DLLEXPORT ENsettitle(char *line1, char *line2, char *line3) +int DLLEXPORT ENsettitle(const char *line1, const char *line2, const char *line3) { return EN_settitle(_defaultProject, line1, line2, line3) ; } @@ -114,7 +114,7 @@ int DLLEXPORT ENgetcomment(int object, int index, char *comment) return EN_getcomment(_defaultProject, object, index, comment); } -int DLLEXPORT ENsetcomment(int object, int index, char *comment) +int DLLEXPORT ENsetcomment(int object, int index, const char *comment) { return EN_setcomment(_defaultProject, object, index, comment); } @@ -156,12 +156,12 @@ int DLLEXPORT ENnextH(long *tStep) { return EN_nextH(_defaultProject, tStep); } int DLLEXPORT ENcloseH() { return EN_closeH(_defaultProject); } -int DLLEXPORT ENsavehydfile(char *filename) +int DLLEXPORT ENsavehydfile(const char *filename) { return EN_savehydfile(_defaultProject, filename); } -int DLLEXPORT ENusehydfile(char *filename) +int DLLEXPORT ENusehydfile(const char *filename) { return EN_usehydfile(_defaultProject, filename); } @@ -192,11 +192,11 @@ int DLLEXPORT ENcloseQ() { return EN_closeQ(_defaultProject); } ********************************************************************/ -int DLLEXPORT ENwriteline(char *line) { return EN_writeline(_defaultProject, line); } +int DLLEXPORT ENwriteline(const char *line) { return EN_writeline(_defaultProject, line); } int DLLEXPORT ENreport() { return EN_report(_defaultProject); } -int DLLEXPORT ENcopyreport(char *filename) +int DLLEXPORT ENcopyreport(const char *filename) { return EN_copyreport(_defaultProject, filename); } @@ -205,14 +205,14 @@ int DLLEXPORT ENclearreport() { return EN_clearreport(_defaultProject); } int DLLEXPORT ENresetreport() { return EN_resetreport(_defaultProject); } -int DLLEXPORT ENsetreport(char *format) { return EN_setreport(_defaultProject, format); } +int DLLEXPORT ENsetreport(const char *format) { return EN_setreport(_defaultProject, format); } int DLLEXPORT ENsetstatusreport(int level) { return EN_setstatusreport(_defaultProject, level); } -int DLLEXPORT ENsetreportcallback(void (*callback)(void *userData, void *EN_projectHandle, char*)) +int DLLEXPORT ENsetreportcallback(void (*callback)(void *userData, void *EN_projectHandle, const char*)) { return EN_setreportcallback(_defaultProject, callback); } @@ -297,8 +297,8 @@ int DLLEXPORT ENgetqualtype(int *qualType, int *traceNode) return EN_getqualtype(_defaultProject, qualType, traceNode); } -int DLLEXPORT ENsetqualtype(int qualType, char *chemName, char *chemUnits, - char *traceNode) +int DLLEXPORT ENsetqualtype(int qualType, const char *chemName, + const char *chemUnits, const char *traceNode) { return EN_setqualtype(_defaultProject, qualType, chemName, chemUnits, traceNode); } @@ -309,7 +309,7 @@ int DLLEXPORT ENsetqualtype(int qualType, char *chemName, char *chemUnits, ********************************************************************/ -int DLLEXPORT ENaddnode(char *id, int nodeType, int *index) +int DLLEXPORT ENaddnode(const char *id, int nodeType, int *index) { return EN_addnode(_defaultProject, id, nodeType, index); } @@ -319,7 +319,7 @@ int DLLEXPORT ENdeletenode(int index, int actionCode) return EN_deletenode(_defaultProject, index, actionCode); } -int DLLEXPORT ENgetnodeindex(char *id, int *index) +int DLLEXPORT ENgetnodeindex(const char *id, int *index) { return EN_getnodeindex(_defaultProject, id, index); } @@ -329,7 +329,7 @@ int DLLEXPORT ENgetnodeid(int index, char *id) return EN_getnodeid(_defaultProject, index, id); } -int DLLEXPORT ENsetnodeid(int index, char *newid) +int DLLEXPORT ENsetnodeid(int index, const char *newid) { return EN_setnodeid(_defaultProject, index, newid); } @@ -353,7 +353,7 @@ int DLLEXPORT ENsetnodevalue(int index, int property, EN_API_FLOAT_TYPE value) } int DLLEXPORT ENsetjuncdata(int index, EN_API_FLOAT_TYPE elev, EN_API_FLOAT_TYPE dmnd, - char *dmndpat) + const char *dmndpat) { return EN_setjuncdata(_defaultProject, index, elev, dmnd, dmndpat); } @@ -361,7 +361,7 @@ int DLLEXPORT ENsetjuncdata(int index, EN_API_FLOAT_TYPE elev, EN_API_FLOAT_TYPE int DLLEXPORT ENsettankdata(int index, EN_API_FLOAT_TYPE elev, EN_API_FLOAT_TYPE initlvl, EN_API_FLOAT_TYPE minlvl, EN_API_FLOAT_TYPE maxlvl, EN_API_FLOAT_TYPE diam, - EN_API_FLOAT_TYPE minvol, char *volcurve) + EN_API_FLOAT_TYPE minvol, const char *volcurve) { return EN_settankdata(_defaultProject, index, elev, initlvl, minlvl, maxlvl, diam, minvol, volcurve); @@ -401,7 +401,7 @@ int DLLEXPORT ENsetdemandmodel(int model, EN_API_FLOAT_TYPE pmin, } int DLLEXPORT ENadddemand(int nodeIndex, EN_API_FLOAT_TYPE baseDemand, - char *demandPattern, char *demandName) + const char *demandPattern, const char *demandName) { return EN_adddemand(_defaultProject, nodeIndex, baseDemand, demandPattern, demandName); } @@ -411,7 +411,7 @@ int DLLEXPORT ENdeletedemand(int nodeIndex, int demandIndex) return EN_deletedemand(_defaultProject, nodeIndex, demandIndex); } -int DLLEXPORT ENgetdemandindex(int nodeIndex, char *demandName, int *demandIndex) +int DLLEXPORT ENgetdemandindex(int nodeIndex, const char *demandName, int *demandIndex) { return EN_getdemandindex(_defaultProject, nodeIndex, demandName, demandIndex); } @@ -451,7 +451,7 @@ int DLLEXPORT ENgetdemandname(int nodeIndex, int demandIndex, char *demandName) return EN_getdemandname(_defaultProject, nodeIndex, demandIndex, demandName); } -int DLLEXPORT ENsetdemandname(int nodeIndex, int demandIndex, char *demandName) +int DLLEXPORT ENsetdemandname(int nodeIndex, int demandIndex, const char *demandName) { return EN_setdemandname(_defaultProject, nodeIndex, demandIndex, demandName); } @@ -462,7 +462,8 @@ int DLLEXPORT ENsetdemandname(int nodeIndex, int demandIndex, char *demandName) ********************************************************************/ -int DLLEXPORT ENaddlink(char *id, int linkType, char *fromNode, char *toNode, int *index) +int DLLEXPORT ENaddlink(const char *id, int linkType, const char *fromNode, + const char *toNode, int *index) { return EN_addlink(_defaultProject, id, linkType, fromNode, toNode, index); } @@ -472,7 +473,7 @@ int DLLEXPORT ENdeletelink(int index, int actionCode) return EN_deletelink(_defaultProject, index, actionCode); } -int DLLEXPORT ENgetlinkindex(char *id, int *index) +int DLLEXPORT ENgetlinkindex(const char *id, int *index) { return EN_getlinkindex(_defaultProject, id, index); } @@ -482,7 +483,7 @@ int DLLEXPORT ENgetlinkid(int index, char *id) return EN_getlinkid(_defaultProject, index, id); } -int DLLEXPORT ENsetlinkid(int index, char *newid) +int DLLEXPORT ENsetlinkid(int index, const char *newid) { return EN_setlinkid(_defaultProject, index, newid); } @@ -573,7 +574,7 @@ int DLLEXPORT ENsetheadcurveindex(int linkIndex, int curveIndex) ********************************************************************/ -int DLLEXPORT ENaddpattern(char *id) +int DLLEXPORT ENaddpattern(const char *id) { return EN_addpattern(_defaultProject, id); } @@ -583,7 +584,7 @@ int DLLEXPORT ENdeletepattern(int index) return EN_deletepattern(_defaultProject, index); } -int DLLEXPORT ENgetpatternindex(char *id, int *index) +int DLLEXPORT ENgetpatternindex(const char *id, int *index) { return EN_getpatternindex(_defaultProject, id, index); } @@ -593,7 +594,7 @@ int DLLEXPORT ENgetpatternid(int index, char *id) return EN_getpatternid(_defaultProject, index, id); } -int DLLEXPORT ENsetpatternid(int index, char *id) +int DLLEXPORT ENsetpatternid(int index, const char *id) { return EN_setpatternid(_defaultProject, index, id); } @@ -646,7 +647,7 @@ int DLLEXPORT ENsetpattern(int index, EN_API_FLOAT_TYPE *values, int len) ********************************************************************/ -int DLLEXPORT ENaddcurve(char *id) +int DLLEXPORT ENaddcurve(const char *id) { return EN_addcurve(_defaultProject, id); } @@ -656,7 +657,7 @@ int DLLEXPORT ENdeletecurve(int index) return EN_deletecurve(_defaultProject, index); } -int DLLEXPORT ENgetcurveindex(char *id, int *index) +int DLLEXPORT ENgetcurveindex(const char *id, int *index) { return EN_getcurveindex(_defaultProject, id, index); } @@ -666,7 +667,7 @@ int DLLEXPORT ENgetcurveid(int index, char *id) return EN_getcurveid(_defaultProject, index, id); } -int DLLEXPORT ENsetcurveid(int index, char *id) +int DLLEXPORT ENsetcurveid(int index, const char *id) { return EN_setcurveid(_defaultProject, index, id); } diff --git a/src/funcs.h b/src/funcs.h index 69d3f81..2391477 100755 --- a/src/funcs.h +++ b/src/funcs.h @@ -31,16 +31,16 @@ int incontrols(Project *, int, int); int valvecheck(Project *, int, int, int, int); int unlinked(Project *); -int findnode(Network *, char *); -int findlink(Network *, char *); +int findnode(Network *, const char *); +int findlink(Network *, const char *); int findtank(Network *, int); int findvalve(Network *, int); int findpump(Network *, int); -int findpattern(Network *, char *); -int findcurve(Network *, char *); +int findpattern(Network *, const char *); +int findcurve(Network *, const char *); Pdemand finddemand(Pdemand, int); -int adddemand(Snode *, double, int, char *); +int adddemand(Snode *, double, int, const char *); void freedemands(Snode *); int addlinkvertex(Slink *, double, double); @@ -128,13 +128,13 @@ int checkrules(Project *, long); // ------- REPORT.C ----------------- int clearreport(Project *); -int copyreport(Project *, char *); +int copyreport(Project *, const char *); int writereport(Project *); void writelogo(Project *); void writesummary(Project *); void writehydstat(Project *, int, double); void writeheader(Project *, int,int); -void writeline(Project *, char *); +void writeline(Project *, const char *); void writerelerr(Project *, int, double); void writestatchange(Project *, int,char,char); void writecontrolaction(Project *, int, int); diff --git a/src/hash.c b/src/hash.c index 4e0099b..411c8ed 100755 --- a/src/hash.c +++ b/src/hash.c @@ -26,7 +26,7 @@ typedef struct DataEntryStruct } DataEntry; // Hash a string to an integer -unsigned int gethash(char *str) +unsigned int gethash(const char *str) { unsigned int hash = 5381; unsigned int retHash; @@ -61,7 +61,7 @@ HashTable *hashtable_create() } // Insert an entry into the hash table -int hashtable_insert(HashTable *ht, char *key, int data) +int hashtable_insert(HashTable *ht, const char *key, int data) { unsigned int i = gethash(key); DataEntry *entry; @@ -76,7 +76,7 @@ int hashtable_insert(HashTable *ht, char *key, int data) } // Change the hash table's data entry for a particular key -int hashtable_update(HashTable *ht, char *key, int new_data) +int hashtable_update(HashTable *ht, const char *key, int new_data) { unsigned int i = gethash(key); DataEntry *entry; @@ -96,7 +96,7 @@ int hashtable_update(HashTable *ht, char *key, int new_data) } // Delete an entry in the hash table -int hashtable_delete(HashTable *ht, char *key) +int hashtable_delete(HashTable *ht, const char *key) { unsigned int i = gethash(key); DataEntry *entry, *preventry; @@ -122,7 +122,7 @@ int hashtable_delete(HashTable *ht, char *key) } // Find the data for a particular key -int hashtable_find(HashTable *ht, char *key) +int hashtable_find(HashTable *ht, const char *key) { unsigned int i = gethash(key); DataEntry *entry; @@ -141,7 +141,7 @@ int hashtable_find(HashTable *ht, char *key) } // Find a particular key in the hash table -char *hashtable_findkey(HashTable *ht, char *key) +char *hashtable_findkey(HashTable *ht, const char *key) { unsigned int i = gethash(key); DataEntry *entry; diff --git a/src/hash.h b/src/hash.h index c847e00..feec4d0 100755 --- a/src/hash.h +++ b/src/hash.h @@ -18,11 +18,11 @@ typedef struct DataEntryStruct *HashTable; HashTable *hashtable_create(void); -int hashtable_insert(HashTable *, char *, int); -int hashtable_find(HashTable *, char *); -char *hashtable_findkey(HashTable *, char *); +int hashtable_insert(HashTable *, const char *, int); +int hashtable_find(HashTable *, const char *); +char *hashtable_findkey(HashTable *, const char *); void hashtable_free(HashTable *); -int hashtable_update(HashTable *ht, char *key, int new_data); -int hashtable_delete(HashTable *ht, char *key); +int hashtable_update(HashTable *ht, const char *key, int new_data); +int hashtable_delete(HashTable *ht, const char *key); #endif diff --git a/src/project.c b/src/project.c index 2aefa21..d5eee6c 100644 --- a/src/project.c +++ b/src/project.c @@ -492,7 +492,7 @@ Pdemand finddemand(Pdemand d, int index) return d; } -int adddemand(Snode *node, double dbase, int dpat, char *dname) +int adddemand(Snode *node, double dbase, int dpat, const char *dname) /*---------------------------------------------------------------- ** Input: node = a network junction node ** dbase = base demand value @@ -834,7 +834,7 @@ int unlinked(Project *pr) return 0; } -int findnode(Network *network, char *id) +int findnode(Network *network, const char *id) /*---------------------------------------------------------------- ** Input: id = node ID ** Output: none @@ -846,7 +846,7 @@ int findnode(Network *network, char *id) return (hashtable_find(network->NodeHashTable, id)); } -int findlink(Network *network, char *id) +int findlink(Network *network, const char *id) /*---------------------------------------------------------------- ** Input: id = link ID ** Output: none @@ -909,7 +909,7 @@ int findvalve(Network *network, int index) return NOTFOUND; } -int findpattern(Network *network, char *id) +int findpattern(Network *network, const char *id) /*---------------------------------------------------------------- ** Input: id = time pattern ID ** Output: none @@ -928,7 +928,7 @@ int findpattern(Network *network, char *id) return -1; } -int findcurve(Network *network, char *id) +int findcurve(Network *network, const char *id) /*---------------------------------------------------------------- ** Input: id = data curve ID ** Output: none diff --git a/src/report.c b/src/report.c index ae675da..14f55cf 100644 --- a/src/report.c +++ b/src/report.c @@ -67,7 +67,7 @@ int clearreport(Project *pr) return 0; } -int copyreport(Project* pr, char *filename) +int copyreport(Project* pr, const char *filename) /* **------------------------------------------------------ ** Input: filename = name of file to copy to @@ -876,7 +876,7 @@ void writeheader(Project *pr, int type, int contin) } } -void writeline(Project *pr, char *s) +void writeline(Project *pr, const char *s) /* **-------------------------------------------------------------- ** Input: *s = text string diff --git a/src/types.h b/src/types.h index e719c6b..02634e7 100755 --- a/src/types.h +++ b/src/types.h @@ -634,7 +634,7 @@ typedef struct { SField Field[MAXVAR]; // Output reporting fields - void (*reportCallback)(void*,void*,char*); // user-supplied reporting callback + void (*reportCallback)(void*,void*,const char*); // user-supplied reporting callback void *reportCallbackUserData; // user-supplied reporting context } Report; From 869e441fe858d958dc63488d25da146a9ca70206 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Fri, 3 Feb 2023 11:29:05 -0500 Subject: [PATCH 099/233] Revise status test for full/empty tanks Simplifies status check for links connected to full/empty tanks and now includes case where link connects two tanks. --- src/hydstatus.c | 58 +++++++++++++++---------------------------------- 1 file changed, 17 insertions(+), 41 deletions(-) diff --git a/src/hydstatus.c b/src/hydstatus.c index f3cae46..e746e58 100644 --- a/src/hydstatus.c +++ b/src/hydstatus.c @@ -7,7 +7,7 @@ Description: updates hydraulic status of network elements Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 08/08/2022 +Last Updated: 02/03/2023 ****************************************************************************** */ @@ -27,7 +27,7 @@ static StatusType pumpstatus(Project *, int, double); static StatusType prvstatus(Project *, int, StatusType, double, double, double); static StatusType psvstatus(Project *, int, StatusType, double, double, double); static StatusType fcvstatus(Project *, int, StatusType, double, double); -static void tankstatus(Project *, int, int, int); +static void tankstatus(Project *, int, int, double); int valvestatus(Project *pr) @@ -155,10 +155,8 @@ int linkstatus(Project *pr) } // Check for flow into (out of) full (empty) tanks - if (n1 > net->Njuncs || n2 > net->Njuncs) - { - tankstatus(pr, k, n1, n2); - } + if (n1 > net->Njuncs) tankstatus(pr, k, n1, hyd->LinkFlow[k]); + if (n2 > net->Njuncs) tankstatus(pr, k, n2, -hyd->LinkFlow[k]); // Note any change in link status; do not revise link flow if (status != hyd->LinkStatus[k]) @@ -224,6 +222,7 @@ StatusType pumpstatus(Project *pr, int k, double dh) { // Use huge value for constant HP pump hmax = BIG; + if (hyd->LinkFlow[k] < TINY) return TEMPCLOSED; } else { @@ -407,12 +406,12 @@ StatusType fcvstatus(Project *pr, int k, StatusType s, double h1, double h2) } -void tankstatus(Project *pr, int k, int n1, int n2) +void tankstatus(Project *pr, int k, int n, double q) /* **---------------------------------------------------------------- -** Input: k = link index -** n1 = start node of link -** n2 = end node of link +** Input: k = link index +** n = tank node index +** q = link flow rate out of (+) or into (-) tank ** Output: none ** Purpose: closes link flowing into full or out of empty tank **---------------------------------------------------------------- @@ -421,46 +420,23 @@ void tankstatus(Project *pr, int k, int n1, int n2) Network *net = &pr->network; Hydraul *hyd = &pr->hydraul; - int i, n; - double q; + int i; Stank *tank; Slink *link = &net->Link[k]; // Return if link is closed if (hyd->LinkStatus[k] <= CLOSED) return; - // Make node n1 be the tank, reversing flow (q) if need be - q = hyd->LinkFlow[k]; - i = n1 - net->Njuncs; - if (i <= 0) - { - i = n2 - net->Njuncs; - if (i <= 0) return; - n = n1; - n1 = n2; - n2 = n; - q = -q; - } - // Ignore reservoirs + i = n - net->Njuncs; tank = &net->Tank[i]; if (tank->A == 0.0) return; - + // Can't add flow to a full tank - if (hyd->NodeHead[n1] >= tank->Hmax && !tank->CanOverflow) - { - if (link->Type == PUMP && link->N2 == n1) - hyd->LinkStatus[k] = TEMPCLOSED; - else if (q < 0.0) - hyd->LinkStatus[k] = TEMPCLOSED; - } - + if (hyd->NodeHead[n] >= tank->Hmax && !tank->CanOverflow && q < TINY) + hyd->LinkStatus[k] = TEMPCLOSED; + // Can't remove flow from an empty tank - if (hyd->NodeHead[n1] <= tank->Hmin) - { - if (link->Type == PUMP && link->N1 == n1) - hyd->LinkStatus[k] = TEMPCLOSED; - else if (q > 0.0) - hyd->LinkStatus[k] = TEMPCLOSED; - } + else if (hyd->NodeHead[n] <= tank->Hmin && q > -TINY) + hyd->LinkStatus[k] = TEMPCLOSED; } From 847fa8213954b50586fc1933e7a7dc8ae23aa611 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sun, 5 Feb 2023 15:16:20 -0500 Subject: [PATCH 100/233] Add emitter backflow option Adds a global hydraulic option to allow backflow or not through emitter elements. To maintain backward compatibility the default is YES. --- include/epanet.cs | 2 ++ include/epanet2.bas | 2 ++ include/epanet2.pas | 2 ++ include/epanet2.vb | 2 ++ include/epanet2_enums.h | 5 +++-- src/enumstxt.h | 6 +++++- src/epanet.c | 10 +++++++++- src/hydcoeffs.c | 9 ++++++++- src/inpfile.c | 4 +++- src/input1.c | 3 ++- src/input3.c | 14 +++++++++++++- src/text.h | 3 ++- src/types.h | 3 ++- 13 files changed, 55 insertions(+), 10 deletions(-) diff --git a/include/epanet.cs b/include/epanet.cs index 68489e6..c379b8c 100644 --- a/include/epanet.cs +++ b/include/epanet.cs @@ -182,6 +182,8 @@ namespace EpanetCSharpLibrary public const int EN_WALLORDER = 20; public const int EN_TANKORDER = 21; public const int EN_CONCENLIMIT = 22; + public const int EN_DEMANDPATTERN = 23; + public const int EN_EMITBACKFLOW = 24; public const int EN_LOWLEVEL = 0; //Control types public const int EN_HILEVEL = 1; diff --git a/include/epanet2.bas b/include/epanet2.bas index 2d41bb2..ae26f53 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -179,6 +179,8 @@ Public Const EN_BULKORDER = 19 Public Const EN_WALLORDER = 20 Public Const EN_TANKORDER = 21 Public Const EN_CONCENLIMIT = 22 +Public Const EN_DEMANDPATTERN = 23 +Public Const EN_EMITBACKFLOW = 24 Public Const EN_LOWLEVEL = 0 ' Control types Public Const EN_HILEVEL = 1 diff --git a/include/epanet2.pas b/include/epanet2.pas index fba8147..480cb3d 100644 --- a/include/epanet2.pas +++ b/include/epanet2.pas @@ -185,6 +185,8 @@ const EN_WALLORDER = 20; EN_TANKORDER = 21; EN_CONCENLIMIT = 22; + EN_DEMANDPATTERN = 23; + EN_EMITBACKFLOW = 24; EN_LOWLEVEL = 0; { Control types } EN_HILEVEL = 1; diff --git a/include/epanet2.vb b/include/epanet2.vb index 7c283f0..32ca854 100644 --- a/include/epanet2.vb +++ b/include/epanet2.vb @@ -174,6 +174,8 @@ Public Const EN_BULKORDER = 19 Public Const EN_WALLORDER = 20 Public Const EN_TANKORDER = 21 Public Const EN_CONCENLIMIT = 22 +Public Const EN_DEMANDPATTERN = 23 +Public Const EN_EMITBACKFLOW = 24 Public Const EN_LOWLEVEL = 0 ' Control types Public Const EN_HILEVEL = 1 diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index 8c4be41..5fe6422 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -9,7 +9,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 08/13/2022 + Last Updated: 02/05/2023 ****************************************************************************** */ @@ -335,7 +335,8 @@ typedef enum { EN_WALLORDER = 20, //!< Wall reaction order for pipes (either 0 or 1) EN_TANKORDER = 21, //!< Bulk water reaction order for tanks EN_CONCENLIMIT = 22, //!< Limiting concentration for growth reactions - EN_DEMANDPATTERN = 23 //!< Name of default demand pattern + EN_DEMANDPATTERN = 23, //!< Name of default demand pattern + EN_EMITBACKFLOW = 24 //!< 1 if emitters can backflow, 0 if not } EN_Option; /// Simple control types diff --git a/src/enumstxt.h b/src/enumstxt.h index ccc12e8..682ab43 100755 --- a/src/enumstxt.h +++ b/src/enumstxt.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 08/13/2022 + Last Updated: 02/05/2023 ****************************************************************************** */ @@ -111,6 +111,10 @@ char *MixTxt[] = {w_MIXED, char *RptFlagTxt[] = {w_NO, w_YES, w_FULL}; + +char *BackflowTxt[] = {w_NO, + w_YES, + NULL}; char *SectTxt[] = {s_TITLE, s_JUNCTIONS, s_RESERVOIRS, s_TANKS, s_PIPES, s_PUMPS, diff --git a/src/epanet.c b/src/epanet.c index d9e0280..f7818b7 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 08/13/2022 + Last Updated: 02/05/2023 ****************************************************************************** */ @@ -1205,6 +1205,9 @@ int DLLEXPORT EN_getoption(EN_Project p, int option, double *value) case EN_DEMANDPATTERN: v = hyd->DefPat; break; + case EN_EMITBACKFLOW: + v = hyd->EmitBackFlag; + break; default: return 251; } @@ -1367,6 +1370,11 @@ int DLLEXPORT EN_setoption(EN_Project p, int option, double value) hyd->DefPat = pat; break; + case EN_EMITBACKFLOW: + if (value == 0.0 || value == 1.0) hyd->EmitBackFlag = (int)value; + else return 213; + break; + default: return 251; } diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index b45f032..55286fe 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 08/13/2022 + Last Updated: 02/05/2023 ****************************************************************************** */ @@ -495,6 +495,13 @@ void emitterheadloss(Project *pr, int i, double *hloss, double *hgrad) // Otherwise use normal emitter head loss function else *hloss = (*hgrad) * q / hyd->Qexp; + + // Prevent negative flow if backflow not allowed + if (hyd->EmitBackFlag == 0 && q <= 0.0) + { + *hgrad += CBIG; + *hloss += CBIG * q; + } } diff --git a/src/inpfile.c b/src/inpfile.c index f8b2005..33365ed 100644 --- a/src/inpfile.c +++ b/src/inpfile.c @@ -7,7 +7,7 @@ Description: saves network data to an EPANET formatted text file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 08/13/2022 +Last Updated: 02/05/2023 ****************************************************************************** */ @@ -33,6 +33,7 @@ extern char *MixTxt[]; extern char *TstatTxt[]; extern char *RptFlagTxt[]; extern char *SectTxt[]; +extern char *BackflowTxt[]; void saveauxdata(Project *pr, FILE *f) /* @@ -676,6 +677,7 @@ int saveinpfile(Project *pr, const char *fname) fprintf(f, "\n PATTERN %s", net->Pattern[hyd->DefPat].ID); fprintf(f, "\n DEMAND MULTIPLIER %-.4f", hyd->Dmult); fprintf(f, "\n EMITTER EXPONENT %-.4f", 1.0 / hyd->Qexp); + fprintf(f, "\n EMITTER BACKFLOW %s", BackflowTxt[hyd->EmitBackFlag]); fprintf(f, "\n VISCOSITY %-.6f", hyd->Viscos / VISCOS); fprintf(f, "\n DIFFUSIVITY %-.6f", qual->Diffus / DIFFUS); fprintf(f, "\n SPECIFIC GRAVITY %-.6f", hyd->SpGrav); diff --git a/src/input1.c b/src/input1.c index 540225d..0e847f8 100644 --- a/src/input1.c +++ b/src/input1.c @@ -7,7 +7,7 @@ Description: retrieves network data from an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 07/08/2019 +Last Updated: 02/05/2023 ****************************************************************************** */ @@ -120,6 +120,7 @@ void setdefaults(Project *pr) hyd->Epump = EPUMP; // Default pump efficiency hyd->Emax = 0.0; // Zero peak energy usage hyd->Qexp = 2.0; // Flow exponent for emitters + hyd->EmitBackFlag = 1; // Allow emitter backflow hyd->DefPat = 0; // Default demand pattern index hyd->Dmult = 1.0; // Demand multiplier hyd->RQtol = RQTOL; // Default hydraulics parameters diff --git a/src/input3.c b/src/input3.c index 9c2c795..082655a 100644 --- a/src/input3.c +++ b/src/input3.c @@ -7,7 +7,7 @@ Description: parses network data from a line of an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 08/13/2022 +Last Updated: 02/05/2023 ****************************************************************************** */ @@ -25,6 +25,7 @@ Last Updated: 08/13/2022 extern char *MixTxt[]; extern char *Fldname[]; extern char *DemandModelTxt[]; +extern char *BackflowTxt[]; // Exported functions int powercurve(double, double, double, double, double, double *, double *, @@ -1759,6 +1760,7 @@ int optionchoice(Project *pr, int n) ** UNBALANCED STOP/CONTINUE {Niter} ** PATTERN id ** DEMAND MODEL DDA/PDA +** EMITTER BACKFLOW YES/NO **-------------------------------------------------------------- */ { @@ -1896,6 +1898,16 @@ int optionchoice(Project *pr, int n) if (choice < 0) return setError(parser, 2, 213); hyd->DemandModel = choice; } + + // EMITTER BACKFLOW + else if (match(parser->Tok[0], w_EMITTER)) + { + if (n < 2) return 0; + if (!match(parser->Tok[1], w_BACKFLOW)) return -1; + choice = findmatch(parser->Tok[2], BackflowTxt); + if (choice < 0) return setError(parser, 2, 213); + hyd->EmitBackFlag = choice; + } // Return -1 if keyword did not match any option else return -1; diff --git a/src/text.h b/src/text.h index 72fef68..7f26a70 100755 --- a/src/text.h +++ b/src/text.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 08/13/2022 + Last Updated: 02/05/2023 ****************************************************************************** */ @@ -131,6 +131,7 @@ #define w_SEGMENTS "SEGM" #define w_TOLERANCE "TOLER" #define w_EMITTER "EMIT" +#define w_BACKFLOW "BACK" #define w_PRICE "PRICE" #define w_DMNDCHARGE "DEMAN" diff --git a/src/types.h b/src/types.h index 02634e7..a8d7273 100755 --- a/src/types.h +++ b/src/types.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 08/13/2022 + Last Updated: 02/05/2023 ****************************************************************************** */ @@ -744,6 +744,7 @@ typedef struct { Epat, // Energy cost time pattern DemandModel, // Fixed or pressure dependent Formflag, // Head loss formula flag + EmitBackFlag, // Emitter backflow flag Iterations, // Number of hydraulic trials taken MaxIter, // Max. hydraulic trials allowed ExtraIter, // Extra hydraulic trials From 61b03b8539e26001b69ed59e602226b9818d3d13 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 7 Feb 2023 22:59:18 -0500 Subject: [PATCH 101/233] Updating the docs --- ReleaseNotes2_3.md | 5 +++-- doc/input-file.dox | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 2a51cd6..a706923 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -1,4 +1,4 @@ -> +> ## Release Notes for EPANET 2.3 This document describes the changes and updates that have been made in version 2.3 of EPANET. @@ -17,7 +17,7 @@ This document describes the changes and updates that have been made in version 2 - A failure to raise an error condition for a pipe roughness <= 0 in the input file has been fixed. - The calculation of head loss gradient for low flow conditions was corrected. - Improved updating and convergence tests were added to pressure dependent demand analysis. - - Improved checks to prevent outflow from empty tanks or inflow to full (non-overflow) tanks. *(Still needs more work).* + - Improved checks to prevent outflow from empty tanks or inflow to full (non-overflow) tanks, including the case where a link is connected to a pair of tanks. - The CI regression test protocol was modified by: - changing the absolute tolerance used to compare the closeness of test results to benchmark values from 0 to 0.0001 - dropping the "correct decimal digits" test @@ -27,5 +27,6 @@ This document describes the changes and updates that have been made in version 2 - A new type of valve, a Positional Control Valve (PCV), was added that uses a valve characteristic curve to relate its loss coefficient to its fraction open setting. - A new set of functions have been added to get information about upcoming time step events. Users will now see what type of event is going to cause the end of a time step to occur. See ENtimetonextevent and EN_timetonextevent. - A new set of functions have been added to allow users to set a reporting callback function. The user-supplied function will recieve all output normally directed to the report file. + - A `EN_EMITBACKFLOW` option was added that either allows emitters to have reverse flow through them (the default) or not. diff --git a/doc/input-file.dox b/doc/input-file.dox index f4d36ce..758b847 100644 --- a/doc/input-file.dox +++ b/doc/input-file.dox @@ -298,6 +298,7 @@ __Formats:__ PATTERNid DEMAND MULTIPLIERvalue EMITTER EXPONENTvalue +EMITTER BACKFLOWYES / NO QUALITYNONE / CHEMICAL / AGE / TRACE   nodeID DIFFUSIVITYvalue TOLERANCEvalue @@ -357,6 +358,8 @@ The DEMAND MULTIPLIER is used to adjust the values of baseline demands fo EMITTER EXPONENT specifies the power to which the pressure at a junction is raised when computing the flow issuing from an emitter. The default is 0.5. +EMITTER BACKFLOW specifies if back flow through an emitter (i.e., flow into the network) is allowed. The default is YES. + \b QUALITY selects the type of water quality analysis to perform. The choices are NONE, CHEMICAL, AGE, and \b TRACE. In place of \b CHEMICAL the actual name of the chemical can be used followed by its concentration units (e.g., CHLORINE mg/L). If \b TRACE is selected it must be followed by the ID label of the node being traced. The default selection is \b NONE (no water quality analysis). \b DIFFUSIVITY is the molecular diffusivity of the chemical being analyzed relative to that of chlorine in water. The default value is 1.0. Diffusivity is only used when mass transfer limitations are considered in pipe wall reactions. A value of 0 will cause EPANET to ignore mass transfer limitations. From 3856a6310d2d0c12ebb4b40ae6ada16d3f07693b Mon Sep 17 00:00:00 2001 From: Luke Butler Date: Wed, 15 Feb 2023 14:46:39 -0500 Subject: [PATCH 102/233] Fixes incorrect hour set with >9 input tokens If you create a simple control with nine or more input tokens, the logic skips over assigning the hour variable and EPANET will activate the control at hour zero. --- src/input3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/input3.c b/src/input3.c index 082655a..10511a6 100644 --- a/src/input3.c +++ b/src/input3.c @@ -922,7 +922,7 @@ int controldata(Project *pr) case TIMER: case TIMEOFDAY: if (n == 6) time = hour(parser->Tok[5], ""); - if (n == 7) time = hour(parser->Tok[5], parser->Tok[6]); + if (n >= 7) time = hour(parser->Tok[5], parser->Tok[6]); if (time < 0.0) return setError(parser, 5, 213); break; case LOWLEVEL: From 843f1f4e37b6cf8ea511832a2ca2b4f7ef280d20 Mon Sep 17 00:00:00 2001 From: Luke Butler Date: Mon, 20 Feb 2023 09:43:42 -0500 Subject: [PATCH 103/233] Added support for cubic meters per second (CMS) --- doc/input-file.dox | 3 ++- doc/toolkit-units.dox | 5 +++-- include/epanet.cs | 1 + include/epanet2.bas | 1 + include/epanet2.pas | 1 + include/epanet2.vb | 1 + include/epanet2_enums.h | 3 ++- src/enumstxt.h | 6 ++++-- src/epanet.c | 3 ++- src/input1.c | 2 ++ src/input3.c | 3 ++- src/text.h | 2 ++ src/types.h | 4 +++- tests/test_demand.cpp | 26 ++++++++++++++++++++++++++ 14 files changed, 52 insertions(+), 9 deletions(-) diff --git a/doc/input-file.dox b/doc/input-file.dox index 758b847..be4c977 100644 --- a/doc/input-file.dox +++ b/doc/input-file.dox @@ -278,7 +278,7 @@ Defines various simulation options. __Formats:__ - + @@ -315,6 +315,7 @@ __Definitions:__ - \b LPS = liters per second - \b LPM = liters per minute - \b MLD = million liters per day +- \b CMS = cubic meters per second - \b CMH = cubic meters per hour - \b CMD = cubic meters per day diff --git a/doc/toolkit-units.dox b/doc/toolkit-units.dox index d8bd3be..259726e 100644 --- a/doc/toolkit-units.dox +++ b/doc/toolkit-units.dox @@ -17,8 +17,9 @@ The toolkit can use data expressed in either US Customary of SI Metric units. A |Flow | CFS (cubic feet / sec) | LPS (liters / sec) | | | GPM (gallons / min) | LPM (liters / min) | | | MGD (million gal / day) | MLD (megaliters / day) | -| | IMGD (Imperial MGD) | CMH (cubic meters / hr) | -| | AFD (acre-feet / day) | CMD (cubic meters / day) | +| | IMGD (Imperial MGD) | CMS (cubic meters / sec) | +| | AFD (acre-feet / day) | CMH (cubic meters / hr) | +| | | CMD (cubic meters / day) | |Friction Factor | unitless | unitless | |Head | feet | meters | |Length | feet | meters | diff --git a/include/epanet.cs b/include/epanet.cs index c379b8c..f3283b8 100644 --- a/include/epanet.cs +++ b/include/epanet.cs @@ -155,6 +155,7 @@ namespace EpanetCSharpLibrary public const int EN_MLD = 7; public const int EN_CMH = 8; public const int EN_CMD = 9; + public const int EN_CMS = 10; public const int EN_DDA = 0; //Demand driven analysis public const int EN_PDA = 1; //Pressure driven analysis diff --git a/include/epanet2.bas b/include/epanet2.bas index ae26f53..74e1d09 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -152,6 +152,7 @@ Public Const EN_LPM = 6 Public Const EN_MLD = 7 Public Const EN_CMH = 8 Public Const EN_CMD = 9 +Public Const EN_CMS = 10 Public Const EN_DDA = 0 ' Demand driven analysis Public Const EN_PDA = 1 ' Pressure driven analysis diff --git a/include/epanet2.pas b/include/epanet2.pas index 480cb3d..af600b8 100644 --- a/include/epanet2.pas +++ b/include/epanet2.pas @@ -158,6 +158,7 @@ const EN_MLD = 7; EN_CMH = 8; EN_CMD = 9; + EN_CMS = 10; EN_DDA = 0; { Demand model types } EN_PDA = 1; diff --git a/include/epanet2.vb b/include/epanet2.vb index 32ca854..e05e1d5 100644 --- a/include/epanet2.vb +++ b/include/epanet2.vb @@ -147,6 +147,7 @@ Public Const EN_LPM = 6 Public Const EN_MLD = 7 Public Const EN_CMH = 8 Public Const EN_CMD = 9 +Public Const EN_CMS = 10 Public Const EN_DDA = 0 ' Demand driven analysis Public Const EN_PDA = 1 ' Pressure driven analysis diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index 5fe6422..ff62b38 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -287,7 +287,8 @@ typedef enum { EN_LPM = 6, //!< Liters per minute EN_MLD = 7, //!< Million liters per day EN_CMH = 8, //!< Cubic meters per hour - EN_CMD = 9 //!< Cubic meters per day + EN_CMD = 9, //!< Cubic meters per day + EN_CMS = 10 //!< Cubic meters per second } EN_FlowUnits; /// Demand models diff --git a/src/enumstxt.h b/src/enumstxt.h index 682ab43..dbb4c74 100755 --- a/src/enumstxt.h +++ b/src/enumstxt.h @@ -59,7 +59,8 @@ char *RptFlowUnitsTxt[] = {u_CFS, u_LPM, u_MLD, u_CMH, - u_CMD}; + u_CMD, + u_CMS}; char *FlowUnitsTxt[] = {w_CFS, w_GPM, @@ -70,7 +71,8 @@ char *FlowUnitsTxt[] = {w_CFS, w_LPM, w_MLD, w_CMH, - w_CMD}; + w_CMD, + w_CMS}; char *PressUnitsTxt[] = {w_PSI, w_KPA, diff --git a/src/epanet.c b/src/epanet.c index f7818b7..115e87a 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -143,7 +143,7 @@ int DLLEXPORT EN_init(EN_Project p, const char *rptFile, const char *outFile, p->report.Rptflag = 1; // Check for valid arguments - if (unitsType < 0 || unitsType > CMD) return 251; + if (unitsType < 0 || unitsType > CMS) return 251; if (headLossType < 0 || headLossType > CM) return 251; // Open files @@ -1427,6 +1427,7 @@ int DLLEXPORT EN_setflowunits(EN_Project p, int units) case MLD: case CMH: case CMD: + case CMS: p->parser.Unitsflag = SI; break; default: diff --git a/src/input1.c b/src/input1.c index 0e847f8..c734432 100644 --- a/src/input1.c +++ b/src/input1.c @@ -254,6 +254,7 @@ void adjustdata(Project *pr) case MLD: // megaliters/day case CMH: // cubic meters/hr case CMD: // cubic meters/day + case CMS: // cubic meters/second parser->Unitsflag = SI; break; default: @@ -436,6 +437,7 @@ void initunits(Project *pr) if (parser->Flowflag == MLD) qcf = MLDperCFS; if (parser->Flowflag == CMH) qcf = CMHperCFS; if (parser->Flowflag == CMD) qcf = CMDperCFS; + if (parser->Flowflag == CMS) qcf = CMSperCFS; hcf = MperFT; if (parser->Pressflag == METERS) pcf = MperFT * hyd->SpGrav; diff --git a/src/input3.c b/src/input3.c index 10511a6..8880f6a 100644 --- a/src/input3.c +++ b/src/input3.c @@ -1750,7 +1750,7 @@ int optionchoice(Project *pr, int n) ** those listed below, or -1 otherwise ** Purpose: processes fixed choice [OPTIONS] data ** Formats: -** UNITS CFS/GPM/MGD/IMGD/AFD/LPS/LPM/MLD/CMH/CMD/SI +** UNITS CFS/GPM/MGD/IMGD/AFD/LPS/LPM/MLD/CMH/CMD/CMS/SI ** PRESSURE PSI/KPA/M ** HEADLOSS H-W/D-W/C-M ** HYDRAULICS USE/SAVE filename @@ -1790,6 +1790,7 @@ int optionchoice(Project *pr, int n) else if (match(parser->Tok[1], w_CMH)) parser->Flowflag = CMH; else if (match(parser->Tok[1], w_CMD)) parser->Flowflag = CMD; else if (match(parser->Tok[1], w_MLD)) parser->Flowflag = MLD; + else if (match(parser->Tok[1], w_CMS)) parser->Flowflag = CMS; else if (match(parser->Tok[1], w_SI)) parser->Flowflag = LPS; else return setError(parser, 1, 213); } diff --git a/src/text.h b/src/text.h index 7f26a70..f65414e 100755 --- a/src/text.h +++ b/src/text.h @@ -87,6 +87,7 @@ #define w_MLD "MLD" #define w_CMH "CMH" #define w_CMD "CMD" +#define w_CMS "CMS" #define w_SI "SI" #define w_PSI "PSI" @@ -236,6 +237,7 @@ #define u_IMGD "Imgd" #define u_LPS "L/s" #define u_LPM "Lpm" +#define u_CMS "m3/s" #define u_CMH "m3/h" #define u_CMD "m3/d" #define u_MLD "ML/d" diff --git a/src/types.h b/src/types.h index a8d7273..b757041 100755 --- a/src/types.h +++ b/src/types.h @@ -71,6 +71,7 @@ typedef int INT4; #define IMGDperCFS 0.5382 #define LPSperCFS 28.317 #define LPMperCFS 1699.0 +#define CMSperCFS 0.028317 #define CMHperCFS 101.94 #define CMDperCFS 2446.6 #define MLDperCFS 2.4466 @@ -227,7 +228,8 @@ typedef enum { LPM, // liters per minute MLD, // megaliters per day CMH, // cubic meters per hour - CMD // cubic meters per day + CMD, // cubic meters per day + CMS // cubic meters per second } FlowUnitsType; typedef enum { diff --git a/tests/test_demand.cpp b/tests/test_demand.cpp index d6ad4d2..e93c99a 100644 --- a/tests/test_demand.cpp +++ b/tests/test_demand.cpp @@ -122,5 +122,31 @@ BOOST_FIXTURE_TEST_CASE(test_adddemand, FixtureSingleNode) BOOST_CHECK(nD1 - nD2 == 1); } +BOOST_AUTO_TEST_CASE(test_cms_unit) +{ + int flowType; + + EN_Project ph = NULL; + EN_createproject(&ph); + + int error = EN_init(ph, DATA_PATH_RPT, DATA_PATH_OUT, EN_CMS, EN_HW); + BOOST_REQUIRE(error == 0); + + error = EN_setflowunits(ph, EN_CMS); + BOOST_REQUIRE(error == 0); + + error = EN_getflowunits(ph, &flowType ); + BOOST_REQUIRE(error == 0); + BOOST_REQUIRE(flowType == EN_CMS); + + error = EN_close(ph); + BOOST_REQUIRE(error == 0); + + int error = EN_init(ph, DATA_PATH_RPT, DATA_PATH_OUT, EN_CMS+1, EN_HW); + BOOST_REQUIRE(error == 251); + + EN_deleteproject(ph); +} + BOOST_AUTO_TEST_SUITE_END() From 09290da2cc04983960f1b7dd765ce7cea066e597 Mon Sep 17 00:00:00 2001 From: Luke Butler Date: Mon, 20 Feb 2023 10:05:51 -0500 Subject: [PATCH 104/233] Redefinition during test --- tests/test_demand.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_demand.cpp b/tests/test_demand.cpp index e93c99a..f39d8f7 100644 --- a/tests/test_demand.cpp +++ b/tests/test_demand.cpp @@ -142,7 +142,7 @@ BOOST_AUTO_TEST_CASE(test_cms_unit) error = EN_close(ph); BOOST_REQUIRE(error == 0); - int error = EN_init(ph, DATA_PATH_RPT, DATA_PATH_OUT, EN_CMS+1, EN_HW); + error = EN_init(ph, DATA_PATH_RPT, DATA_PATH_OUT, EN_CMS+1, EN_HW); BOOST_REQUIRE(error == 251); EN_deleteproject(ph); From 8e68b77f6105fae8cc144e38c8f307c7db3a98d3 Mon Sep 17 00:00:00 2001 From: Luke Butler Date: Mon, 20 Feb 2023 10:24:11 -0500 Subject: [PATCH 105/233] Updated outfile to support cubic meters/sec --- src/outfile/include/epanet_output_enums.h | 3 ++- src/outfile/src/epanet_output.c | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/outfile/include/epanet_output_enums.h b/src/outfile/include/epanet_output_enums.h index 0fa012f..c559835 100644 --- a/src/outfile/include/epanet_output_enums.h +++ b/src/outfile/include/epanet_output_enums.h @@ -33,7 +33,8 @@ typedef enum { ENR_LPM = 6, ENR_MLD = 7, ENR_CMH = 8, - ENR_CMD = 9 + ENR_CMD = 9, + ENR_CMS = 10 } ENR_FlowUnits; typedef enum { diff --git a/src/outfile/src/epanet_output.c b/src/outfile/src/epanet_output.c index 7d46e03..742aa28 100644 --- a/src/outfile/src/epanet_output.c +++ b/src/outfile/src/epanet_output.c @@ -295,6 +295,7 @@ int EXPORT_OUT_API ENR_getUnits(ENR_Handle p_handle, ENR_Units code, int* unitFl ** 7 = megaliters/day ** 8 = cubic meters/hour ** 9 = cubic meters/day + ** 10 = cubic meters/sec **------------------------------------------------------------------------- */ { From f530f958359a8838aab6cd3bafc63f8ccbfdf6f7 Mon Sep 17 00:00:00 2001 From: Luke Butler Date: Thu, 9 Mar 2023 14:34:39 -0500 Subject: [PATCH 106/233] Update BUILDING.md to include testing information --- BUILDING.md | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/BUILDING.md b/BUILDING.md index bac6ad0..8d6e66f 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -1,6 +1,9 @@ +# Building + The most straightforward way to build the EPANET files is by using `CMake` ([https://cmake.org/](https://cmake.org/)). `CMake` is a cross-platform build tool that generates platform native build systems that can be used with your compiler of choice. It uses a generator concept to represent different build tooling. `CMake` automatically detects the platform it is running on and generates the appropriate makefiles for the platform default compiler. Different generators can also be specified. The project's `CMake` file (`CMakeLists.txt`) is located in its root directory and supports builds for Linux, Mac OS and Windows. To build the EPANET library and its command line executable using `CMake`, first open a console window and navigate to the project's root directory. Then enter the following commands: + ``` mkdir build cd build @@ -10,10 +13,28 @@ cmake --build . --config Release Note: under Windows, the third command should be `cmake .. -A Win32` for a 32-bit build or `cmake .. -A x64` for a 64-bit build when Microsoft Visual Studio is the default compiler. -For Windows the resulting EPANET toolkit library `epanet2.dll` and its command line executable `runepanet.exe` are placed in the `build\bin\Release` directory. The `build\lib\Release` directory will contain an `epanet2.lib` file which is needed to build C/C++ applications using the Windows version of the library. For Linux and Mac OS the EPANET toolkit shared library `libepanet2.so` appears in the `build/lib` directory and the command line executable `runepanet` is in the `build/bin` directory. +For Windows the resulting EPANET toolkit library `epanet2.dll` and its command line executable `runepanet.exe` are placed in the `build\bin\Release` directory. The `build\lib\Release` directory will contain an `epanet2.lib` file which is needed to build C/C++ applications using the Windows version of the library. For Linux and Mac OS the EPANET toolkit shared library `libepanet2.so` appears in the `build/lib` directory and the command line executable `runepanet` is in the `build/bin` directory. In addition, two Windows one-click-build scripts are included in the `win_build` directory: + 1. `Makefile2.bat`: this script uses the `CMake` file and requires the build tools for Visual Studio available from [https://visualstudio.microsoft.com/downloads/](https://visualstudio.microsoft.com/downloads/). The Community version will work just fine. This script was tested with Visual Studio 2017 and 2019. 2. `Makefile.bat`: this is the legacy build script compatible with Visual Studio 2010 which conforms with the C89 Standard which was the standard EPANET supported from earlier versions. This script requires the installation of Microsoft Windows SDK 7.1 ([https://www.microsoft.com/en-us/download/details.aspx?id=8279](https://www.microsoft.com/en-us/download/details.aspx?id=8279)) and will probably not run correctly on later versions of the SDK. `CMake` is not used in this script. - -These two scripts build EPANET binaries for both the 32 and 64 bit Windows platforms, placing them in the `win_build\32bit` and `win_build\64bit` directories, respectively. \ No newline at end of file + +These two scripts build EPANET binaries for both the 32 and 64 bit Windows platforms, placing them in the `win_build\32bit` and `win_build\64bit` directories, respectively. + +# Testing + +Unit tests have been written using the Boost Unit Testing Framework and other Boost libraries. The tests are compiled into invidual excutables that automatically perform checks on the EPANET toolkit and output libaries. + +The CMake build system has been configured with a build option for building tests. When enabled (`-DBUILD_TESTS=ON`) the test executables are built and registered with the CTest test runner, the default value for the test build option is off. The location of Boost can also be defined with `-DBOOST_ROOT="%BOOST_ROOT%"` if required. + +To build the test excuitables for the EPANET library, first open a console window and navigate to the project's root directory. Then enter the following commands: + +``` +mkdir build +cd build +cmake -DBUILD_TESTS=ON .. +cmake --build . --config Release +cd tests +ctest -C Release --output-on-failure +``` From 0e4c4003554c3e43d4875de5379abcbe2ec0f664 Mon Sep 17 00:00:00 2001 From: Luke Butler Date: Wed, 15 Mar 2023 11:13:47 -0400 Subject: [PATCH 107/233] Update ReleaseNote2_3.md Commits between V2.2 and 2023-03-15 were reviewed and missed items in the release notes were added. Fixes #716 --- ReleaseNotes2_3.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index a706923..dfe27d5 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -28,5 +28,17 @@ This document describes the changes and updates that have been made in version 2 - A new set of functions have been added to get information about upcoming time step events. Users will now see what type of event is going to cause the end of a time step to occur. See ENtimetonextevent and EN_timetonextevent. - A new set of functions have been added to allow users to set a reporting callback function. The user-supplied function will recieve all output normally directed to the report file. - A `EN_EMITBACKFLOW` option was added that either allows emitters to have reverse flow through them (the default) or not. - - + - Elevation was not set correctly when using `EN_settankdata` with SI units, this has been fixed. + - The `EN_INITSETTING` option in function `EN_getlinkvalue` will return 0 if the setting equals MISSING due to a fixed `OPEN/CLOSED` status. + - The functions `EN_getnodevalue` and `EN_getlinkvalue` now includes options `EN_NODE_INCONTROL` and `EN_LINK_INCONTROL` to determine whether a node or link participates in a simple or rule-based control. + - Setting a minor loss of zero with `EN_setlinkvalue(ph, index, EN_MINORLOSS, 0)` would raise an error, this has been fixed. + - The reporting of unconnected nodes was not displaying correctly, this has been fixed. + - A header file for C# has been added. + - A new error code `263 - node is not a tank` is returned for when passing a non-tank node index to `EN_settankdata` or `EN_setnodevalue` with option `EN_TANKLEVEL`, `EN_TANKDIAM`, `EN_MINVOLUME`, `EN_VOLCURVE`, `EN_MINLEVEL`, `EN_MAXLEVEL`, `EN_MIXMODEL`, `EN_MIXFRACTION`, `EN_TANK_KBULK` or `EN_CANOVERFLOW`. + - The function `EN_saveinpfile` was incorrectly setting simple controls using GPV with the index of their head loss curve instead of their status, this has been fixed. + - Added support for Conan dependency manager. + - Fix silent Qualflag reset when QUALITY is not NONE and simulation duration is 0 in EPANET input file. + - Added support for cubic meters per second flow units. + - A simple control with more than 9 input tokens would set the incorrect hour, this has been fixed. + - When reading an EPANET inp file, errors in node and link vertex coordinates are ignored. + - Non-zero demands are now not included in `[DEMANDS]` when running `EN_saveinpfile`. From 40cd9acaf1cfc81c69dcb6afce9b85723e9aabc5 Mon Sep 17 00:00:00 2001 From: Luke Butler Date: Wed, 15 Mar 2023 11:33:01 -0400 Subject: [PATCH 108/233] Update BUILDING.md to mention windows tutorial --- BUILDING.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/BUILDING.md b/BUILDING.md index 8d6e66f..6e99a47 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -22,13 +22,15 @@ In addition, two Windows one-click-build scripts are included in the `win_build` These two scripts build EPANET binaries for both the 32 and 64 bit Windows platforms, placing them in the `win_build\32bit` and `win_build\64bit` directories, respectively. +A tutorial on [building OWA EPANET from source on Windows](tools/BuildAndTest.md), including running unit tests and performing regression testing, is also avaiable. + # Testing -Unit tests have been written using the Boost Unit Testing Framework and other Boost libraries. The tests are compiled into invidual excutables that automatically perform checks on the EPANET toolkit and output libaries. +Unit tests have been written using the Boost Unit Testing Framework and other Boost libraries. The tests are compiled into individual executables that automatically perform checks on the EPANET toolkit and output libraries. The CMake build system has been configured with a build option for building tests. When enabled (`-DBUILD_TESTS=ON`) the test executables are built and registered with the CTest test runner, the default value for the test build option is off. The location of Boost can also be defined with `-DBOOST_ROOT="%BOOST_ROOT%"` if required. -To build the test excuitables for the EPANET library, first open a console window and navigate to the project's root directory. Then enter the following commands: +To build the test executables for the EPANET library, first open a console window and navigate to the project's root directory. Then enter the following commands: ``` mkdir build From 4beebbd470bbdad45055e0defcc1857f444be144 Mon Sep 17 00:00:00 2001 From: Luke Butler Date: Thu, 16 Mar 2023 16:13:49 -0400 Subject: [PATCH 109/233] Add EN_PRESS_UNITS to EN_getoption & EN_setoption --- doc/input-file.dox | 3 ++ doc/modules.dox | 1 + doc/toolkit-units.dox | 2 +- include/epanet.cs | 5 +++ include/epanet2.bas | 5 +++ include/epanet2.vb | 5 +++ include/epanet2_enums.h | 16 ++++++++- src/epanet.c | 13 +++++++- tests/test_analysis.cpp | 8 ++--- tests/test_project.cpp | 73 ++++++++++++++++++++++++++++++++++++++++- 10 files changed, 123 insertions(+), 8 deletions(-) diff --git a/doc/input-file.dox b/doc/input-file.dox index be4c977..1c35f6f 100644 --- a/doc/input-file.dox +++ b/doc/input-file.dox @@ -279,6 +279,7 @@ __Formats:__
UNITSCFS / GPM / MGD / IMGD / AFD /
LPS / LPM / MLD / CMH / CMD
LPS / LPM / MLD / CMS / CMH / CMD
HEADLOSSH-W / D-W / C-M
HYDRAULICSUSE / SAVE  filename
VISCOSITYvalue
+ @@ -321,6 +322,8 @@ __Definitions:__ For CFS, GPM, MGD, IMGD, and AFD other input quantities are expressed in US Customary Units. If flow units are in liters or cubic meters then Metric Units must be used for all other input quantities as well. (See the @ref Units topic). The default flow units are \b GPM. +\b PRESSURE sets the units in which pressure is expressed, for networks using metric units, as determined by the \b UNITS option, the choices are: (\b KPA), or (\b METERS). For networks using US Customary Units, you can only use (\b PSI). + \b HEADLOSS selects a formula to use for computing head loss for flow through a pipe. The choices are the Hazen-Williams (\b H-W ), Darcy-Weisbach (\b D-W ), or Chezy-Manning (\b C-M ) formulas. The default is \b H-W. The \b HYDRAULICS option allows you to either SAVE the current hydraulics solution to a file or \b USE a previously saved hydraulics solution. This is useful when studying factors that only affect water quality behavior. diff --git a/doc/modules.dox b/doc/modules.dox index 249c0ec..a2ad22e 100644 --- a/doc/modules.dox +++ b/doc/modules.dox @@ -289,6 +289,7 @@ These are the toolkit's enumerated types whose members are used as function argu \enum EN_TimeParameter \enum EN_Option \enum EN_FlowUnits +\enum EN_PressUnits \enum EN_DemandModel \enum EN_MixingModel \enum EN_StatisticType diff --git a/doc/toolkit-units.dox b/doc/toolkit-units.dox index 259726e..db30aa2 100644 --- a/doc/toolkit-units.dox +++ b/doc/toolkit-units.dox @@ -25,7 +25,7 @@ The toolkit can use data expressed in either US Customary of SI Metric units. A |Length | feet | meters | |Minor Loss Coeff. | unitless | unitless | |Power | horsepower | kwatts | -|Pressure | psi | meters | +|Pressure | psi | meters or kPa | |Reaction Coeff. (Bulk) | 1/day (1st-order)| 1/day (1st-order) | |Reaction Coeff. (Wall) | mass/sq-ft/day (0-order) | mass/sq-m/day (0-order) | | | ft/day (1st-order) | meters/day (1st-order) | diff --git a/include/epanet.cs b/include/epanet.cs index f3283b8..c9cb2d4 100644 --- a/include/epanet.cs +++ b/include/epanet.cs @@ -157,6 +157,10 @@ namespace EpanetCSharpLibrary public const int EN_CMD = 9; public const int EN_CMS = 10; + public const int EN_PSI = 0; //Pressure units types + public const int EN_KPA = 1; + public const int EN_METERS = 2; + public const int EN_DDA = 0; //Demand driven analysis public const int EN_PDA = 1; //Pressure driven analysis @@ -185,6 +189,7 @@ namespace EpanetCSharpLibrary public const int EN_CONCENLIMIT = 22; public const int EN_DEMANDPATTERN = 23; public const int EN_EMITBACKFLOW = 24; + public const int EN_PRESS_UNITS = 25; public const int EN_LOWLEVEL = 0; //Control types public const int EN_HILEVEL = 1; diff --git a/include/epanet2.bas b/include/epanet2.bas index 74e1d09..63e5db3 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -154,6 +154,10 @@ Public Const EN_CMH = 8 Public Const EN_CMD = 9 Public Const EN_CMS = 10 +Public Const EN_PSI = 0 ' Pressure units types +Public Const EN_KPA = 1 +Public Const EN_METERS = 2 + Public Const EN_DDA = 0 ' Demand driven analysis Public Const EN_PDA = 1 ' Pressure driven analysis @@ -182,6 +186,7 @@ Public Const EN_TANKORDER = 21 Public Const EN_CONCENLIMIT = 22 Public Const EN_DEMANDPATTERN = 23 Public Const EN_EMITBACKFLOW = 24 +Public Const EN_PRESS_UNITS = 25 Public Const EN_LOWLEVEL = 0 ' Control types Public Const EN_HILEVEL = 1 diff --git a/include/epanet2.vb b/include/epanet2.vb index e05e1d5..daf5703 100644 --- a/include/epanet2.vb +++ b/include/epanet2.vb @@ -149,6 +149,10 @@ Public Const EN_CMH = 8 Public Const EN_CMD = 9 Public Const EN_CMS = 10 +Public Const EN_PSI = 0 ' Pressure units types +Public Const EN_KPA = 1 +Public Const EN_METERS = 2 + Public Const EN_DDA = 0 ' Demand driven analysis Public Const EN_PDA = 1 ' Pressure driven analysis @@ -177,6 +181,7 @@ Public Const EN_TANKORDER = 21 Public Const EN_CONCENLIMIT = 22 Public Const EN_DEMANDPATTERN = 23 Public Const EN_EMITBACKFLOW = 24 +Public Const EN_PRESS_UNITS = 25 Public Const EN_LOWLEVEL = 0 ' Control types Public Const EN_HILEVEL = 1 diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index ff62b38..4263eb6 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -291,6 +291,19 @@ typedef enum { EN_CMS = 10 //!< Cubic meters per second } EN_FlowUnits; +/// Pressure units +/** +The available choices for pressure units for the \b EN_PRESS_UNITS option in @ref EN_getoption +and @ref EN_setoption. For networks using US Customary units for flow ( \b EN_CFS through +\b EN_AFD ) pressure units can only be set as PSI. For network using metric units, you can +select either \b EN_MTR or \b EN_KPA. +*/ +typedef enum { + EN_PSI = 0, //!< Pounds per square inch + EN_KPA = 1, //!< Kilopascals + EN_METERS = 2 //!< Meters +} EN_PressUnits; + /// Demand models /** These choices for modeling consumer demands are used with @ref EN_getdemandmodel @@ -337,7 +350,8 @@ typedef enum { EN_TANKORDER = 21, //!< Bulk water reaction order for tanks EN_CONCENLIMIT = 22, //!< Limiting concentration for growth reactions EN_DEMANDPATTERN = 23, //!< Name of default demand pattern - EN_EMITBACKFLOW = 24 //!< 1 if emitters can backflow, 0 if not + EN_EMITBACKFLOW = 24, //!< 1 if emitters can backflow, 0 if not + EN_PRESS_UNITS = 25 //!< Pressure units (see @ref EN_PressUnits) } EN_Option; /// Simple control types diff --git a/src/epanet.c b/src/epanet.c index 115e87a..b4027cb 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1208,6 +1208,9 @@ int DLLEXPORT EN_getoption(EN_Project p, int option, double *value) case EN_EMITBACKFLOW: v = hyd->EmitBackFlag; break; + case EN_PRESS_UNITS: + v = (double)p->parser.Pressflag; + break; default: return 251; } @@ -1231,7 +1234,7 @@ int DLLEXPORT EN_setoption(EN_Project p, int option, double value) int Njuncs = net->Njuncs; double *Ucf = p->Ucf; - int i, j, pat; + int i, j, pat, unit; double Ke, n, ucf; if (!p->Openflag) return 102; @@ -1375,6 +1378,14 @@ int DLLEXPORT EN_setoption(EN_Project p, int option, double value) else return 213; break; + case EN_PRESS_UNITS: + unit = ROUND(value); + if (unit < 0 || unit > METERS) return 205; + if (p->parser.Unitsflag == US && unit > PSI) return 0; + p->parser.Pressflag = unit; + initunits(p); + break; + default: return 251; } diff --git a/tests/test_analysis.cpp b/tests/test_analysis.cpp index b3c9a93..e366cd7 100644 --- a/tests/test_analysis.cpp +++ b/tests/test_analysis.cpp @@ -23,11 +23,11 @@ BOOST_FIXTURE_TEST_CASE(test_anlys_getoption, FixtureOpenClose) { int i; - std::vector test(23); + std::vector test(26); double *array = test.data(); std::vector ref = {40.0, 0.001, 0.01, 0.5, 1.0, 0.0, 0.0, 0.0, 75.0, 0.0, 0.0, 0.0, - 1.0, 1.0, 10.0, 2.0, 10.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0}; + 1.0, 1.0, 10.0, 2.0, 10.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0}; error = EN_solveH(ph); BOOST_REQUIRE(error == 0); @@ -36,7 +36,7 @@ BOOST_FIXTURE_TEST_CASE(test_anlys_getoption, FixtureOpenClose) BOOST_REQUIRE(error == 0); - for (i=EN_TRIALS; i<=EN_CONCENLIMIT; i++) { + for (i=EN_TRIALS; i<=EN_PRESS_UNITS; i++) { error = EN_getoption(ph, i, array++); BOOST_REQUIRE(error == 0); } @@ -44,7 +44,7 @@ BOOST_FIXTURE_TEST_CASE(test_anlys_getoption, FixtureOpenClose) BOOST_CHECK_EQUAL_COLLECTIONS(ref.begin(), ref.end(), test.begin(), test.end()); double temp; - error = EN_getoption(ph, 25, &temp); + error = EN_getoption(ph, 26, &temp); BOOST_CHECK(error == 251); } diff --git a/tests/test_project.cpp b/tests/test_project.cpp index 627afbd..c1635cd 100644 --- a/tests/test_project.cpp +++ b/tests/test_project.cpp @@ -116,8 +116,79 @@ BOOST_AUTO_TEST_CASE(test_run) EN_deleteproject(ph); } -BOOST_AUTO_TEST_SUITE_END() +BOOST_FIXTURE_TEST_CASE(test_pressure_units, FixtureInitClose) +{ + int index; + long t; + double p, units; + // Create basic network + error = EN_addnode(ph, "R1", EN_RESERVOIR, &index); + BOOST_REQUIRE(error == 0); + error = EN_setnodevalue(ph, index, EN_ELEVATION, 100); + BOOST_REQUIRE(error == 0); + error = EN_addnode(ph, "J1", EN_JUNCTION, &index); + BOOST_REQUIRE(error == 0); + error = EN_addlink(ph, "P1", EN_PIPE, "R1", "J1", &index); + BOOST_REQUIRE(error == 0); + + // Run simulation and get junction pressure + error = EN_openH(ph); + BOOST_REQUIRE(error == 0); + error = EN_initH(ph, EN_NOSAVE); + BOOST_REQUIRE(error == 0); + error = EN_runH(ph, &t); + BOOST_REQUIRE(error == 0); + error = EN_getnodevalue(ph, 1, EN_PRESSURE, &p); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(p - 43.33) < 1.e-5); + + // Get pressure unit and check that it is PSI + error = EN_getoption(ph, EN_PRESS_UNITS, &units); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(units == EN_PSI); + + // Check that pressure unit is PSI + error = EN_setoption(ph, EN_PRESS_UNITS, EN_METERS); + BOOST_REQUIRE(error == 0); + + // Change to meters and confirm that units are still PSI + error = EN_getoption(ph, EN_PRESS_UNITS, &units); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(units == EN_PSI); + + // Change flow units to LPS to change to metric units and rerun simulation + error = EN_setflowunits(ph, EN_LPS); + BOOST_REQUIRE(error == 0); + error = EN_initH(ph, EN_NOSAVE); + BOOST_REQUIRE(error == 0); + error = EN_runH(ph, &t); + BOOST_REQUIRE(error == 0); + + // Confirm that pressure is now in meters + error = EN_getnodevalue(ph, 1, EN_PRESSURE, &p); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(p - 30.48) < 1.e-5); + error = EN_getoption(ph, EN_PRESS_UNITS, &units); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(units == EN_METERS); + + // Set and check that pressure units are in kPa + error = EN_setoption(ph, EN_PRESS_UNITS, EN_KPA); + BOOST_REQUIRE(error == 0); + error = EN_getoption(ph, EN_PRESS_UNITS, &units); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(units == EN_KPA); + error = EN_getnodevalue(ph, 1, EN_PRESSURE, &p); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(p - 298.76035) < 1.e-5); + + error = EN_closeH(ph); + BOOST_REQUIRE(error == 0); + +} + +BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE(test_proj_fixture) From 6bc1efaf1c97314b42bd6fc3d1475db00ee9d288 Mon Sep 17 00:00:00 2001 From: Luke Butler Date: Thu, 16 Mar 2023 16:21:55 -0400 Subject: [PATCH 110/233] Check pressure units in metric are not set to PSI --- src/epanet.c | 1 + tests/test_project.cpp | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/src/epanet.c b/src/epanet.c index b4027cb..7e7b994 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1382,6 +1382,7 @@ int DLLEXPORT EN_setoption(EN_Project p, int option, double value) unit = ROUND(value); if (unit < 0 || unit > METERS) return 205; if (p->parser.Unitsflag == US && unit > PSI) return 0; + if (p->parser.Unitsflag == SI && unit == PSI) return 0; p->parser.Pressflag = unit; initunits(p); break; diff --git a/tests/test_project.cpp b/tests/test_project.cpp index c1635cd..6b102d3 100644 --- a/tests/test_project.cpp +++ b/tests/test_project.cpp @@ -183,6 +183,13 @@ BOOST_FIXTURE_TEST_CASE(test_pressure_units, FixtureInitClose) BOOST_REQUIRE(error == 0); BOOST_CHECK(abs(p - 298.76035) < 1.e-5); + // Set pressure to PSI and check that it remains in kPa + error = EN_setoption(ph, EN_PRESS_UNITS, EN_PSI); + BOOST_REQUIRE(error == 0); + error = EN_getoption(ph, EN_PRESS_UNITS, &units); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(units == EN_KPA); + error = EN_closeH(ph); BOOST_REQUIRE(error == 0); From 56c569b56f48a2d87959a37ad32533b985f5719e Mon Sep 17 00:00:00 2001 From: Luke Butler Date: Thu, 16 Mar 2023 19:53:25 -0400 Subject: [PATCH 111/233] Update epanet2_enums.h Fixed option and spacing --- include/epanet2_enums.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index 4263eb6..79039ef 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -296,11 +296,11 @@ typedef enum { The available choices for pressure units for the \b EN_PRESS_UNITS option in @ref EN_getoption and @ref EN_setoption. For networks using US Customary units for flow ( \b EN_CFS through \b EN_AFD ) pressure units can only be set as PSI. For network using metric units, you can -select either \b EN_MTR or \b EN_KPA. +select either \b EN_METERS or \b EN_KPA. */ typedef enum { - EN_PSI = 0, //!< Pounds per square inch - EN_KPA = 1, //!< Kilopascals + EN_PSI = 0, //!< Pounds per square inch + EN_KPA = 1, //!< Kilopascals EN_METERS = 2 //!< Meters } EN_PressUnits; From 9c79a65171327562c56f754b06e3bbe27e30a132 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 29 Mar 2023 10:35:14 -0400 Subject: [PATCH 112/233] Use barrier functions for PDA & emitters Uses continuous barrier functions to constrain PDA demands and emitter flows to allowable values (see J. Hydroinformatics, 24:697, 2022). --- src/hydcoeffs.c | 74 ++++++++++++++++++++++++++++++------------------- 1 file changed, 45 insertions(+), 29 deletions(-) diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index 55286fe..c82e70e 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/05/2023 + Last Updated: 03/29/2023 ****************************************************************************** */ @@ -66,6 +66,41 @@ static void psvcoeff(Project *pr, int k, int n1, int n2); static void fcvcoeff(Project *pr, int k, int n1, int n2); +void addlowerbarrier(double dq, double* hloss, double* hgrad) +/* +**-------------------------------------------------------------------- +** Input: dq = difference between current flow and lower flow limit +** Output: hloss = updated head loss value +** hgrad = updated head loss gradient value +** Purpose: adds a head loss barrier to prevent flow from falling +** below a given lower limit. +**-------------------------------------------------------------------- +*/ +{ + double a = 1.e9 * dq; + double b = sqrt(a*a + 1.e-6); + *hloss += (a - b) / 2.; + *hgrad += (1.e9 / 2.) * ( 1.0 - a / b); +} + +void addupperbarrier(double dq, double* hloss, double* hgrad) +/* +**-------------------------------------------------------------------- +** Input: dq = difference between current flow and upper flow limit +** Output: hloss = updated head loss value +** hgrad = updated head loss gradient value +** Purpose: adds a head loss barrier to prevent flow from exceeding +** a given upper limit. +**-------------------------------------------------------------------- +*/ +{ + double a = 1.e9 * dq; + double b = sqrt(a*a + 1.e-6); + *hloss += (a + b) / 2.; + *hgrad += (1.e9 / 2.) * ( 1.0 + a / b); +} + + void resistcoeff(Project *pr, int k) /* **-------------------------------------------------------------------- @@ -497,10 +532,9 @@ void emitterheadloss(Project *pr, int i, double *hloss, double *hgrad) else *hloss = (*hgrad) * q / hyd->Qexp; // Prevent negative flow if backflow not allowed - if (hyd->EmitBackFlag == 0 && q <= 0.0) + if (hyd->EmitBackFlag == 0) { - *hgrad += CBIG; - *hloss += CBIG * q; + addlowerbarrier(q, hloss, hgrad); } } @@ -574,32 +608,14 @@ void demandheadloss(Project *pr, int i, double dp, double n, double dfull = hyd->NodeDemand[i]; double r = d / dfull; - // Use lower barrier function for negative demand - if (r <= 0) - { - *hgrad = CBIG; - *hloss = CBIG * d; - } - - // Use power head loss function for demand less than full - else if (r <= 1.0) - { - *hgrad = n * dp * pow(r, n - 1.0) / dfull; - // ... use linear function for very small gradient - if (*hgrad < hyd->RQtol) - { - *hgrad = hyd->RQtol / n; - *hloss = (*hgrad) * d; - } - else *hloss = (*hgrad) * d / n; - } + // Evaluate inverted demand function + r = fabs(d) / dfull; + *hgrad = n * dp * pow(r, n - 1.0) / dfull; + *hloss = (*hgrad) * d / n; - // Use upper barrier function for demand above full value - else - { - *hgrad = CBIG; - *hloss = dp + CBIG * (d - dfull); - } + // Add barrier functions + addlowerbarrier(d, hloss, hgrad); + addupperbarrier(d-dfull, hloss, hgrad); } From 9cde32080a1730cb8830ec4c87ff785e75dcce7f Mon Sep 17 00:00:00 2001 From: Luke Butler Date: Thu, 30 Mar 2023 16:22:58 -0400 Subject: [PATCH 113/233] added function updateruleunits --- src/epanet.c | 27 ++++- src/funcs.h | 1 + src/rules.c | 120 ++++++++++++++++++ tests/CMakeLists.txt | 1 + tests/test_project.cpp | 79 ------------ tests/test_units.cpp | 267 +++++++++++++++++++++++++++++++++++++++++ 6 files changed, 415 insertions(+), 80 deletions(-) create mode 100644 tests/test_units.cpp diff --git a/src/epanet.c b/src/epanet.c index 7e7b994..db47e2f 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1237,6 +1237,9 @@ int DLLEXPORT EN_setoption(EN_Project p, int option, double value) int i, j, pat, unit; double Ke, n, ucf; + double qfactor, hfactor, pfactor, dfactor; + double dcf, pcf, hcf, qcf; + if (!p->Openflag) return 102; // The EN_UNBALANCED option can be < 0 indicating that the simulation @@ -1384,7 +1387,19 @@ int DLLEXPORT EN_setoption(EN_Project p, int option, double value) if (p->parser.Unitsflag == US && unit > PSI) return 0; if (p->parser.Unitsflag == SI && unit == PSI) return 0; p->parser.Pressflag = unit; + + dfactor = Ucf[DEMAND]; + pfactor = Ucf[PRESSURE]; + hfactor = Ucf[HEAD]; + qfactor = Ucf[FLOW]; initunits(p); + + // Update units in rules + dcf = Ucf[DEMAND] / dfactor; + pcf = Ucf[PRESSURE] / pfactor; + hcf = Ucf[HEAD] / hfactor; + qcf = Ucf[FLOW] / qfactor; + updateruleunits(p, dcf, pcf, hcf, qcf); break; default: @@ -1420,7 +1435,8 @@ int DLLEXPORT EN_setflowunits(EN_Project p, int units) Network *net = &p->network; int i, j; - double qfactor, vfactor, hfactor, efactor, xfactor, yfactor; + double qfactor, vfactor, hfactor, efactor, pfactor, dfactor, xfactor, yfactor; + double dcf, pcf, hcf, qcf; double *Ucf = p->Ucf; if (!p->Openflag) return 102; @@ -1430,6 +1446,8 @@ int DLLEXPORT EN_setflowunits(EN_Project p, int units) vfactor = Ucf[VOLUME]; hfactor = Ucf[HEAD]; efactor = Ucf[ELEV]; + pfactor = Ucf[PRESSURE]; + dfactor = Ucf[DEMAND]; p->parser.Flowflag = units; switch (units) @@ -1452,6 +1470,13 @@ int DLLEXPORT EN_setflowunits(EN_Project p, int units) else if (p->parser.Pressflag == PSI) p->parser.Pressflag = METERS; initunits(p); + // Update pressure units in rules + dcf = Ucf[DEMAND] / dfactor; + pcf = Ucf[PRESSURE] / pfactor; + hcf = Ucf[HEAD] / hfactor; + qcf = Ucf[FLOW] / qfactor; + updateruleunits(p, dcf, pcf, hcf, qcf); + //update curves for (i = 1; i <= net->Ncurves; i++) { diff --git a/src/funcs.h b/src/funcs.h index 2391477..3fe38fe 100755 --- a/src/funcs.h +++ b/src/funcs.h @@ -124,6 +124,7 @@ Spremise *getpremise(Spremise *, int); Saction *getaction(Saction *, int); int writerule(Project *, FILE *, int); int checkrules(Project *, long); +void updateruleunits(Project *pr, double dcf, double pcf, double hcf, double qcf); // ------- REPORT.C ----------------- diff --git a/src/rules.c b/src/rules.c index 68b8de6..4eaf3f5 100644 --- a/src/rules.c +++ b/src/rules.c @@ -549,6 +549,126 @@ int checkrules(Project *pr, long dt) return actionCount; } +void updateruleunits(Project *pr, double dcf, double pcf, double hcf, double qcf) +//----------------------------------------------------------- +// Updates the units of a rule's premises and actions. +//----------------------------------------------------------- +{ + Network *net = &pr->network; + Slink *Link = net->Link; + + int i, k; + double x; + Spremise *p; + Saction *a; + + for (i = 1; i <= net->Nrules; i++) + { + p = net->Rule[i].Premises; + while (p != NULL) + { + + switch (p->variable) + { + case r_DEMAND: + p->value *= dcf; + break; + + case r_HEAD: + case r_GRADE: + p->value *= hcf; + break; + + case r_PRESSURE: + p->value *= pcf; + break; + + case r_LEVEL: + p->value *= hcf; + break; + + case r_FLOW: + p->value *= qcf; + break; + + case r_SETTING: + + switch (Link[p->index].Type) + { + case PRV: + case PSV: + case PBV: + p->value *= pcf; + break; + case FCV: + p->value *= qcf; + break; + default: + break; + } + break; + + default: + break; + + } + p = p->next; + } + + a = net->Rule[i].ThenActions; + while (a != NULL) + { + k = a->link; + x = a->setting; + + // Change link's setting + if (x != MISSING) + { + switch (net->Link[k].Type) + { + case PRV: + case PSV: + case PBV: + a->setting *= pcf; + break; + case FCV: + a->setting *= qcf; + break; + default: + break; + } + } + a = a->next; + } + a = net->Rule[i].ElseActions; + while (a != NULL) + { + k = a->link; + x = a->setting; + + // Change link's setting + if (x != MISSING) + { + switch (net->Link[k].Type) + { + case PRV: + case PSV: + case PBV: + a->setting *= pcf; + break; + case FCV: + a->setting *= qcf; + break; + default: + break; + } + } + a = a->next; + } + } +} + + void newrule(Project *pr) //---------------------------------------------------------- // Adds a new rule to the project diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 946e9f6..d90167f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -40,6 +40,7 @@ set(toolkit_test_srcs test_overflow.cpp test_pda.cpp test_valve.cpp + test_units.cpp ) add_executable(test_toolkit ${toolkit_test_srcs}) diff --git a/tests/test_project.cpp b/tests/test_project.cpp index 6b102d3..903cd0a 100644 --- a/tests/test_project.cpp +++ b/tests/test_project.cpp @@ -116,85 +116,6 @@ BOOST_AUTO_TEST_CASE(test_run) EN_deleteproject(ph); } -BOOST_FIXTURE_TEST_CASE(test_pressure_units, FixtureInitClose) -{ - int index; - long t; - double p, units; - - // Create basic network - error = EN_addnode(ph, "R1", EN_RESERVOIR, &index); - BOOST_REQUIRE(error == 0); - error = EN_setnodevalue(ph, index, EN_ELEVATION, 100); - BOOST_REQUIRE(error == 0); - error = EN_addnode(ph, "J1", EN_JUNCTION, &index); - BOOST_REQUIRE(error == 0); - error = EN_addlink(ph, "P1", EN_PIPE, "R1", "J1", &index); - BOOST_REQUIRE(error == 0); - - // Run simulation and get junction pressure - error = EN_openH(ph); - BOOST_REQUIRE(error == 0); - error = EN_initH(ph, EN_NOSAVE); - BOOST_REQUIRE(error == 0); - error = EN_runH(ph, &t); - BOOST_REQUIRE(error == 0); - error = EN_getnodevalue(ph, 1, EN_PRESSURE, &p); - BOOST_REQUIRE(error == 0); - BOOST_CHECK(abs(p - 43.33) < 1.e-5); - - // Get pressure unit and check that it is PSI - error = EN_getoption(ph, EN_PRESS_UNITS, &units); - BOOST_REQUIRE(error == 0); - BOOST_CHECK(units == EN_PSI); - - // Check that pressure unit is PSI - error = EN_setoption(ph, EN_PRESS_UNITS, EN_METERS); - BOOST_REQUIRE(error == 0); - - // Change to meters and confirm that units are still PSI - error = EN_getoption(ph, EN_PRESS_UNITS, &units); - BOOST_REQUIRE(error == 0); - BOOST_CHECK(units == EN_PSI); - - // Change flow units to LPS to change to metric units and rerun simulation - error = EN_setflowunits(ph, EN_LPS); - BOOST_REQUIRE(error == 0); - error = EN_initH(ph, EN_NOSAVE); - BOOST_REQUIRE(error == 0); - error = EN_runH(ph, &t); - BOOST_REQUIRE(error == 0); - - // Confirm that pressure is now in meters - error = EN_getnodevalue(ph, 1, EN_PRESSURE, &p); - BOOST_REQUIRE(error == 0); - BOOST_CHECK(abs(p - 30.48) < 1.e-5); - error = EN_getoption(ph, EN_PRESS_UNITS, &units); - BOOST_REQUIRE(error == 0); - BOOST_CHECK(units == EN_METERS); - - // Set and check that pressure units are in kPa - error = EN_setoption(ph, EN_PRESS_UNITS, EN_KPA); - BOOST_REQUIRE(error == 0); - error = EN_getoption(ph, EN_PRESS_UNITS, &units); - BOOST_REQUIRE(error == 0); - BOOST_CHECK(units == EN_KPA); - error = EN_getnodevalue(ph, 1, EN_PRESSURE, &p); - BOOST_REQUIRE(error == 0); - BOOST_CHECK(abs(p - 298.76035) < 1.e-5); - - // Set pressure to PSI and check that it remains in kPa - error = EN_setoption(ph, EN_PRESS_UNITS, EN_PSI); - BOOST_REQUIRE(error == 0); - error = EN_getoption(ph, EN_PRESS_UNITS, &units); - BOOST_REQUIRE(error == 0); - BOOST_CHECK(units == EN_KPA); - - error = EN_closeH(ph); - BOOST_REQUIRE(error == 0); - -} - BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE(test_proj_fixture) diff --git a/tests/test_units.cpp b/tests/test_units.cpp new file mode 100644 index 0000000..ffdfc26 --- /dev/null +++ b/tests/test_units.cpp @@ -0,0 +1,267 @@ +/* + ****************************************************************************** + Project: OWA EPANET + Version: 2.2 + Module: test_units.cpp + Description: Tests EPANET toolkit api functions + Authors: see AUTHORS + Copyright: see AUTHORS + License: see LICENSE + Last Updated: 03/30/2023 + ****************************************************************************** +*/ + +/* +This is a test for the API functions that change the units of a project. +*/ + +#include + +#include "test_toolkit.hpp" + +/* +---------------------------------------------- + Flow units conversion factors +---------------------------------------------- +*/ +double GPMperCFS = 448.831; +double LPSperCFS = 28.317; +double MperFT = 0.3048; +double PSIperFT = 0.4333; +double KPAperPSI = 6.895; + +char unitrules[] = "RULE 1\n IF NODE 10 DEMAND > 10 \n" + "AND NODE 10 HEAD > 20 \n" + "AND NODE 10 PRESSURE > 30 \n" + "AND NODE 10 LEVEL > 40 \n" + "AND LINK 10 FLOW > 50 \n" + "AND LINK PRV1 SETTING > 60 \n" + "AND LINK FCV1 SETTING > 70 \n" + "THEN LINK PRV1 SETTING = 80\n ELSE LINK FCV1 SETTING = 90"; + + +BOOST_AUTO_TEST_SUITE (test_units) + +BOOST_FIXTURE_TEST_CASE(test_pressure_units, FixtureInitClose) +{ + int index; + long t; + double p, units; + + // Create basic network + error = EN_addnode(ph, "R1", EN_RESERVOIR, &index); + BOOST_REQUIRE(error == 0); + error = EN_setnodevalue(ph, index, EN_ELEVATION, 100); + BOOST_REQUIRE(error == 0); + error = EN_addnode(ph, "J1", EN_JUNCTION, &index); + BOOST_REQUIRE(error == 0); + error = EN_addlink(ph, "P1", EN_PIPE, "R1", "J1", &index); + BOOST_REQUIRE(error == 0); + + // Run simulation and get junction pressure + error = EN_openH(ph); + BOOST_REQUIRE(error == 0); + error = EN_initH(ph, EN_NOSAVE); + BOOST_REQUIRE(error == 0); + error = EN_runH(ph, &t); + BOOST_REQUIRE(error == 0); + error = EN_getnodevalue(ph, 1, EN_PRESSURE, &p); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(p - 43.33) < 1.e-5); + + // Get pressure unit and check that it is PSI + error = EN_getoption(ph, EN_PRESS_UNITS, &units); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(units == EN_PSI); + + // Change to pressure from PSI to meters and check it's still PSI + error = EN_setoption(ph, EN_PRESS_UNITS, EN_METERS); + BOOST_REQUIRE(error == 0); + + error = EN_getoption(ph, EN_PRESS_UNITS, &units); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(units == EN_PSI); + + // Change flow units to LPS to change to metric units and rerun simulation + error = EN_setflowunits(ph, EN_LPS); + BOOST_REQUIRE(error == 0); + error = EN_initH(ph, EN_NOSAVE); + BOOST_REQUIRE(error == 0); + error = EN_runH(ph, &t); + BOOST_REQUIRE(error == 0); + + // Confirm that pressure is now in meters + error = EN_getnodevalue(ph, 1, EN_PRESSURE, &p); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(p - 30.48) < 1.e-5); + error = EN_getoption(ph, EN_PRESS_UNITS, &units); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(units == EN_METERS); + + // Set and check that pressure units are in kPa + error = EN_setoption(ph, EN_PRESS_UNITS, EN_KPA); + BOOST_REQUIRE(error == 0); + error = EN_getoption(ph, EN_PRESS_UNITS, &units); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(units == EN_KPA); + error = EN_getnodevalue(ph, 1, EN_PRESSURE, &p); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(p - 298.76035) < 1.e-5); + + // Set pressure to PSI and check that it remains in kPa + error = EN_setoption(ph, EN_PRESS_UNITS, EN_PSI); + BOOST_REQUIRE(error == 0); + error = EN_getoption(ph, EN_PRESS_UNITS, &units); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(units == EN_KPA); + + error = EN_closeH(ph); + BOOST_REQUIRE(error == 0); + +} + +BOOST_FIXTURE_TEST_CASE(test_pda_unit_change, FixtureOpenClose) +{ + int type; + double pmin, preq, pexp; + + // Switch to PDA with pressure limits of 20 - 100 psi + error = EN_setdemandmodel(ph, EN_PDA, 20, 100, 0.5); + BOOST_REQUIRE(error == 0); + + error = EN_setflowunits(ph, EN_LPS); + BOOST_REQUIRE(error == 0); + + error = EN_getdemandmodel(ph, &type, &pmin, &preq, &pexp); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(pmin - (20/PSIperFT*MperFT)) < 1.e-5); + BOOST_CHECK(abs(preq - (100/PSIperFT*MperFT)) < 1.e-5); + +} + +BOOST_FIXTURE_TEST_CASE(test_rule_unit_change, FixtureOpenClose) +{ + int index, node22, link12; + double units; + + // Rule variables + int r_logop, r_object, r_objIndex, r_variable, r_relop, r_status; + double r_value; + + // Control variables + int c_index, c_type, c_linkIndex, c_nodeIndex; + double c_setting, c_level; + + // Add new PRV and FCV to test rules + error = EN_addlink(ph, (char *)"PRV1", EN_PRV, (char *)"10", (char *)"11", &index); + BOOST_REQUIRE(error == 0); + error = EN_addlink(ph, (char *)"FCV1", EN_FCV, (char *)"12", (char *)"13", &index); + BOOST_REQUIRE(error == 0); + + // Add the rule to the project + error = EN_addrule(ph, unitrules); + BOOST_REQUIRE(error == 0); + + // Add control that checks junction pressure + EN_getnodeindex(ph, (char *)"22", &node22); + EN_getlinkindex(ph, (char *)"12", &link12); + error = EN_addcontrol(ph, EN_HILEVEL, link12, 0, node22, 250, &c_index); + BOOST_REQUIRE(error == 0); + + // Check that rules and controls are in US units + error = EN_getpremise(ph, 1, 3, &r_logop, &r_object, &r_objIndex, &r_variable, &r_relop, &r_status, &r_value); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(r_value == 30); + + error = EN_getcontrol(ph, c_index, &c_type, &c_linkIndex, &c_setting, &c_nodeIndex, &c_level); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(c_level == 250); + + // Change flow units to lps and pressure to meters + error = EN_setflowunits(ph, EN_LPS); + BOOST_REQUIRE(error == 0); + + error = EN_getoption(ph, EN_PRESS_UNITS, &units); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(units == EN_METERS); + + // Check that rules and controls are in meters + + // Simple Control - 250 psi to meters + error = EN_getcontrol(ph, c_index, &c_type, &c_linkIndex, &c_setting, &c_nodeIndex, &c_level); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(c_level - (250/PSIperFT*MperFT)) < 1.e-5); // 250 PSI to M + + // Premise 1 - Demand GPM to LPS + error = EN_getpremise(ph, 1, 1, &r_logop, &r_object, &r_objIndex, &r_variable, &r_relop, &r_status, &r_value); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(r_value - (10/GPMperCFS*LPSperCFS)) < 1.e-5); //10 GPM to LPS + + // Premise 2 - Head FT to Meters + error = EN_getpremise(ph, 1, 2, &r_logop, &r_object, &r_objIndex, &r_variable, &r_relop, &r_status, &r_value); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(r_value - (20*MperFT)) < 1.e-5); //20 FT to M + + // Premise 3 - Pressure PSI to Meters + error = EN_getpremise(ph, 1, 3, &r_logop, &r_object, &r_objIndex, &r_variable, &r_relop, &r_status, &r_value); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(r_value - (30/PSIperFT*MperFT)) < 1.e-5); //30 PSI to M + + // Premise 4 - Level FT to Meters + error = EN_getpremise(ph, 1, 4, &r_logop, &r_object, &r_objIndex, &r_variable, &r_relop, &r_status, &r_value); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(r_value - (40*MperFT)) < 1.e-5); //40 FT to M + + // Premise 5 - Flow GPM to LPS + error = EN_getpremise(ph, 1, 5, &r_logop, &r_object, &r_objIndex, &r_variable, &r_relop, &r_status, &r_value); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(r_value - (50/GPMperCFS*LPSperCFS)) < 1.e-5); //50 GPM to LPS + + // Premise 6 - Setting PSI to Meters + error = EN_getpremise(ph, 1, 6, &r_logop, &r_object, &r_objIndex, &r_variable, &r_relop, &r_status, &r_value); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(r_value - (60/PSIperFT*MperFT)) < 1.e-5); //60 PSI to M + + // Premise 7 - Setting GPM to LPS + error = EN_getpremise(ph, 1, 7, &r_logop, &r_object, &r_objIndex, &r_variable, &r_relop, &r_status, &r_value); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(r_value - (70/GPMperCFS*LPSperCFS)) < 1.e-5); //70 GPM to LPS + + // ThenAction - Setting PSI to Meters + error = EN_getthenaction(ph, 1, 1, &r_objIndex, &r_status, &r_value); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(r_value - (80/PSIperFT*MperFT)) < 1.e-5); //80 PSI to M + + // ElseAction - Setting GPM to LPS + error = EN_getelseaction(ph, 1, 1, &r_objIndex, &r_status, &r_value); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(r_value - (90/GPMperCFS*LPSperCFS)) < 1.e-5); //90 GPM to LPS + + // Change pressure units to kPa + error = EN_setoption(ph, EN_PRESS_UNITS, EN_KPA); + BOOST_REQUIRE(error == 0); + + // Simple Control - 250 psi to kPa + error = EN_getcontrol(ph, c_index, &c_type, &c_linkIndex, &c_setting, &c_nodeIndex, &c_level); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(c_level - (250*KPAperPSI)) < 1.e-5); //250 PSI to kPa + + // Premise 3 - Pressure PSI to kPa + error = EN_getpremise(ph, 1, 3, &r_logop, &r_object, &r_objIndex, &r_variable, &r_relop, &r_status, &r_value); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(r_value - (30*KPAperPSI)) < 1.e-5); //30 PSI to kPa + + // Premise 6 - Setting PSI to kPa + error = EN_getpremise(ph, 1, 6, &r_logop, &r_object, &r_objIndex, &r_variable, &r_relop, &r_status, &r_value); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(r_value - (60*KPAperPSI)) < 1.e-5); //60 PSI to kPa + + // ThenAction - Setting PSI to kPa + error = EN_getthenaction(ph, 1, 1, &r_objIndex, &r_status, &r_value); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(abs(r_value - (80*KPAperPSI)) < 1.e-5); //80 PSI to kPa + + +} + +BOOST_AUTO_TEST_SUITE_END() From 7ae9c28e1a28dbb3332fcfc6d412cb4bcee3ec94 Mon Sep 17 00:00:00 2001 From: james uber Date: Sat, 15 Apr 2023 12:57:01 -0400 Subject: [PATCH 114/233] setlinkvalue missing a break statement --- src/epanet.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/epanet.c b/src/epanet.c index db47e2f..ab1b775 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -4134,6 +4134,7 @@ int DLLEXPORT EN_setlinkvalue(EN_Project p, int index, int property, double valu if (curveIndex < 0 || curveIndex > net->Ncurves) return 206; Link[index].Kc = curveIndex; } + break; default: return 251; From f709c199bca3df710fc6cbb84d69197ecf672a52 Mon Sep 17 00:00:00 2001 From: james uber Date: Sat, 22 Apr 2023 17:40:25 -0400 Subject: [PATCH 115/233] correct error in adjustpumpparams() where a curveindex was being used instead of the pump index --- src/project.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/project.c b/src/project.c index d5eee6c..a9a9df0 100644 --- a/src/project.c +++ b/src/project.c @@ -1074,7 +1074,7 @@ int adjustpumpparams(Project *pr, int curveIndex) { // Update its head curve parameters pump->Ptype = NOCURVE; - err = updatepumpparams(pr, curveIndex); + err = updatepumpparams(pr, j); if (err > 0) break; // Convert parameters to internal units From a9079b023b9f256055195363a8d9bbcb3bfff964 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sat, 13 May 2023 12:29:35 -0400 Subject: [PATCH 116/233] Allow simple controls to set valves OPEN/CLOSED --- include/epanet.cs | 4 +- include/epanet2.bas | 4 +- include/epanet2.pas | 4 +- include/epanet2.vb | 4 +- include/epanet2_enums.h | 6 +- src/epanet.c | 148 ++++++---------------------------------- src/funcs.h | 3 +- src/inpfile.c | 9 ++- src/project.c | 107 ++++++++++++++++++++++++++++- src/types.h | 5 +- 10 files changed, 155 insertions(+), 139 deletions(-) diff --git a/include/epanet.cs b/include/epanet.cs index c9cb2d4..b0b27f9 100644 --- a/include/epanet.cs +++ b/include/epanet.cs @@ -3,7 +3,7 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; //epanet2.cs[By Oscar Vegas] -//Last updated on 17/09/2020 +//Last updated on 05/13/2023 //Declarations of functions in the EPANET PROGRAMMERs TOOLKIT //(EPANET2.DLL) for use with C# @@ -264,6 +264,8 @@ namespace EpanetCSharpLibrary public const int EN_R_IS_ACTIVE = 3; public const double EN_MISSING = -1.0E10; + public const double EN_SET_CLOSED = -1.0E10 + public const double EN_SET_OPEN = 1.0E10 #region Epanet Imports diff --git a/include/epanet2.bas b/include/epanet2.bas index 63e5db3..e95cbd0 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -5,7 +5,7 @@ Attribute VB_Name = "Module1" 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) -'Last updated on 07/28/2022 +'Last updated on 05/13/2023 ' These are codes used by the DLL functions Public Const EN_ELEVATION = 0 ' Node parameters @@ -268,6 +268,8 @@ Public Const EN_STEP_TANKEVENT = 3 Public Const EN_STEP_CONTROLEVENT = 4 Public Const EN_MISSING As Double = -1.0E10 +Public Const EN_SET_CLOSED As Double = -1.0E10 +Public Const EN_SET_OPEN As Double = 1.0E10 'These are the external functions that comprise the DLL diff --git a/include/epanet2.pas b/include/epanet2.pas index af600b8..8edc917 100644 --- a/include/epanet2.pas +++ b/include/epanet2.pas @@ -3,7 +3,7 @@ unit epanet2; { Declarations of imported procedures from the EPANET PROGRAMMERs TOOLKIT } { (EPANET2.DLL) } -{Last updated on 07/28/2022} +{Last updated on 05/13/2023} interface @@ -13,6 +13,8 @@ const EN_MAXID = 31; { Max. # characters in ID name } EN_MAXMSG = 255; { Max. # characters in strings } EN_MISSING = -1.E10; + EN_SET_CLOSED = -1.E10; + EN_SET_OPEN = 1.E10; EN_ELEVATION = 0; { Node parameters } EN_BASEDEMAND = 1; diff --git a/include/epanet2.vb b/include/epanet2.vb index daf5703..c7dd94e 100644 --- a/include/epanet2.vb +++ b/include/epanet2.vb @@ -4,7 +4,7 @@ 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) for use with VB.Net. -'Last updated on 07/28/2022 +'Last updated on 05/13/2023 Imports System.Runtime.InteropServices Imports System.Text @@ -256,6 +256,8 @@ Public Const EN_R_IS_CLOSED = 2 Public Const EN_R_IS_ACTIVE = 3 Public Const EN_MISSING As Double = -1.0E10 +Public Const EN_SET_CLOSED As Double = -1.0E10 +Public Const EN_SET_OPEN As Double = 1.0E10 'These are the external functions that comprise the DLL diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index 79039ef..0c03bdd 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -9,7 +9,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/05/2023 + Last Updated: 04/28/2023 ****************************************************************************** */ @@ -498,6 +498,8 @@ typedef enum { EN_R_IS_ACTIVE = 3 //!< Control valve is active } EN_RuleStatus; -#define EN_MISSING -1.E10 //!< Missing value indicator +#define EN_MISSING -1.E10 //!< Missing value indicator +#define EN_SET_CLOSED -1.E10 //!< Link set closed indicator +#define EN_SET_OPEN 1.E10 //!< Link set open indicator #endif //EPANET2_ENUMS_H diff --git a/src/epanet.c b/src/epanet.c index db47e2f..3a4fe2f 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/05/2023 + Last Updated: 04/29/2023 ****************************************************************************** */ @@ -5069,84 +5069,30 @@ int DLLEXPORT EN_addcontrol(EN_Project p, int type, int linkIndex, double settin */ { Network *net = &p->network; - Parser *parser = &p->parser; - - char status = ACTIVE; - int n; - long t = 0; - double s = setting, lvl = level; - double *Ucf = p->Ucf; - Scontrol *control; + int err, n; + Scontrol ctrl; // Check that project exists if (!p->Openflag) return 102; // Check that controlled link exists if (linkIndex <= 0 || linkIndex > net->Nlinks) return 204; - - // Cannot control check valve - if (net->Link[linkIndex].Type == CVPIPE) return 207; - - // Check for valid parameters - if (type < 0 || type > EN_TIMEOFDAY) return 251; - if (type == EN_LOWLEVEL || type == EN_HILEVEL) - { - if (nodeIndex < 1 || nodeIndex > net->Nnodes) return 203; - } - else nodeIndex = 0; - if (s < 0.0 || lvl < 0.0) return 202; - - // Adjust units of control parameters - switch (net->Link[linkIndex].Type) - { - case PRV: - case PSV: - case PBV: - s /= Ucf[PRESSURE]; - break; - case FCV: - s /= Ucf[FLOW]; - break; - case GPV: - if (s == 0.0) status = CLOSED; - else if (s == 1.0) status = OPEN; - else return 202; - s = net->Link[linkIndex].Kc; - break; - case PIPE: - case PUMP: - status = OPEN; - if (s == 0.0) status = CLOSED; - default: - break; - } - - if (type == LOWLEVEL || type == HILEVEL) - { - if (nodeIndex > net->Njuncs) lvl = net->Node[nodeIndex].El + level / Ucf[ELEV]; - else lvl = net->Node[nodeIndex].El + level / Ucf[PRESSURE]; - } - if (type == TIMER) t = (long)ROUND(lvl); - if (type == TIMEOFDAY) t = (long)ROUND(lvl) % SECperDAY; + + // Insert control properties into a temporary struct + err = setcontrol(p, type, linkIndex, setting, nodeIndex, level, &ctrl); + if (err > 0) return err; // Expand project's array of controls n = net->Ncontrols + 1; net->Control = (Scontrol *)realloc(net->Control, (n + 1) * sizeof(Scontrol)); // Set properties of the new control - control = &net->Control[n]; - control->Type = (char)type; - control->Link = linkIndex; - control->Node = nodeIndex; - control->Status = status; - control->Setting = s; - control->Grade = lvl; - control->Time = t; + net->Control[n] = ctrl; // Update number of controls net->Ncontrols = n; - parser->MaxControls = n; + p->parser.MaxControls = n; // Replace the control's index *index = n; @@ -5229,8 +5175,8 @@ int DLLEXPORT EN_getcontrol(EN_Project p, int index, int *type, int *linkIndex, break; } } - else if (control->Status == OPEN) s = 1.0; - else s = 0.0; + else if (control->Status == OPEN) s = SET_OPEN; + else s = SET_CLOSED; // Retrieve level value for a node level control *nodeIndex = control->Node; @@ -5252,8 +5198,8 @@ int DLLEXPORT EN_getcontrol(EN_Project p, int index, int *type, int *linkIndex, { lvl = (double)control->Time; } - *setting = (double)s; - *level = (double)lvl; + *setting = s; + *level = lvl; return 0; } @@ -5275,81 +5221,27 @@ int DLLEXPORT EN_setcontrol(EN_Project p, int index, int type, int linkIndex, { Network *net = &p->network; - char status = ACTIVE; - long t = 0; - double s = setting, lvl = level; - double *Ucf = p->Ucf; - Slink *link; - Scontrol *control; + int err; + Scontrol ctrl; // Check that project exists if (!p->Openflag) return 102; // Check that control exists if (index <= 0 || index > net->Ncontrols) return 241; - control = &net->Control[index]; // Check that controlled link exists (0 index de-activates the control) if (linkIndex == 0) { - control->Link = 0; + net->Control[index].Link = 0; return 0; } if (linkIndex < 0 || linkIndex > net->Nlinks) return 204; - // Cannot control check valve - if (net->Link[linkIndex].Type == CVPIPE) return 207; - - // Check for valid control properties - if (type < 0 || type > EN_TIMEOFDAY) return 251; - if (type == EN_LOWLEVEL || type == EN_HILEVEL) - { - if (nodeIndex < 1 || nodeIndex > net->Nnodes) return 203; - } - else nodeIndex = 0; - if (s < 0.0 || lvl < 0.0) return 202; - - // Adjust units of control's properties - link = &net->Link[linkIndex]; - switch (link->Type) - { - case PRV: - case PSV: - case PBV: - s /= Ucf[PRESSURE]; - break; - case FCV: - s /= Ucf[FLOW]; - break; - case GPV: - if (s == 0.0) status = CLOSED; - else if (s == 1.0) status = OPEN; - else return 202; - s = link->Kc; - break; - case PIPE: - case PUMP: - status = OPEN; - if (s == 0.0) status = CLOSED; - default: - break; - } - if (type == LOWLEVEL || type == HILEVEL) - { - if (nodeIndex > net->Njuncs) lvl = net->Node[nodeIndex].El + level / Ucf[ELEV]; - else lvl = net->Node[nodeIndex].El + level / Ucf[PRESSURE]; - } - if (type == TIMER) t = (long)ROUND(lvl); - if (type == TIMEOFDAY) t = (long)ROUND(lvl) % SECperDAY; - - /* Reset control's parameters */ - control->Type = (char)type; - control->Link = linkIndex; - control->Node = nodeIndex; - control->Status = status; - control->Setting = s; - control->Grade = lvl; - control->Time = t; + // Assign new set of properties to control + err = setcontrol(p, type, linkIndex, setting, nodeIndex, level, &ctrl); + if (err > 0) return err; + net->Control[index] = ctrl; return 0; } diff --git a/src/funcs.h b/src/funcs.h index 3fe38fe..a6d5150 100755 --- a/src/funcs.h +++ b/src/funcs.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 08/13/2022 + Last Updated: 04/29/2023 ****************************************************************************** */ #ifndef FUNCS_H @@ -50,6 +50,7 @@ void adjustpatterns(Network *, int); void adjustcurves(Network *, int); int adjustpumpparams(Project *, int); int resizecurve(Scurve *, int); +int setcontrol(Project *, int, int, double, int, double, Scontrol *); int getcomment(Network *, int, int, char *); int setcomment(Network *, int, int, const char *); diff --git a/src/inpfile.c b/src/inpfile.c index 33365ed..e23284d 100644 --- a/src/inpfile.c +++ b/src/inpfile.c @@ -7,7 +7,7 @@ Description: saves network data to an EPANET formatted text file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 02/05/2023 +Last Updated: 04/30/2023 ****************************************************************************** */ @@ -432,7 +432,12 @@ int saveinpfile(Project *pr, const char *fname) link = &net->Link[j]; // Get text of control's link status/setting - if (control->Setting == MISSING || link->Type == GPV) + if (control->Setting == MISSING || link->Type == GPV || link->Type == PIPE) + { + sprintf(s, " LINK %s %s ", link->ID, StatTxt[control->Status]); + } + else if (link->Type == PUMP && + (control->Setting == 0.0 || control->Setting == 1.0)) { sprintf(s, " LINK %s %s ", link->ID, StatTxt[control->Status]); } diff --git a/src/project.c b/src/project.c index d5eee6c..76ca351 100644 --- a/src/project.c +++ b/src/project.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 08/13/2022 + Last Updated: 04/29/2023 ****************************************************************************** */ @@ -1121,6 +1121,111 @@ int resizecurve(Scurve *curve, int size) return 0; } + +int setcontrol(EN_Project p, int type, int linkIndex, double setting, + int nodeIndex, double level, Scontrol *control) +/*---------------------------------------------------------------- +** Input: type = type of control (see EN_ControlType) +** linkIndex = index of link being controlled +** setting = link control setting (e.g., pump speed) +** nodeIndex = index of node controlling a link (for level controls) +** level = control activation level (pressure for junction nodes, +** water level for tank nodes or time value for time-based +** control) +** Output: control = control struct whose properties are being set +** Returns: error code +** Purpose: assigns properties to a control struct. +**---------------------------------------------------------------- +*/ +{ + Network *net = &p->network; + Parser *parser = &p->parser; + + long t = 0; + double lvl = 0.0, s = MISSING; + double *Ucf = p->Ucf; + LinkType linktype; + StatusType status = ACTIVE; + + // Cannot control check valve + linktype = net->Link[linkIndex].Type; + if (linktype == CVPIPE) return 207; + + // Check for valid control type and node index + if (type < 0 || type > TIMEOFDAY) return 251; + if (type == LOWLEVEL || type == HILEVEL) + { + if (nodeIndex < 1 || nodeIndex > net->Nnodes) return 203; + } + else nodeIndex = 0; + + // Check if control setting is a status level + if (setting == SET_OPEN) + { + status = OPEN; + if (linktype == PUMP) s = 1.0; + if (linktype == GPV) s = net->Link[linkIndex].Kc; + } + else if (setting == SET_CLOSED) + { + status = CLOSED; + if (linktype == PUMP) s = 0.0; + if (linktype == GPV) s = net->Link[linkIndex].Kc; + } + + // Convert units of control setting + else + { + s = setting; + switch (linktype) + { + case PIPE: + case PUMP: + if (s < 0.0) return 202; + else if (s == 0.0) status = CLOSED; + else status = OPEN; + break; + case PRV: + case PSV: + case PBV: + s /= Ucf[PRESSURE]; + break; + case FCV: + s /= Ucf[FLOW]; + break; + case GPV: + if (s == 0.0) status = CLOSED; + else if (s == 1.0) status = OPEN; + else return 202; + s = net->Link[linkIndex].Kc; + break; + } + } + + // Determine if control level is a pressure, tank level or time value + if (type == LOWLEVEL || type == HILEVEL) + { + if (nodeIndex > net->Njuncs) lvl = net->Node[nodeIndex].El + level / Ucf[ELEV]; + else lvl = net->Node[nodeIndex].El + level / Ucf[PRESSURE]; + } + else if (type == TIMER || type == TIMEOFDAY) + { + t = (long)level; + if (t < 0) return 202; + } + + // Assign values to control struct + control->Link = linkIndex; + control->Node = nodeIndex; + control->Type = type; + control->Status = status; + control->Setting = s; + control->Time = t; + control->Grade = lvl; + return 0; +} + + int getcomment(Network *network, int object, int index, char *comment) //---------------------------------------------------------------- // Input: object = a type of network object diff --git a/src/types.h b/src/types.h index b757041..bdc5c08 100755 --- a/src/types.h +++ b/src/types.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/05/2023 + Last Updated: 04/29/2023 ****************************************************************************** */ @@ -48,6 +48,9 @@ typedef int INT4; #define BIG 1.E10 #define TINY 1.E-6 #define MISSING -1.E10 // Missing value indicator +#define SET_CLOSED -1.E10 // Link set closed indicator +#define SET_OPEN 1.E10 // Link set open indicator + #define DIFFUS 1.3E-8 // Diffusivity of chlorine // @ 20 deg C (sq ft/sec) #define VISCOS 1.1E-5 // Kinematic viscosity of water From 2b346c542761d8c2915f4df69b3a61b2214d93a6 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Thu, 8 Jun 2023 10:21:35 -0400 Subject: [PATCH 117/233] Update ReleaseNotes2_3.md --- ReleaseNotes2_3.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index dfe27d5..2d90393 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -42,3 +42,4 @@ This document describes the changes and updates that have been made in version 2 - A simple control with more than 9 input tokens would set the incorrect hour, this has been fixed. - When reading an EPANET inp file, errors in node and link vertex coordinates are ignored. - Non-zero demands are now not included in `[DEMANDS]` when running `EN_saveinpfile`. + - `EN_SET_CLOSED` and `EN_SET_OPEN` constants were added that can be used with `EN_setcontrol` to fix the status of pipes and valves to completely closed or completely open. From 3acfb6dae3a31509399359b0e7e4999bfead1628 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Thu, 6 Jul 2023 15:35:30 -0400 Subject: [PATCH 118/233] Added retrieval of emitter flow to the API --- ReleaseNotes2_3.md | 39 ++++++++++++++++--------------- include/epanet2.bas | 1 + include/{epanet.cs => epanet2.cs} | 2 ++ include/epanet2.pas | 1 + include/epanet2.vb | 1 + include/epanet2_enums.h | 3 ++- src/epanet.c | 4 ++++ 7 files changed, 31 insertions(+), 20 deletions(-) rename include/{epanet.cs => epanet2.cs} (99%) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 2d90393..2914e3c 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -11,13 +11,13 @@ This document describes the changes and updates that have been made in version 2 - Negative pressure values for `EN_SETTING` are now permitted in the `EN_setlinkvalue` function. - The `EN_STARTTIME` parameter was added into the `EN_settimeparam` function. - A `EN_DEMANDPATTERN` parameter was added as the index of the default time pattern used by demands with no specific pattern assigned. It can be set or retrieved with the `EN_setoption` and `EN_getoption` functions, respectively, and is saved to file when the `EN_saveinpfile` function is called. - - The `EN_getaveragepatternvalue` function will now accept a pattern index of 0 which represents the constant pattern assigned to junction demands by default. + - The `EN_getaveragepatternvalue` function will now accept a pattern index of zero which represents the constant pattern assigned to junction demands by default. - The adjustment of a tank's minimum volume (`Vmin`) when its parameters are changed using `EN_setnodevalue` or `EN_settankdata` has been corrected. - - A pump whose status is set to CLOSED in the input file now also has its speed setting set to 0 which fixes having a simple pressure control activate the pump correctly. - - A failure to raise an error condition for a pipe roughness <= 0 in the input file has been fixed. + - A pump whose status is set to CLOSED in the input file now also has its speed setting set to zero which allows a simple pressure control activate the pump correctly. + - A failure to raise an error condition for a non-positve pipe roughness in the input file has been fixed. - The calculation of head loss gradient for low flow conditions was corrected. - Improved updating and convergence tests were added to pressure dependent demand analysis. - - Improved checks to prevent outflow from empty tanks or inflow to full (non-overflow) tanks, including the case where a link is connected to a pair of tanks. + - Improved checks to prevent outflow from empty tanks or inflow to full (non-overflow) tanks, including the case where a link is connected to a pair of tanks, were added. - The CI regression test protocol was modified by: - changing the absolute tolerance used to compare the closeness of test results to benchmark values from 0 to 0.0001 - dropping the "correct decimal digits" test @@ -25,21 +25,22 @@ This document describes the changes and updates that have been made in version 2 - A possible loss of network connectivity when evaluating a Pressure Sustaining Valve was prevented. - Having the implied loss coefficient for an active Flow Control Valve be less than its fully opened value was prevented. - A new type of valve, a Positional Control Valve (PCV), was added that uses a valve characteristic curve to relate its loss coefficient to its fraction open setting. - - A new set of functions have been added to get information about upcoming time step events. Users will now see what type of event is going to cause the end of a time step to occur. See ENtimetonextevent and EN_timetonextevent. + - A new set of functions have been added to get information about upcoming time step events. Users will now see what type of event is going to cause the end of a time step to occur. See `ENtimetonextevent` and `EN_timetonextevent`. - A new set of functions have been added to allow users to set a reporting callback function. The user-supplied function will recieve all output normally directed to the report file. - A `EN_EMITBACKFLOW` option was added that either allows emitters to have reverse flow through them (the default) or not. - - Elevation was not set correctly when using `EN_settankdata` with SI units, this has been fixed. - - The `EN_INITSETTING` option in function `EN_getlinkvalue` will return 0 if the setting equals MISSING due to a fixed `OPEN/CLOSED` status. - - The functions `EN_getnodevalue` and `EN_getlinkvalue` now includes options `EN_NODE_INCONTROL` and `EN_LINK_INCONTROL` to determine whether a node or link participates in a simple or rule-based control. - - Setting a minor loss of zero with `EN_setlinkvalue(ph, index, EN_MINORLOSS, 0)` would raise an error, this has been fixed. - - The reporting of unconnected nodes was not displaying correctly, this has been fixed. - - A header file for C# has been added. - - A new error code `263 - node is not a tank` is returned for when passing a non-tank node index to `EN_settankdata` or `EN_setnodevalue` with option `EN_TANKLEVEL`, `EN_TANKDIAM`, `EN_MINVOLUME`, `EN_VOLCURVE`, `EN_MINLEVEL`, `EN_MAXLEVEL`, `EN_MIXMODEL`, `EN_MIXFRACTION`, `EN_TANK_KBULK` or `EN_CANOVERFLOW`. - - The function `EN_saveinpfile` was incorrectly setting simple controls using GPV with the index of their head loss curve instead of their status, this has been fixed. - - Added support for Conan dependency manager. - - Fix silent Qualflag reset when QUALITY is not NONE and simulation duration is 0 in EPANET input file. - - Added support for cubic meters per second flow units. - - A simple control with more than 9 input tokens would set the incorrect hour, this has been fixed. - - When reading an EPANET inp file, errors in node and link vertex coordinates are ignored. - - Non-zero demands are now not included in `[DEMANDS]` when running `EN_saveinpfile`. + - An incorrect tank elevation value set using `EN_settankdata` with SI units has been fixed. + - The `EN_INITSETTING` option in function `EN_getlinkvalue` will now return `EN_MISSING` for a valve whose initial status is fixed to `EN_OPEN` or `EN_CLOSED`. + - The functions `EN_getnodevalue` and `EN_getlinkvalue` now include the options `EN_NODE_INCONTROL` and `EN_LINK_INCONTROL` to determine whether a node or link appears in any simple or rule-based control. + - An error is no longer raised when a minor loss coefficient of zero is assigned in `EN_setlinkvalue(ph, index, EN_MINORLOSS, 0)`. + - The incorrect display of unconnected nodes has been fixed. + - A header file for binding C# to the Toolkit has been added. + - A new error code `263 - node is not a tank` is returned when `EN_settankdata` or `EN_setnodevalue` attempts to set a tank-only parameter for a non-tank node. + - The function `EN_saveinpfile` was corrected for simple controls on GPV's by saving their status instead of the index of their head loss curve. + - Support was added for Conan dependency manager. + - The internal Qualflag variable is now adjusted when an EPANET input file has a QUALITY option not equal to NONE and simulation duration of zero. + - Support was added for cubic meters per second (`EN_CMS`) flow units. + - An EPANET input file with a simple timer control that has more than 9 input tokens no longer results in an incorrect hour setting. + - Errors in node and link vertex coordinates are now ignored when reading an EPANET input file. + - Only non-zero demands are now included in the `[DEMANDS]` section of the input file produced by `EN_saveinpfile`. - `EN_SET_CLOSED` and `EN_SET_OPEN` constants were added that can be used with `EN_setcontrol` to fix the status of pipes and valves to completely closed or completely open. + - `EN_EMITTERFLOW` can now be used with `EN_getnodevalue` to retrieve a node's emitter flow rate. \ No newline at end of file diff --git a/include/epanet2.bas b/include/epanet2.bas index e95cbd0..113a240 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -37,6 +37,7 @@ Public Const EN_MAXVOLUME = 25 Public Const EN_CANOVERFLOW = 26 Public Const EN_DEMANDDEFICIT = 27 Public Const EN_NODE_INCONTROL = 28 +Public Const EN_EMITTERFLOW = 29 Public Const EN_DIAMETER = 0 ' Link parameters Public Const EN_LENGTH = 1 diff --git a/include/epanet.cs b/include/epanet2.cs similarity index 99% rename from include/epanet.cs rename to include/epanet2.cs index b0b27f9..040a689 100644 --- a/include/epanet.cs +++ b/include/epanet2.cs @@ -48,6 +48,8 @@ namespace EpanetCSharpLibrary public const int EN_MAXVOLUME = 25; public const int EN_CANOVERFLOW = 26; public const int EN_DEMANDDEFICIT = 27; + public const int EN_NODE_INCONTROL = 28; + public const int EN_EMITTERFLOW = 29; public const int EN_DIAMETER = 0; //Link parameters public const int EN_LENGTH = 1; diff --git a/include/epanet2.pas b/include/epanet2.pas index 8edc917..934b3d3 100644 --- a/include/epanet2.pas +++ b/include/epanet2.pas @@ -45,6 +45,7 @@ const EN_CANOVERFLOW = 26; EN_DEMANDDEFICIT = 27; EN_NODE_INCONTROL = 28; + EN_EMITTERFLOW = 29; EN_DIAMETER = 0; { Link parameters } EN_LENGTH = 1; diff --git a/include/epanet2.vb b/include/epanet2.vb index c7dd94e..646a8f8 100644 --- a/include/epanet2.vb +++ b/include/epanet2.vb @@ -41,6 +41,7 @@ Public Const EN_MAXVOLUME = 25 Public Const EN_CANOVERFLOW = 26 Public Const EN_DEMANDDEFICIT = 27 Public Const EN_NODE_INCONTROL = 28 +Public Const EN_EMITTERFLOW = 29 Public Const EN_DIAMETER = 0 ' Link parameters Public Const EN_LENGTH = 1 diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index 0c03bdd..066becc 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -64,7 +64,8 @@ typedef enum { EN_MAXVOLUME = 25, //!< Tank maximum volume (read only) EN_CANOVERFLOW = 26, //!< Tank can overflow (= 1) or not (= 0) EN_DEMANDDEFICIT = 27,//!< Amount that full demand is reduced under PDA (read only) - EN_NODE_INCONTROL = 28 //!< Is present in any simple or rule-based control (= 1) or not (= 0) + EN_NODE_INCONTROL = 28, //!< Is present in any simple or rule-based control (= 1) or not (= 0) + EN_EMITTERFLOW = 29 //!< Current emitter flow (read only) } EN_NodeProperty; /// Link properties diff --git a/src/epanet.c b/src/epanet.c index bc3aa8b..155bb23 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2365,6 +2365,10 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val v = (double)incontrols(p, NODE, index); break; + case EN_EMITTERFLOW: + v = hyd->EmitterFlow[index] * Ucf[FLOW]; + break; + default: return 251; } From 353ba4eb34d6087c990102ab88f991eaf476c800 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 19 Jul 2023 09:15:25 -0400 Subject: [PATCH 119/233] Allow API to get/set type of status report The existing EN_setstatusreport function only allows one to set the level of status reporting and not retrieve this value. A new EN_STATUS_REPORT constant was added, to be used with EN_setoption and EN_getoption, to provide read/write access to the level of status reporting. --- ReleaseNotes2_3.md | 3 ++- include/epanet2.bas | 3 ++- include/epanet2.cs | 3 ++- include/epanet2.pas | 2 ++ include/epanet2.vb | 3 ++- include/epanet2_enums.h | 10 ++++++---- src/epanet.c | 13 +++++++++++-- src/types.h | 6 +++--- 8 files changed, 30 insertions(+), 13 deletions(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 2914e3c..4f27541 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -43,4 +43,5 @@ This document describes the changes and updates that have been made in version 2 - Errors in node and link vertex coordinates are now ignored when reading an EPANET input file. - Only non-zero demands are now included in the `[DEMANDS]` section of the input file produced by `EN_saveinpfile`. - `EN_SET_CLOSED` and `EN_SET_OPEN` constants were added that can be used with `EN_setcontrol` to fix the status of pipes and valves to completely closed or completely open. - - `EN_EMITTERFLOW` can now be used with `EN_getnodevalue` to retrieve a node's emitter flow rate. \ No newline at end of file + - `EN_EMITTERFLOW` can now be used with `EN_getnodevalue` to retrieve a node's emitter flow rate. + - `EN_STATUS_REPORT` can now be used with `EN_getoption` and `EN_setoption` to get or set the type of status report that EPANET will generate (`EN_NO_REPORT`, `EN_NORMAL_REPORT` or `EN_FULL_REPORT`). \ No newline at end of file diff --git a/include/epanet2.bas b/include/epanet2.bas index 113a240..663c732 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -5,7 +5,7 @@ Attribute VB_Name = "Module1" 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) -'Last updated on 05/13/2023 +'Last updated on 07/18/2023 ' These are codes used by the DLL functions Public Const EN_ELEVATION = 0 ' Node parameters @@ -188,6 +188,7 @@ Public Const EN_CONCENLIMIT = 22 Public Const EN_DEMANDPATTERN = 23 Public Const EN_EMITBACKFLOW = 24 Public Const EN_PRESS_UNITS = 25 +Public Const EN_STATUS_REPORT = 26 Public Const EN_LOWLEVEL = 0 ' Control types Public Const EN_HILEVEL = 1 diff --git a/include/epanet2.cs b/include/epanet2.cs index 040a689..0a6fedc 100644 --- a/include/epanet2.cs +++ b/include/epanet2.cs @@ -3,7 +3,7 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; //epanet2.cs[By Oscar Vegas] -//Last updated on 05/13/2023 +//Last updated on 07/18/2023 //Declarations of functions in the EPANET PROGRAMMERs TOOLKIT //(EPANET2.DLL) for use with C# @@ -192,6 +192,7 @@ namespace EpanetCSharpLibrary public const int EN_DEMANDPATTERN = 23; public const int EN_EMITBACKFLOW = 24; public const int EN_PRESS_UNITS = 25; + public const int EN_STATUS_REPORT = 26; public const int EN_LOWLEVEL = 0; //Control types public const int EN_HILEVEL = 1; diff --git a/include/epanet2.pas b/include/epanet2.pas index 934b3d3..31e2cd4 100644 --- a/include/epanet2.pas +++ b/include/epanet2.pas @@ -191,6 +191,8 @@ const EN_CONCENLIMIT = 22; EN_DEMANDPATTERN = 23; EN_EMITBACKFLOW = 24; + EN_PRESS_UNITS = 25; + EN_STATUS_REPORT = 26; EN_LOWLEVEL = 0; { Control types } EN_HILEVEL = 1; diff --git a/include/epanet2.vb b/include/epanet2.vb index 646a8f8..1a6bf11 100644 --- a/include/epanet2.vb +++ b/include/epanet2.vb @@ -4,7 +4,7 @@ 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) for use with VB.Net. -'Last updated on 05/13/2023 +'Last updated on 07/18/2023 Imports System.Runtime.InteropServices Imports System.Text @@ -183,6 +183,7 @@ Public Const EN_CONCENLIMIT = 22 Public Const EN_DEMANDPATTERN = 23 Public Const EN_EMITBACKFLOW = 24 Public Const EN_PRESS_UNITS = 25 +Public Const EN_STATUS_REPORT = 26 Public Const EN_LOWLEVEL = 0 ' Control types Public Const EN_HILEVEL = 1 diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index 066becc..dec12f5 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -3,13 +3,13 @@ /* ****************************************************************************** Project: OWA EPANET - Version: 2.2 + Version: 2.3 Module: epanet2_enums.h Description: enumerations of symbolic constants used by the API functions Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 04/28/2023 + Last Updated: 07/17/2023 ****************************************************************************** */ @@ -352,7 +352,8 @@ typedef enum { EN_CONCENLIMIT = 22, //!< Limiting concentration for growth reactions EN_DEMANDPATTERN = 23, //!< Name of default demand pattern EN_EMITBACKFLOW = 24, //!< 1 if emitters can backflow, 0 if not - EN_PRESS_UNITS = 25 //!< Pressure units (see @ref EN_PressUnits) + EN_PRESS_UNITS = 25, //!< Pressure units (see @ref EN_PressUnits) + EN_STATUS_REPORT = 26 //!< Type of status report to produce (see @ref EN_StatusReport) } EN_Option; /// Simple control types @@ -446,7 +447,8 @@ typedef enum { /// Status reporting levels /** These choices specify the level of status reporting written to a project's report -file during a hydraulic analysis. The level is set using the @ref EN_setstatusreport function. +file during a hydraulic analysis. The level is set using the @ref EN_setstatusreport +or the @ref EN_setoption functions. */ typedef enum { EN_NO_REPORT = 0, //!< No status reporting diff --git a/src/epanet.c b/src/epanet.c index 155bb23..a654420 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1,13 +1,13 @@ /* ****************************************************************************** Project: OWA EPANET - Version: 2.2 + Version: 2.3 Module: epanet.c Description: implementation of EPANET's API functions Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 04/29/2023 + Last Updated: 07/17/2023 ****************************************************************************** */ @@ -1211,6 +1211,9 @@ int DLLEXPORT EN_getoption(EN_Project p, int option, double *value) case EN_PRESS_UNITS: v = (double)p->parser.Pressflag; break; + case EN_STATUS_REPORT: + v = (double)( p->report.Statflag); + break; default: return 251; } @@ -1401,6 +1404,12 @@ int DLLEXPORT EN_setoption(EN_Project p, int option, double value) qcf = Ucf[FLOW] / qfactor; updateruleunits(p, dcf, pcf, hcf, qcf); break; + + case EN_STATUS_REPORT: + i = ROUND(value); + if (i < EN_NO_REPORT || i > EN_FULL_REPORT) return 213; + p->report.Statflag = i; + break; default: return 251; diff --git a/src/types.h b/src/types.h index bdc5c08..ae837ab 100755 --- a/src/types.h +++ b/src/types.h @@ -1,13 +1,13 @@ /* ****************************************************************************** Project: OWA EPANET - Version: 2.2 + Version: 2.3 Module: types.h Description: symbolic constants and data types used throughout EPANET Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 04/29/2023 + Last Updated: 07/17/2023 ****************************************************************************** */ @@ -31,7 +31,7 @@ typedef int INT4; Various constants ---------------------------------------------- */ -#define CODEVERSION 20200 +#define CODEVERSION 20300 #define MAGICNUMBER 516114521 #define ENGINE_VERSION 201 // Used for binary hydraulics file #define EOFMARK 0x1A // Use 0x04 for UNIX systems From dc721c5ce6e3eec72b7d6d32a69b3ffed57dd1a2 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 19 Jul 2023 09:43:53 -0400 Subject: [PATCH 120/233] Update test_analysis.cpp --- tests/test_analysis.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_analysis.cpp b/tests/test_analysis.cpp index e366cd7..2a7d250 100644 --- a/tests/test_analysis.cpp +++ b/tests/test_analysis.cpp @@ -44,7 +44,7 @@ BOOST_FIXTURE_TEST_CASE(test_anlys_getoption, FixtureOpenClose) BOOST_CHECK_EQUAL_COLLECTIONS(ref.begin(), ref.end(), test.begin(), test.end()); double temp; - error = EN_getoption(ph, 26, &temp); + error = EN_getoption(ph, 27, &temp); BOOST_CHECK(error == 251); } From 4ca66cc7fed14e52f86864829b411df2ad974340 Mon Sep 17 00:00:00 2001 From: 0tkl <118708188+0tkl@users.noreply.github.com> Date: Wed, 2 Aug 2023 11:55:23 +0800 Subject: [PATCH 121/233] handle error codes in tests --- tests/test_demand.cpp | 4 +++- tests/test_overflow.cpp | 4 +++- tests/test_pda.cpp | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/test_demand.cpp b/tests/test_demand.cpp index f39d8f7..52388aa 100644 --- a/tests/test_demand.cpp +++ b/tests/test_demand.cpp @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 03/21/2019 + Last Updated: 08/02/2023 ****************************************************************************** */ @@ -27,7 +27,9 @@ BOOST_AUTO_TEST_CASE(test_categories_save) EN_Project ph = NULL; error = EN_createproject(&ph); + BOOST_REQUIRE(error == 0); error = EN_open(ph, DATA_PATH_NET1, DATA_PATH_RPT, DATA_PATH_OUT); + BOOST_REQUIRE(error == 0); error = EN_getnodeindex(ph, (char *)"12", &Nindex); BOOST_REQUIRE(error == 0); diff --git a/tests/test_overflow.cpp b/tests/test_overflow.cpp index 5ad60a4..8c3e005 100644 --- a/tests/test_overflow.cpp +++ b/tests/test_overflow.cpp @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 06/16/2019 + Last Updated: 08/02/2023 ****************************************************************************** */ @@ -32,7 +32,9 @@ BOOST_AUTO_TEST_CASE(test_tank_overflow) EN_Project ph = NULL; error = EN_createproject(&ph); + BOOST_REQUIRE(error == 0); error = EN_open(ph, DATA_PATH_NET1, DATA_PATH_RPT, ""); + BOOST_REQUIRE(error == 0); // Get index of the tank and its inlet/outlet pipe error = EN_getnodeindex(ph, (char *)"2", &Nindex); diff --git a/tests/test_pda.cpp b/tests/test_pda.cpp index b7c1636..6091def 100644 --- a/tests/test_pda.cpp +++ b/tests/test_pda.cpp @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 07/20/2019 + Last Updated: 08/02/2023 ****************************************************************************** */ @@ -30,7 +30,9 @@ BOOST_AUTO_TEST_CASE(test_pda_model) EN_Project ph = NULL; error = EN_createproject(&ph); + BOOST_REQUIRE(error == 0); error = EN_open(ph, DATA_PATH_NET1, DATA_PATH_RPT, ""); + BOOST_REQUIRE(error == 0); // Set Demand Multiplier to 10 to cause negative pressures error = EN_setoption(ph, EN_DEMANDMULT, 10); From 434cd68a23ede580788e7ba8a9af96117514cd32 Mon Sep 17 00:00:00 2001 From: 0tkl <118708188+0tkl@users.noreply.github.com> Date: Wed, 2 Aug 2023 14:12:03 +0800 Subject: [PATCH 122/233] fix potential deref of a null pointer --- src/project.c | 8 ++++---- src/qualroute.c | 4 ++-- src/util/errormanager.c | 3 ++- src/util/filemanager.c | 3 ++- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/project.c b/src/project.c index eae6ffd..22d07a0 100644 --- a/src/project.c +++ b/src/project.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 04/29/2023 + Last Updated: 08/02/2023 ****************************************************************************** */ @@ -1373,10 +1373,10 @@ char *xstrcpy(char **s1, const char *s2, const size_t n) // s1 points to a valid memory location or is NULL. E.g., // the following code will likely cause a segment fault: // char *s; -// s = xstrcpy(s, "Some text"); +// s = xstrcpy(&s, "Some text"); // while this would work correctly: // char *s = NULL; -// s = xstrcpy(s, "Some text"); +// s = xstrcpy(&s, "Some text"); //---------------------------------------------------------------- { size_t n1 = 0, n2 = 0; @@ -1398,7 +1398,7 @@ char *xstrcpy(char **s1, const char *s2, const size_t n) if (n2 > n1) *s1 = realloc(*s1, (n2 + 1) * sizeof(char)); // Copy the source string into the destination string - strncpy(*s1, s2, n2+1); + if (*s1) strncpy(*s1, s2, n2+1); return *s1; } diff --git a/src/qualroute.c b/src/qualroute.c index b71f218..144be67 100644 --- a/src/qualroute.c +++ b/src/qualroute.c @@ -7,7 +7,7 @@ Description: computes water quality transport over a single time step Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 05/15/2019 +Last Updated: 08/02/2023 ****************************************************************************** */ @@ -609,7 +609,7 @@ void initsegs(Project *pr) addseg(pr, k, v, c); // Create a 2nd segment for the 2-compartment tank model - if (net->Tank[j].MixModel == MIX2) + if (!qual->OutOfMemory && net->Tank[j].MixModel == MIX2) { // ... mixing zone segment v1 = MAX(0, v - net->Tank[j].V1frac * net->Tank[j].Vmax); diff --git a/src/util/errormanager.c b/src/util/errormanager.c index 57c19de..1bda020 100644 --- a/src/util/errormanager.c +++ b/src/util/errormanager.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 04/02/2019 + Last Updated: 08/02/2023 ****************************************************************************** */ @@ -36,6 +36,7 @@ error_handle_t *create_error_manager(void (*p_error_message)(int, char*, int)) { error_handle_t *error_handle; error_handle = (error_handle_t*)calloc(1, sizeof(error_handle_t)); + if (error_handle == NULL) return NULL; error_handle->p_msg_lookup = p_error_message; diff --git a/src/util/filemanager.c b/src/util/filemanager.c index 79a45d2..c06b434 100644 --- a/src/util/filemanager.c +++ b/src/util/filemanager.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 04/01/2019 + Last Updated: 08/02/2023 ****************************************************************************** */ @@ -41,6 +41,7 @@ file_handle_t *create_file_manager() { file_handle_t *file_handle; file_handle = (file_handle_t *)calloc(1, sizeof(file_handle_t)); + if (file_handle == NULL) return NULL; file_handle->filename = NULL; file_handle->file = NULL; From b860f9b16f095fee35ba7d50c1131164b0ae2702 Mon Sep 17 00:00:00 2001 From: 0tkl <118708188+0tkl@users.noreply.github.com> Date: Wed, 2 Aug 2023 14:42:48 +0800 Subject: [PATCH 123/233] add a default value to controlIndex --- src/hydraul.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hydraul.c b/src/hydraul.c index d6e4424..93907ec 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 08/13/2022 + Last Updated: 08/02/2023 ****************************************************************************** */ @@ -718,7 +718,7 @@ int controltimestep(Project *pr, long *tstep) Network *net = &pr->network; Hydraul *hyd = &pr->hydraul; - int i, j, k, n, controlIndex; + int i, j, k, n, controlIndex = 0; double h, q, v; long t, t1, t2; Slink *link; From 2f63e513f0bf6daf349bafbecc2a50127aa8d370 Mon Sep 17 00:00:00 2001 From: 0tkl <118708188+0tkl@users.noreply.github.com> Date: Wed, 2 Aug 2023 14:12:56 +0800 Subject: [PATCH 124/233] fix potential memory leaks Co-authored-by: Lew Rossman --- src/mempool.c | 8 ++++++-- src/outfile/src/epanet_output.c | 9 +++++++-- src/project.c | 32 +++++++++++++++++++++----------- 3 files changed, 34 insertions(+), 15 deletions(-) diff --git a/src/mempool.c b/src/mempool.c index d6c7f61..81087eb 100755 --- a/src/mempool.c +++ b/src/mempool.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 05/15/2019 + Last Updated: 08/02/2023 This module is based code by Steve Hill in Graphics Gems III, David Kirk (ed.), Academic Press, Boston, MA, 1992 @@ -72,7 +72,11 @@ struct Mempool * mempool_create() if (mempool == NULL) return NULL; mempool->first = createMemBlock(); mempool->current = mempool->first; - if (mempool->first == NULL) return NULL; + if (mempool->first == NULL) + { + free(mempool); + return NULL; + } return mempool; } diff --git a/src/outfile/src/epanet_output.c b/src/outfile/src/epanet_output.c index 742aa28..480f18f 100644 --- a/src/outfile/src/epanet_output.c +++ b/src/outfile/src/epanet_output.c @@ -3,7 +3,8 @@ // epanet_output.c -- API for reading results from EPANET binary output file // // Version: 0.40 -// Date 04/02/2019 +// Date 08/02/2023 +// 04/02/2019 // 09/06/2017 // 06/17/2016 // 08/05/2014 @@ -252,12 +253,15 @@ int EXPORT_OUT_API ENR_getNetSize(ENR_Handle p_handle, int** elementCount, int* */ { int errorcode = 0; - int* temp = newIntArray(NELEMENTTYPES); + int* temp; data_t* p_data; p_data = (data_t*)p_handle; if (p_data == NULL) return -1; + // Check memory for count values + else if MEMCHECK(temp = newIntArray(NELEMENTTYPES)) errorcode = 411; + else { temp[0] = p_data->nodeCount; @@ -459,6 +463,7 @@ int EXPORT_OUT_API ENR_getElementName(ENR_Handle p_handle, ENR_ElementType type, *name = temp; *length = MAXID_P1; } + else free(temp); } return set_error(p_data->error_handle, errorcode); diff --git a/src/project.c b/src/project.c index 22d07a0..aba50c8 100644 --- a/src/project.c +++ b/src/project.c @@ -560,31 +560,41 @@ int addlinkvertex(Slink *link, double x, double y) */ { static int CHUNKSIZE = 5; - int n; + int n, newCapacity; Pvertices vertices; - if (link->Vertices == NULL) + double *newX, *newY; + + vertices = link->Vertices; + if (vertices == NULL) { vertices = (struct Svertices *) malloc(sizeof(struct Svertices)); if (vertices == NULL) return 101; vertices->Npts = 0; - vertices->Capacity = CHUNKSIZE; - vertices->X = (double *) calloc(vertices->Capacity, sizeof(double)); - vertices->Y = (double *) calloc(vertices->Capacity, sizeof(double)); + vertices->Capacity = 0; + vertices->X = NULL; + vertices->Y = NULL; link->Vertices = vertices; } - vertices = link->Vertices; if (vertices->Npts >= vertices->Capacity) { - vertices->Capacity += CHUNKSIZE; - vertices->X = realloc(vertices->X, vertices->Capacity * sizeof(double)); - vertices->Y = realloc(vertices->Y, vertices->Capacity * sizeof(double)); + newCapacity = vertices->Capacity + CHUNKSIZE; + newX = realloc(vertices->X, newCapacity * sizeof(double)); + newY = realloc(vertices->Y, newCapacity * sizeof(double)); + if (newX == NULL || newY == NULL) + { + free(newX); + free(newY); + return 101; + } + vertices->Capacity = newCapacity; + vertices->X = newX; + vertices->Y = newY; } - if (vertices->X == NULL || vertices->Y == NULL) return 101; n = vertices->Npts; vertices->X[n] = x; vertices->Y[n] = y; vertices->Npts++; - return 0; + return 0; } void freelinkvertices(Slink *link) From 6aa2a2132715a3d9d938c350988bb020250c1cac Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Thu, 17 Aug 2023 14:54:59 -0400 Subject: [PATCH 125/233] Change PCV settings from fraction to percent --- include/epanet2.pas | 4 ++++ src/hydcoeffs.c | 15 ++++++++------- src/input3.c | 2 +- tests/test_valve.cpp | 8 ++++---- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/include/epanet2.pas b/include/epanet2.pas index 31e2cd4..3f9c363 100644 --- a/include/epanet2.pas +++ b/include/epanet2.pas @@ -163,6 +163,10 @@ const EN_CMD = 9; EN_CMS = 10; + EN_PSI = 0; { Pressure units types } + EN_KPA = 1; + EN_METERS = 2; + EN_DDA = 0; { Demand model types } EN_PDA = 1; diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index c82e70e..c00d2f9 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -161,10 +161,10 @@ double pcvlosscoeff(Project* pr, int k, double s) /* **-------------------------------------------------------------- ** Input: k = link index -** s = valve fraction open setting +** s = valve percent open setting ** Output: returns a valve loss coefficient ** Purpose: finds a Positional Control Valve's loss -** coefficient from its fraction open setting. +** coefficient from its percent open setting. **-------------------------------------------------------------- */ { @@ -176,7 +176,7 @@ double pcvlosscoeff(Project* pr, int k, double s) double kmo; // fully open loss coeff. double km; // partly open loss coeff. double kvr; // Kv / Kvo (Kvo = Kv at fully open) - double *x, *y; // points on kvr v. frac. open curve + double *x, *y; // points on kvr v. percent open curve int k1, k2, npts; Scurve *curve; @@ -186,7 +186,7 @@ double pcvlosscoeff(Project* pr, int k, double s) // Valve is completely open so return its Km value d = net->Link[k].Diam; kmo = net->Link[k].Km; - if (s >= 1.0) return kmo; + if (s >= 100.0) return kmo; // Valve is completely closed so return a large coeff. if (s <= 0.0) return CBIG; @@ -199,8 +199,8 @@ double pcvlosscoeff(Project* pr, int k, double s) // Valve curve data curve = &net->Curve[c]; npts = curve->Npts; - x = curve->X; // x = frac. open - y = curve->Y; // y = Kv / Kvo + x = curve->X; // x = % open + y = curve->Y; // y = Kv / Kvo as a % // s lies below first point of curve if (s < x[0]) @@ -226,7 +226,8 @@ double pcvlosscoeff(Project* pr, int k, double s) } } - // kvr can't be > 1 or <= 0 + // Convert kvr from % to fraction + kvr /= 100.; kvr = MIN(kvr, 1.0); kvr = MAX(kvr, CSMALL); diff --git a/src/input3.c b/src/input3.c index 8880f6a..ed16cdd 100644 --- a/src/input3.c +++ b/src/input3.c @@ -550,7 +550,7 @@ int valvedata(Project *pr) if (c == 0) return setError(parser, 7, 206); losscurve = c; net->Curve[c].Type = VALVE_CURVE; - if (setting > 1.0) setting = 1.0; + if (setting > 100.0) setting = 100.0; } // Check for illegal connections diff --git a/tests/test_valve.cpp b/tests/test_valve.cpp index a4c3c89..4e14221 100644 --- a/tests/test_valve.cpp +++ b/tests/test_valve.cpp @@ -25,8 +25,8 @@ BOOST_FIXTURE_TEST_CASE(test_PCV_valve, FixtureOpenClose) { int npts = 5; - double x[] = { 0.0, 0.25, 0.5, 0.75, 1. }; - double y[] = {0.0, 0.089, 0.184, 0.406, 1.0}; + double x[] = { 0.0, 25., 50., 75., 100. }; + double y[] = {0.0, 0.89, 18.4, 40.6, 100.0}; double v; int linkIndex, curveIndex; @@ -54,14 +54,14 @@ BOOST_FIXTURE_TEST_CASE(test_PCV_valve, FixtureOpenClose) // Assign curve & initial setting to PCV error = EN_setlinkvalue(ph, linkIndex, EN_PCV_CURVE, curveIndex); BOOST_REQUIRE(error == 0); - error = EN_setlinkvalue(ph, linkIndex, EN_INITSETTING, 0.35); + error = EN_setlinkvalue(ph, linkIndex, EN_INITSETTING, 35.); BOOST_REQUIRE(error == 0); // Solve for hydraulics error = EN_solveH(ph); BOOST_REQUIRE(error == 0); - // The PCV interpolated relative flow coeff. at 0.35 open is 0.127. + // The PCV interpolated relative flow coeff. at 35% open is 0.127. // This translates to a minor loss coeff. of 0.19 / 0.127^2 = 11.78. // If the PCV were replaced with a TCV at that setting the resulting // head loss would be 0.0255 ft which should equal the PCV result. From c7a4069b7936fb6d211b0f6d3c667428be7336ff Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Thu, 17 Aug 2023 15:12:31 -0400 Subject: [PATCH 126/233] Update test_valve.cpp --- tests/test_valve.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_valve.cpp b/tests/test_valve.cpp index 4e14221..8a0568e 100644 --- a/tests/test_valve.cpp +++ b/tests/test_valve.cpp @@ -64,10 +64,10 @@ BOOST_FIXTURE_TEST_CASE(test_PCV_valve, FixtureOpenClose) // The PCV interpolated relative flow coeff. at 35% open is 0.127. // This translates to a minor loss coeff. of 0.19 / 0.127^2 = 11.78. // If the PCV were replaced with a TCV at that setting the resulting - // head loss would be 0.0255 ft which should equal the PCV result. + // head loss would be 0.02545 ft which should equal the PCV result. error = EN_getlinkvalue(ph, linkIndex, EN_HEADLOSS, &v); BOOST_REQUIRE(error == 0); - BOOST_REQUIRE(abs(v - 0.0255) < 0.001); + BOOST_REQUIRE(abs(v - 0.02545) < 0.001); } BOOST_AUTO_TEST_SUITE_END() From e81a2804fba311c7e316f293dc6d09f6d28acb61 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Thu, 17 Aug 2023 16:23:05 -0400 Subject: [PATCH 127/233] Update test_valve.cpp --- tests/test_valve.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_valve.cpp b/tests/test_valve.cpp index 8a0568e..925ebea 100644 --- a/tests/test_valve.cpp +++ b/tests/test_valve.cpp @@ -26,7 +26,7 @@ BOOST_FIXTURE_TEST_CASE(test_PCV_valve, FixtureOpenClose) { int npts = 5; double x[] = { 0.0, 25., 50., 75., 100. }; - double y[] = {0.0, 0.89, 18.4, 40.6, 100.0}; + double y[] = {0.0, 8.9, 18.4, 40.6, 100.0}; double v; int linkIndex, curveIndex; @@ -64,10 +64,10 @@ BOOST_FIXTURE_TEST_CASE(test_PCV_valve, FixtureOpenClose) // The PCV interpolated relative flow coeff. at 35% open is 0.127. // This translates to a minor loss coeff. of 0.19 / 0.127^2 = 11.78. // If the PCV were replaced with a TCV at that setting the resulting - // head loss would be 0.02545 ft which should equal the PCV result. + // head loss would be 0.0255 ft which should equal the PCV result. error = EN_getlinkvalue(ph, linkIndex, EN_HEADLOSS, &v); BOOST_REQUIRE(error == 0); - BOOST_REQUIRE(abs(v - 0.02545) < 0.001); + BOOST_REQUIRE(abs(v - 0.0255) < 0.001); } BOOST_AUTO_TEST_SUITE_END() From a2c0ff788913f2a54605b56639f4f17d2caec2e6 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Mon, 11 Sep 2023 18:23:49 -0400 Subject: [PATCH 128/233] Fix trace node id parser error --- ReleaseNotes2_3.md | 3 ++- include/epanet2.pas | 12 ++++++------ src/input3.c | 5 +---- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 4f27541..d4858c5 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -44,4 +44,5 @@ This document describes the changes and updates that have been made in version 2 - Only non-zero demands are now included in the `[DEMANDS]` section of the input file produced by `EN_saveinpfile`. - `EN_SET_CLOSED` and `EN_SET_OPEN` constants were added that can be used with `EN_setcontrol` to fix the status of pipes and valves to completely closed or completely open. - `EN_EMITTERFLOW` can now be used with `EN_getnodevalue` to retrieve a node's emitter flow rate. - - `EN_STATUS_REPORT` can now be used with `EN_getoption` and `EN_setoption` to get or set the type of status report that EPANET will generate (`EN_NO_REPORT`, `EN_NORMAL_REPORT` or `EN_FULL_REPORT`). \ No newline at end of file + - `EN_STATUS_REPORT` can now be used with `EN_getoption` and `EN_setoption` to get or set the type of status report that EPANET will generate (`EN_NO_REPORT`, `EN_NORMAL_REPORT` or `EN_FULL_REPORT`). + - A possible parser error that could result in a Trace Node ID in an input file not being recognized was fixed. \ No newline at end of file diff --git a/include/epanet2.pas b/include/epanet2.pas index 3f9c363..3ae75ad 100644 --- a/include/epanet2.pas +++ b/include/epanet2.pas @@ -3,7 +3,7 @@ unit epanet2; { Declarations of imported procedures from the EPANET PROGRAMMERs TOOLKIT } { (EPANET2.DLL) } -{Last updated on 05/13/2023} +{Last updated on 09/11/2023} interface @@ -12,9 +12,9 @@ const { These are codes used by the DLL functions } EN_MAXID = 31; { Max. # characters in ID name } EN_MAXMSG = 255; { Max. # characters in strings } - EN_MISSING = -1.E10; - EN_SET_CLOSED = -1.E10; - EN_SET_OPEN = 1.E10; + EN_MISSING = -1.0E10; + EN_SET_CLOSED = -1.0E10; + EN_SET_OPEN = 1.0E10; EN_ELEVATION = 0; { Node parameters } EN_BASEDEMAND = 1; @@ -271,8 +271,8 @@ const EN_R_IS_CLOSED = 2; EN_R_IS_ACTIVE = 3; -{$ifdef WINDOWS} - EpanetLib = 'epanet2.dll'; +{$ifdef MSWINDOWS} + EpanetLib = 'epanet2.dll'; {$else} EpanetLib = 'libepanet2.so'; {$endif} diff --git a/src/input3.c b/src/input3.c index ed16cdd..6dfd1fe 100644 --- a/src/input3.c +++ b/src/input3.c @@ -7,7 +7,7 @@ Description: parses network data from a line of an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 02/05/2023 +Last Updated: 09/11/2023 ****************************************************************************** */ @@ -1842,10 +1842,7 @@ int optionchoice(Project *pr, int n) } if (qual->Qualflag == TRACE) { - // Copy Trace Node ID to parser->Tok[0] for error reporting - strcpy(parser->Tok[0], ""); if (n < 2) return 201; - strcpy(parser->Tok[0], parser->Tok[2]); qual->TraceNode = findnode(net, parser->Tok[2]); if (qual->TraceNode == 0) return setError(parser, 2, 212); strncpy(qual->ChemName, u_PERCENT, MAXID); From 06a43cdb4e1096dd3b68de8f34485faf21a25fb2 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Tue, 12 Sep 2023 14:51:44 -0400 Subject: [PATCH 129/233] adds api support for enabling/disabling controls and rules --- include/epanet2.h | 7 +++++ include/epanet2_2.h | 35 +++++++++++++++++++++ src/epanet.c | 74 +++++++++++++++++++++++++++++++++++++++++++++ src/epanet2.c | 22 ++++++++++++++ src/hydraul.c | 9 +++++- src/input3.c | 1 + src/project.c | 1 + src/rules.c | 6 ++++ src/types.h | 7 +++++ 9 files changed, 161 insertions(+), 1 deletion(-) diff --git a/include/epanet2.h b/include/epanet2.h index 36a1f0f..25651f0 100644 --- a/include/epanet2.h +++ b/include/epanet2.h @@ -391,6 +391,9 @@ extern "C" { int DLLEXPORT ENsetcontrol(int index, int type, int linkIndex, EN_API_FLOAT_TYPE setting, int nodeIndex, EN_API_FLOAT_TYPE level); + int DLLEXPORT ENgetcontrolenabled(int index, int *out_enabled); + + int DLLEXPORT ENsetcontrolenabled(int index, int enabled); /******************************************************************** @@ -436,6 +439,10 @@ extern "C" { int DLLEXPORT ENsetrulepriority(int index, EN_API_FLOAT_TYPE priority); + int DLLEXPORT ENgetruleenabled(int index, int *out_enabled); + + int DLLEXPORT ENsetruleenabled(int index, int enabled); + #if defined(__cplusplus) } #endif diff --git a/include/epanet2_2.h b/include/epanet2_2.h index 62e3d1a..2b44c1d 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -1640,6 +1640,23 @@ typedef struct Project *EN_Project; int DLLEXPORT EN_setcontrol(EN_Project ph, int index, int type, int linkIndex, double setting, int nodeIndex, double level); + /** + @brief Gets the enabled status of a simple control. + @param ph an EPANET project handle. + @param index the control's index (starting from 1). + @param out_enabled the control will be either enabled or disabled. + @return an error code. + */ + int DLLEXPORT EN_getcontrolenabled(EN_Project ph, int index, int *out_enabled); + + /** + @brief Sets the enabled status of a simple control. + @param ph an EPANET project handle. + @param index the control's index (starting from 1). + @param enabled set the control to either enabled or disabled. + @return an error code. + */ + int DLLEXPORT EN_setcontrolenabled(EN_Project ph, int index, int enabled); /******************************************************************** @@ -1824,6 +1841,24 @@ typedef struct Project *EN_Project; */ int DLLEXPORT EN_setrulepriority(EN_Project ph, int index, double priority); + /** + @brief Gets the enabled status of a rule-based control. + @param ph an EPANET project handle. + @param index the rule's index (starting from 1). + @param out_enabled the rule will be either enabled or disabled. + @return an error code. + */ + int DLLEXPORT EN_getruleenabled(EN_Project ph, int index, int *out_enabled); + + /** + @brief Sets the enabled status of a rule-based control. + @param ph an EPANET project handle. + @param index the rule's index (starting from 1). + @param enabled set the rule to either enabled or disabled. + @return an error code. + */ + int DLLEXPORT EN_setruleenabled(EN_Project ph, int index, int enabled); + #if defined(__cplusplus) } #endif diff --git a/src/epanet.c b/src/epanet.c index a654420..d2c4d11 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -5259,6 +5259,42 @@ int DLLEXPORT EN_setcontrol(EN_Project p, int index, int type, int linkIndex, return 0; } + +int DLLEXPORT EN_getcontrolenabled(EN_Project p, int index, int *enabled) +{ + Network *net = &p->network; + Scontrol *control; + + // Check for valid arguments + if (!p->Openflag) + return 102; + if (index <= 0 || index > net->Ncontrols) + return 241; + + control = &net->Control[index]; + *enabled = control->isEnabled; + return 0; +} + + +int DLLEXPORT EN_setcontrolenabled(EN_Project p, int index, int enabled) +{ + Network *net = &p->network; + Scontrol *control; + + // Check for valid arguments + if (enabled != ENABLED && enabled != DISABLED) + return 202; // illegal numeric value + if (!p->Openflag) + return 102; + if (index <= 0 || index > net->Ncontrols) + return 241; + + control = &net->Control[index]; + control->isEnabled = enabled; + return 0; +} + /******************************************************************** Rule-Based Controls Functions @@ -5681,3 +5717,41 @@ int DLLEXPORT EN_setrulepriority(EN_Project p, int index, double priority) p->network.Rule[index].priority = priority; return 0; } + + +int DLLEXPORT EN_getruleenabled(EN_Project p, int index, int *enabled) +{ + Network *net = &p->network; + Srule *rule; + + // Check for valid arguments + if (!p->Openflag) + return 102; + if (index <= 0 || index > net->Nrules) + return 241; + + rule = &net->Rule[index]; + *enabled = rule->isEnabled; + return 0; +} + + +int DLLEXPORT EN_setruleenabled(EN_Project p, int index, int enabled) +{ + Network *net = &p->network; + Srule *rule; + + // Check for valid arguments + if (enabled != ENABLED && enabled != DISABLED) + return 202; // illegal numeric value + if (!p->Openflag) + return 102; + if (index <= 0 || index > net->Nrules) + return 241; + + rule = &net->Rule[index]; + rule->isEnabled = enabled; + return 0; +} + + diff --git a/src/epanet2.c b/src/epanet2.c index 53d1732..d814892 100644 --- a/src/epanet2.c +++ b/src/epanet2.c @@ -786,6 +786,17 @@ int DLLEXPORT ENsetcontrol(int index, int type, int linkIndex, nodeIndex, level); } + +int DLLEXPORT ENgetcontrolenabled(int index, int *out_enabled) +{ + return EN_getcontrolenabled(_defaultProject, index, out_enabled); +} + +int DLLEXPORT ENsetcontrolenabled(int index, int enabled) +{ + return EN_setcontrolenabled(_defaultProject, index, enabled); +} + /******************************************************************** Rule-Based Controls Functions @@ -888,3 +899,14 @@ int DLLEXPORT ENsetrulepriority(int index, EN_API_FLOAT_TYPE priority) { return EN_setrulepriority(_defaultProject, index, priority); } + + +int DLLEXPORT ENgetruleenabled(int index, int *out_enabled) +{ + return EN_getruleenabled(_defaultProject, index, out_enabled); +} + +int DLLEXPORT ENsetruleenabled(int index, int enabled) +{ + return EN_setruleenabled(_defaultProject, index, enabled); +} diff --git a/src/hydraul.c b/src/hydraul.c index 93907ec..9e5aadb 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -557,6 +557,10 @@ int controls(Project *pr) { // Make sure that link is defined control = &net->Control[i]; + if (control->isEnabled == DISABLED) + { + continue; + } reset = 0; if ( (k = control->Link) <= 0) continue; link = &net->Link[k]; @@ -729,7 +733,10 @@ int controltimestep(Project *pr, long *tstep) { t = 0; control = &net->Control[i]; - + if (control->isEnabled == DISABLED) + { + continue; + } // Control depends on a tank level if ( (n = control->Node) > 0) { diff --git a/src/input3.c b/src/input3.c index 6dfd1fe..304a77d 100644 --- a/src/input3.c +++ b/src/input3.c @@ -943,6 +943,7 @@ int controldata(Project *pr) control->Time = (long)(3600.0 * time); if (ctltype == TIMEOFDAY) control->Time %= SECperDAY; control->Grade = level; + control->isEnabled = ENABLED; return 0; } diff --git a/src/project.c b/src/project.c index aba50c8..0877427 100644 --- a/src/project.c +++ b/src/project.c @@ -1232,6 +1232,7 @@ int setcontrol(EN_Project p, int type, int linkIndex, double setting, control->Setting = s; control->Time = t; control->Grade = lvl; + control->isEnabled = ENABLED; return 0; } diff --git a/src/rules.c b/src/rules.c index 4eaf3f5..bb4f269 100644 --- a/src/rules.c +++ b/src/rules.c @@ -527,6 +527,11 @@ int checkrules(Project *pr, long dt) rules->ActionList = NULL; for (i = 1; i <= net->Nrules; i++) { + // skip if the rule is disabled + if (net->Rule[i].isEnabled == DISABLED) + { + continue; + } // If premises true, add THEN clauses to action list if (evalpremises(pr, i) == TRUE) { @@ -684,6 +689,7 @@ void newrule(Project *pr) rule->ThenActions = NULL; rule->ElseActions = NULL; rule->priority = 0.0; + rule->isEnabled = ENABLED; pr->rules.LastPremise = NULL; pr->rules.LastThenAction = NULL; pr->rules.LastElseAction = NULL; diff --git a/src/types.h b/src/types.h index ae837ab..6b333c4 100755 --- a/src/types.h +++ b/src/types.h @@ -196,6 +196,11 @@ typedef enum { TIMEOFDAY // act when time of day occurs } ControlType; +typedef enum { + DISABLED, + ENABLED +} EnabledType; + typedef enum { XHEAD, // pump cannot deliver head (closed) TEMPCLOSED, // temporarily closed @@ -474,6 +479,7 @@ typedef struct // Control Statement double Setting; // new link setting StatusType Status; // new link status ControlType Type; // control type + EnabledType isEnabled; // control enabled? } Scontrol; typedef struct // Field Object of Report Table @@ -525,6 +531,7 @@ typedef struct // Control Rule Structure { char label[MAXID+1]; // rule label double priority; // priority level + EnabledType isEnabled; // is the rule enabled? Spremise *Premises; // list of premises Saction *ThenActions; // list of THEN actions Saction *ElseActions; // list of ELSE actions From d0ab568a5d6a27b454bc0b65e146cfe04ca95783 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Wed, 13 Sep 2023 09:14:57 -0400 Subject: [PATCH 130/233] using int/bool convention instead of new enum type --- include/epanet2_enums.h | 3 +++ src/epanet.c | 4 ++-- src/hydraul.c | 4 ++-- src/input3.c | 2 +- src/project.c | 2 +- src/rules.c | 4 ++-- src/types.h | 9 ++------- 7 files changed, 13 insertions(+), 15 deletions(-) diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index dec12f5..557f48f 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -505,4 +505,7 @@ typedef enum { #define EN_SET_CLOSED -1.E10 //!< Link set closed indicator #define EN_SET_OPEN 1.E10 //!< Link set open indicator +#define EN_FALSE 0 // boolean false +#define EN_TRUE 1 // boolean true + #endif //EPANET2_ENUMS_H diff --git a/src/epanet.c b/src/epanet.c index d2c4d11..bbbfb62 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -5283,7 +5283,7 @@ int DLLEXPORT EN_setcontrolenabled(EN_Project p, int index, int enabled) Scontrol *control; // Check for valid arguments - if (enabled != ENABLED && enabled != DISABLED) + if (enabled != TRUE && enabled != FALSE) return 202; // illegal numeric value if (!p->Openflag) return 102; @@ -5742,7 +5742,7 @@ int DLLEXPORT EN_setruleenabled(EN_Project p, int index, int enabled) Srule *rule; // Check for valid arguments - if (enabled != ENABLED && enabled != DISABLED) + if (enabled != TRUE && enabled != FALSE) return 202; // illegal numeric value if (!p->Openflag) return 102; diff --git a/src/hydraul.c b/src/hydraul.c index 9e5aadb..96433f3 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -557,7 +557,7 @@ int controls(Project *pr) { // Make sure that link is defined control = &net->Control[i]; - if (control->isEnabled == DISABLED) + if (!control->isEnabled) { continue; } @@ -733,7 +733,7 @@ int controltimestep(Project *pr, long *tstep) { t = 0; control = &net->Control[i]; - if (control->isEnabled == DISABLED) + if (!control->isEnabled) { continue; } diff --git a/src/input3.c b/src/input3.c index 304a77d..713c07e 100644 --- a/src/input3.c +++ b/src/input3.c @@ -943,7 +943,7 @@ int controldata(Project *pr) control->Time = (long)(3600.0 * time); if (ctltype == TIMEOFDAY) control->Time %= SECperDAY; control->Grade = level; - control->isEnabled = ENABLED; + control->isEnabled = TRUE; return 0; } diff --git a/src/project.c b/src/project.c index 0877427..258b9b0 100644 --- a/src/project.c +++ b/src/project.c @@ -1232,7 +1232,7 @@ int setcontrol(EN_Project p, int type, int linkIndex, double setting, control->Setting = s; control->Time = t; control->Grade = lvl; - control->isEnabled = ENABLED; + control->isEnabled = TRUE; return 0; } diff --git a/src/rules.c b/src/rules.c index bb4f269..99d0a02 100644 --- a/src/rules.c +++ b/src/rules.c @@ -528,7 +528,7 @@ int checkrules(Project *pr, long dt) for (i = 1; i <= net->Nrules; i++) { // skip if the rule is disabled - if (net->Rule[i].isEnabled == DISABLED) + if (!net->Rule[i].isEnabled) { continue; } @@ -689,7 +689,7 @@ void newrule(Project *pr) rule->ThenActions = NULL; rule->ElseActions = NULL; rule->priority = 0.0; - rule->isEnabled = ENABLED; + rule->isEnabled = TRUE; pr->rules.LastPremise = NULL; pr->rules.LastThenAction = NULL; pr->rules.LastElseAction = NULL; diff --git a/src/types.h b/src/types.h index 6b333c4..ff7c359 100755 --- a/src/types.h +++ b/src/types.h @@ -196,11 +196,6 @@ typedef enum { TIMEOFDAY // act when time of day occurs } ControlType; -typedef enum { - DISABLED, - ENABLED -} EnabledType; - typedef enum { XHEAD, // pump cannot deliver head (closed) TEMPCLOSED, // temporarily closed @@ -479,7 +474,7 @@ typedef struct // Control Statement double Setting; // new link setting StatusType Status; // new link status ControlType Type; // control type - EnabledType isEnabled; // control enabled? + int isEnabled; // control enabled? } Scontrol; typedef struct // Field Object of Report Table @@ -531,7 +526,7 @@ typedef struct // Control Rule Structure { char label[MAXID+1]; // rule label double priority; // priority level - EnabledType isEnabled; // is the rule enabled? + int isEnabled; // is the rule enabled? Spremise *Premises; // list of premises Saction *ThenActions; // list of THEN actions Saction *ElseActions; // list of ELSE actions From 8b28307ecd0a06e88bb798f6f896dfdb77d05ac4 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Wed, 13 Sep 2023 09:18:08 -0400 Subject: [PATCH 131/233] clarifying documentation --- include/epanet2_2.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/epanet2_2.h b/include/epanet2_2.h index 2b44c1d..a25036c 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -1644,7 +1644,7 @@ typedef struct Project *EN_Project; @brief Gets the enabled status of a simple control. @param ph an EPANET project handle. @param index the control's index (starting from 1). - @param out_enabled the control will be either enabled or disabled. + @param out_enabled the control will be either EN_TRUE=enabled or EN_FALSE=disabled. @return an error code. */ int DLLEXPORT EN_getcontrolenabled(EN_Project ph, int index, int *out_enabled); @@ -1653,7 +1653,7 @@ typedef struct Project *EN_Project; @brief Sets the enabled status of a simple control. @param ph an EPANET project handle. @param index the control's index (starting from 1). - @param enabled set the control to either enabled or disabled. + @param enabled set the control to either EN_TRUE=enabled or EN_FALSE=disabled. @return an error code. */ int DLLEXPORT EN_setcontrolenabled(EN_Project ph, int index, int enabled); @@ -1845,7 +1845,7 @@ typedef struct Project *EN_Project; @brief Gets the enabled status of a rule-based control. @param ph an EPANET project handle. @param index the rule's index (starting from 1). - @param out_enabled the rule will be either enabled or disabled. + @param out_enabled the rule will be either EN_TRUE=enabled or EN_FALSE=disabled. @return an error code. */ int DLLEXPORT EN_getruleenabled(EN_Project ph, int index, int *out_enabled); @@ -1854,7 +1854,7 @@ typedef struct Project *EN_Project; @brief Sets the enabled status of a rule-based control. @param ph an EPANET project handle. @param index the rule's index (starting from 1). - @param enabled set the rule to either enabled or disabled. + @param enabled set the rule to either EN_TRUE=enabled or EN_FALSE=disabled. @return an error code. */ int DLLEXPORT EN_setruleenabled(EN_Project ph, int index, int enabled); From 0754d08721d017efb440cb0ae6239f87604f4a58 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Wed, 13 Sep 2023 14:30:57 -0400 Subject: [PATCH 132/233] Update ReleaseNotes2_3.md --- ReleaseNotes2_3.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index d4858c5..cb8f151 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -45,4 +45,6 @@ This document describes the changes and updates that have been made in version 2 - `EN_SET_CLOSED` and `EN_SET_OPEN` constants were added that can be used with `EN_setcontrol` to fix the status of pipes and valves to completely closed or completely open. - `EN_EMITTERFLOW` can now be used with `EN_getnodevalue` to retrieve a node's emitter flow rate. - `EN_STATUS_REPORT` can now be used with `EN_getoption` and `EN_setoption` to get or set the type of status report that EPANET will generate (`EN_NO_REPORT`, `EN_NORMAL_REPORT` or `EN_FULL_REPORT`). - - A possible parser error that could result in a Trace Node ID in an input file not being recognized was fixed. \ No newline at end of file + - A possible parser error that could result in a Trace Node ID in an input file not being recognized was fixed. + - Additional API functions for enabling/disabling controls and rules were added. + \ No newline at end of file From d1cad76a5bbf44242404fe3c8a05a450175b7fcf Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Wed, 13 Sep 2023 23:33:15 +0300 Subject: [PATCH 133/233] Update ReleaseNotes2_3.md add EN_VALVE_CURVE, EN_PCV_CURVE. Some typo fixes. --- ReleaseNotes2_3.md | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index cb8f151..5b91a45 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -10,13 +10,13 @@ This document describes the changes and updates that have been made in version 2 - The `EN_getlinkvalue` and `EN_setlinkvalue` functions were updated to get and set the value of `EN_GPV_CURVE`. - Negative pressure values for `EN_SETTING` are now permitted in the `EN_setlinkvalue` function. - The `EN_STARTTIME` parameter was added into the `EN_settimeparam` function. - - A `EN_DEMANDPATTERN` parameter was added as the index of the default time pattern used by demands with no specific pattern assigned. It can be set or retrieved with the `EN_setoption` and `EN_getoption` functions, respectively, and is saved to file when the `EN_saveinpfile` function is called. + - A `EN_DEMANDPATTERN` parameter was added as the index of the default time pattern used by demands with no specific pattern assigned. It can be set or retrieved with the `EN_setoption` and `EN_getoption` functions, respectively, and is saved to the file when the `EN_saveinpfile` function is called. - The `EN_getaveragepatternvalue` function will now accept a pattern index of zero which represents the constant pattern assigned to junction demands by default. - The adjustment of a tank's minimum volume (`Vmin`) when its parameters are changed using `EN_setnodevalue` or `EN_settankdata` has been corrected. - - A pump whose status is set to CLOSED in the input file now also has its speed setting set to zero which allows a simple pressure control activate the pump correctly. - - A failure to raise an error condition for a non-positve pipe roughness in the input file has been fixed. + - A pump whose status is set to CLOSED in the input file now also has its speed setting set to zero which allows a simple pressure control to activate the pump correctly. + - A failure to raise an error condition for a non-positive pipe roughness in the input file has been fixed. - The calculation of head loss gradient for low flow conditions was corrected. - - Improved updating and convergence tests were added to pressure dependent demand analysis. + - Improved updating and convergence tests were added to pressure-dependent demand analysis. - Improved checks to prevent outflow from empty tanks or inflow to full (non-overflow) tanks, including the case where a link is connected to a pair of tanks, were added. - The CI regression test protocol was modified by: - changing the absolute tolerance used to compare the closeness of test results to benchmark values from 0 to 0.0001 @@ -24,9 +24,12 @@ This document describes the changes and updates that have been made in version 2 - dropping the check for identical status report content since it prevents accepting code changes that produce more accurate solutions in fewer iterations. - A possible loss of network connectivity when evaluating a Pressure Sustaining Valve was prevented. - Having the implied loss coefficient for an active Flow Control Valve be less than its fully opened value was prevented. - - A new type of valve, a Positional Control Valve (PCV), was added that uses a valve characteristic curve to relate its loss coefficient to its fraction open setting. - - A new set of functions have been added to get information about upcoming time step events. Users will now see what type of event is going to cause the end of a time step to occur. See `ENtimetonextevent` and `EN_timetonextevent`. - - A new set of functions have been added to allow users to set a reporting callback function. The user-supplied function will recieve all output normally directed to the report file. + - A new type of valve, a Positional Control Valve (PCV), was added that uses a valve characteristic curve to relate its loss coefficient to its fraction open setting (`EN_PCV`). + - `EN_VALVE_CURVE` can now be used with the `EN_getcurvetype` and `EN_setcurvetype` to get or set the valve position curve. + - The index of a Positional Control Valve (PCV) was added to the list of editable Link Properties using the symbolic constant name `EN_PCV_CURVE`. + - `EN_PCV_CURVE` can now be used with the `EN_getlinkvalue` and `EN_setlinkvalue` to get or set a PCV's curve. + - A new set of functions has been added to get information about upcoming time step events. Users will now see what type of event is going to cause the end of a time step to occur. See `ENtimetonextevent` and `EN_timetonextevent`. + - A new set of functions has been added to allow users to set a reporting callback function. The user-supplied function will receive all output normally directed to the report file. - A `EN_EMITBACKFLOW` option was added that either allows emitters to have reverse flow through them (the default) or not. - An incorrect tank elevation value set using `EN_settankdata` with SI units has been fixed. - The `EN_INITSETTING` option in function `EN_getlinkvalue` will now return `EN_MISSING` for a valve whose initial status is fixed to `EN_OPEN` or `EN_CLOSED`. @@ -37,14 +40,14 @@ This document describes the changes and updates that have been made in version 2 - A new error code `263 - node is not a tank` is returned when `EN_settankdata` or `EN_setnodevalue` attempts to set a tank-only parameter for a non-tank node. - The function `EN_saveinpfile` was corrected for simple controls on GPV's by saving their status instead of the index of their head loss curve. - Support was added for Conan dependency manager. - - The internal Qualflag variable is now adjusted when an EPANET input file has a QUALITY option not equal to NONE and simulation duration of zero. + - The internal Qualflag variable is now adjusted when an EPANET input file has a QUALITY option not equal to NONE and a simulation duration of zero. - Support was added for cubic meters per second (`EN_CMS`) flow units. - - An EPANET input file with a simple timer control that has more than 9 input tokens no longer results in an incorrect hour setting. + - An EPANET input file with simple timer control that has more than 9 input tokens no longer results in an incorrect hour setting. - Errors in node and link vertex coordinates are now ignored when reading an EPANET input file. - Only non-zero demands are now included in the `[DEMANDS]` section of the input file produced by `EN_saveinpfile`. - `EN_SET_CLOSED` and `EN_SET_OPEN` constants were added that can be used with `EN_setcontrol` to fix the status of pipes and valves to completely closed or completely open. - `EN_EMITTERFLOW` can now be used with `EN_getnodevalue` to retrieve a node's emitter flow rate. - `EN_STATUS_REPORT` can now be used with `EN_getoption` and `EN_setoption` to get or set the type of status report that EPANET will generate (`EN_NO_REPORT`, `EN_NORMAL_REPORT` or `EN_FULL_REPORT`). - A possible parser error that could result in a Trace Node ID in an input file not being recognized was fixed. - - Additional API functions for enabling/disabling controls and rules were added. - \ No newline at end of file + - Additional API functions for enabling/disabling controls and rules were added (`EN_getcontrolenabled`, `EN_setcontrolenabled`, `EN_getruleenabled`, `EN_setruleenabled`). + From 8a84668f6390b404f2670eab1c7c57ed32f9e18e Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Thu, 14 Sep 2023 13:35:05 +0300 Subject: [PATCH 134/233] Updated header files following #751 Updated header files following #751 --- include/epanet2.bas | 30 +++++++++++++++++++----------- include/epanet2.cs | 17 +++++++++++++++-- include/epanet2.def | 6 +++++- include/epanet2.pas | 10 +++++++++- include/epanet2.vb | 9 ++++++++- 5 files changed, 56 insertions(+), 16 deletions(-) diff --git a/include/epanet2.bas b/include/epanet2.bas index 663c732..fd57d96 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -5,7 +5,7 @@ Attribute VB_Name = "Module1" 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) -'Last updated on 07/18/2023 +'Last updated on 09/14/2023 ' These are codes used by the DLL functions Public Const EN_ELEVATION = 0 ' Node parameters @@ -35,7 +35,7 @@ Public Const EN_TANK_KBULK = 23 Public Const EN_TANKVOLUME = 24 Public Const EN_MAXVOLUME = 25 Public Const EN_CANOVERFLOW = 26 -Public Const EN_DEMANDDEFICIT = 27 +Public Const EN_DEMANDDEFICIT = 27 Public Const EN_NODE_INCONTROL = 28 Public Const EN_EMITTERFLOW = 29 @@ -64,7 +64,7 @@ Public Const EN_PUMP_ECOST = 21 Public Const EN_PUMP_EPAT = 22 Public Const EN_LINK_INCONTROL = 23 Public Const EN_GPV_CURVE = 24 -Public Const EN_PCV_CURVE= 25 +Public Const EN_PCV_CURVE = 25 Public Const EN_DURATION = 0 ' Time parameters Public Const EN_HYDSTEP = 1 @@ -96,7 +96,7 @@ Public Const EN_LINK = 1 Public Const EN_TIMEPAT = 2 Public Const EN_CURVE = 3 Public Const EN_CONTROL = 4 -Public Const EN_RULE = 5 +Public Const EN_RULE = 5 Public Const EN_NODECOUNT = 0 ' Component counts Public Const EN_TANKCOUNT = 1 @@ -122,7 +122,7 @@ Public Const EN_GPV = 8 Public Const EN_PCV = 9 Public Const EN_CLOSED = 0 ' Link status types -Public Const EN_OPEN = 1 +Public Const EN_OPEN = 1 Public Const EN_PUMP_XHEAD = 0 ' Pump state types Public Const EN_PUMP_CLOSED = 2 @@ -175,7 +175,7 @@ Public Const EN_GLOBALPRICE = 9 Public Const EN_GLOBALPATTERN = 10 Public Const EN_DEMANDCHARGE = 11 Public Const EN_SP_GRAVITY = 12 -Public Const EN_SP_VISCOS = 13 +Public Const EN_SP_VISCOS = 13 Public Const EN_UNBALANCED = 14 Public Const EN_CHECKFREQ = 15 Public Const EN_MAXCHECK = 16 @@ -269,9 +269,12 @@ Public Const EN_STEP_WQ = 2 Public Const EN_STEP_TANKEVENT = 3 Public Const EN_STEP_CONTROLEVENT = 4 -Public Const EN_MISSING As Double = -1.0E10 -Public Const EN_SET_CLOSED As Double = -1.0E10 -Public Const EN_SET_OPEN As Double = 1.0E10 +Public Const EN_MISSING As Double = -10000000000# +Public Const EN_SET_CLOSED As Double = -10000000000# +Public Const EN_SET_OPEN As Double = 10000000000# + +Public Const EN_FALSE = 0 ' boolean false +Public Const EN_TRUE = 1 ' boolean true 'These are the external functions that comprise the DLL @@ -355,7 +358,7 @@ Public Const EN_SET_OPEN As Double = 1.0E10 Declare Function ENgetdemandindex Lib "epanet2.dll" (ByVal nodeIndex As Long, ByVal demandName As String, demandIndex As Long) As Long Declare Function ENgetnumdemands Lib "epanet2.dll" (ByVal nodeIndex As Long, numDemands As Long) As Long Declare Function ENgetbasedemand Lib "epanet2.dll" (ByVal nodeIndex As Long, ByVal demandIndex As Long, value As Single) As Long - Declare Function ENsetbasedemand Lib "epanet2.dll" (ByVal nodeIndex As Long, ByVal demandIndex As Long, ByVal BaseDemand As Single) As Long + Declare Function ENsetbasedemand Lib "epanet2.dll" (ByVal nodeIndex As Long, ByVal demandIndex As Long, ByVal baseDemand As Single) As Long Declare Function ENgetdemandpattern Lib "epanet2.dll" (ByVal nodeIndex As Long, ByVal demandIndex As Long, patIndex As Long) As Long Declare Function ENsetdemandpattern Lib "epanet2.dll" (ByVal nodeIndex As Long, ByVal demandIndex As Long, ByVal patIndex As Long) As Long Declare Function ENgetdemandname Lib "epanet2.dll" (ByVal nodeIndex As Long, ByVal demandIndex As Long, ByVal demandName As String) As Long @@ -415,7 +418,9 @@ Public Const EN_SET_OPEN As Double = 1.0E10 Declare Function ENdeletecontrol Lib "epanet2.dll" (ByVal index As Long) As Long Declare Function ENgetcontrol Lib "epanet2.dll" (ByVal index As Long, type_ As Long, linkIndex As Long, setting As Single, nodeIndex As Long, level As Single) As Long Declare Function ENsetcontrol Lib "epanet2.dll" (ByVal index As Long, ByVal type_ As Long, ByVal linkIndex As Long, ByVal setting As Single, ByVal nodeIndex As Long, ByVal level As Single) As Long - + Declare Function ENgetcontrolenabled Lib "epanet2.dll" (ByVal index As Long, out_enabled As Long) As Long + Declare Function ENsetcontrolenabled Lib "epanet2.dll" (ByVal index As Long, ByVal enabled As Long) As Long + 'Rule-Based Control Functions Declare Function ENaddrule Lib "epanet2.dll" (ByVal rule As String) As Long Declare Function ENdeleterule Lib "epanet2.dll" (ByVal index As Long) As Long @@ -431,3 +436,6 @@ Public Const EN_SET_OPEN As Double = 1.0E10 Declare Function ENsetthenaction Lib "epanet2.dll" (ByVal ruleIndex As Long, ByVal actionIndex As Long, ByVal linkIndex As Long, ByVal status As Long, ByVal setting As Single) As Long Declare Function ENgetelseaction Lib "epanet2.dll" (ByVal ruleIndex As Long, ByVal actionIndex As Long, linkIndex As Long, status As Long, setting As Single) As Long Declare Function ENsetelseaction Lib "epanet2.dll" (ByVal ruleIndex As Long, ByVal actionIndex As Long, ByVal linkIndex As Long, ByVal status As Long, ByVal setting As Single) As Long + Declare Function ENgetruleenabled Lib "epanet2.dll" (ByVal index As Long, out_enabled As Long) As Long + Declare Function ENsetruleenabled Lib "epanet2.dll" (ByVal index As Long, ByVal enabled As Long) As Long + diff --git a/include/epanet2.cs b/include/epanet2.cs index 0a6fedc..95c99d4 100644 --- a/include/epanet2.cs +++ b/include/epanet2.cs @@ -3,7 +3,7 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; //epanet2.cs[By Oscar Vegas] -//Last updated on 07/18/2023 +//Last updated on 09/14/2023 //Declarations of functions in the EPANET PROGRAMMERs TOOLKIT //(EPANET2.DLL) for use with C# @@ -269,7 +269,9 @@ namespace EpanetCSharpLibrary public const double EN_MISSING = -1.0E10; public const double EN_SET_CLOSED = -1.0E10 public const double EN_SET_OPEN = 1.0E10 - + + public const int EN_FALSE = 0 // boolean false + public const int EN_TRUE = 1 // boolean true #region Epanet Imports @@ -629,6 +631,12 @@ namespace EpanetCSharpLibrary [DllImport(EPANETDLL, EntryPoint = "ENsetcontrol")] public static extern int ENsetcontrol(int index, int type, int linkIndex, float setting, int nodeIndex, float level); + [DllImport(EPANETDLL, EntryPoint = "ENgetcontrolenabled")] + public static extern int ENgetcontrolenabled(int index, int out_enabled); + + [DllImport(EPANETDLL, EntryPoint = "ENsetcontrolenabled")] + public static extern int ENsetcontrolenabled(int index, int enabled); + //Rule-Based Control Functions [DllImport(EPANETDLL, EntryPoint = "ENaddrule")] @@ -673,6 +681,11 @@ namespace EpanetCSharpLibrary [DllImport(EPANETDLL, EntryPoint = "ENsetelseaction")] public static extern int ENsetelseaction(int ruleIndex, int actionIndex, int linkIndex, int status, float setting); + [DllImport(EPANETDLL, EntryPoint = "ENgetruleenabled")] + public static extern int ENgetruleenabled(int index, int out_enabled); + + [DllImport(EPANETDLL, EntryPoint = "ENsetruleenabled")] + public static extern int ENsetruleenabled(int index, int enabled); #endregion } diff --git a/include/epanet2.def b/include/epanet2.def index d72da8e..a2e9413 100644 --- a/include/epanet2.def +++ b/include/epanet2.def @@ -131,4 +131,8 @@ EXPORTS ENstepQ = _ENstepQ@4 ENusehydfile = _ENusehydfile@4 ENwriteline = _ENwriteline@4 - ENtimetonextevent = _ENtimetonextevent@12 \ No newline at end of file + ENtimetonextevent = _ENtimetonextevent@12 + ENgetcontrolenabled = _ENgetcontrolenabled@8 + ENsetcontrolenabled = _ENsetcontrolenabled@8 + ENgetruleenabled = _ENgetruleenabled@8 + ENsetruleenabled = _ENsetruleenabled@8 \ No newline at end of file diff --git a/include/epanet2.pas b/include/epanet2.pas index 3ae75ad..6a1aaf8 100644 --- a/include/epanet2.pas +++ b/include/epanet2.pas @@ -3,7 +3,7 @@ unit epanet2; { Declarations of imported procedures from the EPANET PROGRAMMERs TOOLKIT } { (EPANET2.DLL) } -{Last updated on 09/11/2023} +{Last updated on 09/14/2023} interface @@ -270,6 +270,10 @@ const EN_R_IS_OPEN = 1; { Rule-based control link status } EN_R_IS_CLOSED = 2; EN_R_IS_ACTIVE = 3; + + EN_FALSE = 0; { boolean false } + EN_TRUE = 1; { boolean true } + {$ifdef MSWINDOWS} EpanetLib = 'epanet2.dll'; @@ -416,6 +420,8 @@ const function ENdeletecontrol(Index: Integer): Integer; stdcall; external EpanetLib; function ENgetcontrol(Index: Integer; var Ctype: Integer; var Link: Integer; var Setting: Single; var Node: Integer; var Level: Single): Integer; stdcall; external EpanetLib; function ENsetcontrol(Index: Integer; Ctype: Integer; Link: Integer; Setting: Single; Node: Integer; Level: Single): Integer; stdcall; external EpanetLib; + function ENgetcontrolenabled(Index: Integer; out_enabled: Integer): Integer; stdcall; external EpanetLib; + function ENsetcontrolenabled(Index: Integer; var enabled: Integer): Integer; stdcall; external EpanetLib; {Rule-Based Control Functions} function ENaddrule(Rule: PAnsiChar): Integer; stdcall; external EpanetLib; @@ -440,6 +446,8 @@ const var Status: Integer; var Setting: Single): Integer; stdcall; external EpanetLib; function ENsetelseaction(RuleIndex: Integer; ActionIndex: Integer; LinkIndex: Integer; Status: Integer; Setting: Single): Integer; stdcall; external EpanetLib; + function ENgetruleenabled(Index: Integer; out_enabled: Integer): Integer; stdcall; external EpanetLib; + function ENsetruleenabled(Index: Integer; var enabled: Integer): Integer; stdcall; external EpanetLib; implementation diff --git a/include/epanet2.vb b/include/epanet2.vb index 1a6bf11..fe36c34 100644 --- a/include/epanet2.vb +++ b/include/epanet2.vb @@ -4,7 +4,7 @@ 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) for use with VB.Net. -'Last updated on 07/18/2023 +'Last updated on 09/14/2023 Imports System.Runtime.InteropServices Imports System.Text @@ -261,6 +261,9 @@ Public Const EN_MISSING As Double = -1.0E10 Public Const EN_SET_CLOSED As Double = -1.0E10 Public Const EN_SET_OPEN As Double = 1.0E10 +Public Const EN_FALSE = 0 ' boolean false +Public Const EN_TRUE = 1 ' boolean true + 'These are the external functions that comprise the DLL 'Project Functions @@ -399,6 +402,8 @@ Public Const EN_SET_OPEN As Double = 1.0E10 Declare Function ENdeletecontrol Lib "epanet2.dll" (ByVal index As Int32) As Int32 Declare Function ENgetcontrol Lib "epanet2.dll" (ByVal index As Int32, type_ As Int32, linkIndex As Int32, setting As Single, nodeIndex As Int32, level As Single) As Int32 Declare Function ENsetcontrol Lib "epanet2.dll" (ByVal index As Int32, ByVal type_ As Int32, ByVal linkIndex As Int32, ByVal setting As Single, ByVal nodeIndex As Int32, ByVal level As Single) As Int32 + Declare Function ENgetcontrolenabled Lib "epanet2.dll" (ByVal index As Int32, out_enabled As Int32) As Int32 + Declare Function ENsetcontrolenabled Lib "epanet2.dll" (ByVal index As Int32, ByVal enabled As Int32) As Int32 'Rule-Based Control Functions Declare Function ENaddrule Lib "epanet2.dll" (ByVal rule As String) As Int32 @@ -415,5 +420,7 @@ Public Const EN_SET_OPEN As Double = 1.0E10 Declare Function ENsetthenaction Lib "epanet2.dll" (ByVal ruleIndex As Int32, ByVal actionIndex As Int32, ByVal linkIndex As Int32, ByVal status As Int32, ByVal setting As Single) As Int32 Declare Function ENgetelseaction Lib "epanet2.dll" (ByVal ruleIndex As Int32, ByVal actionIndex As Int32, linkIndex As Int32, status As Int32, setting As Single) As Int32 Declare Function ENsetelseaction Lib "epanet2.dll" (ByVal ruleIndex As Int32, ByVal actionIndex As Int32, ByVal linkIndex As Int32, ByVal status As Int32, ByVal setting As Single) As Int32 + Declare Function ENgetruleenabled Lib "epanet2.dll" (ByVal index As Int32, out_enabled As Int32) As Int32 + Declare Function ENsetruleenabled Lib "epanet2.dll" (ByVal index As Int32, ByVal enabled As Int32) As Int32 End Module From cfc06321a67ee60f0905c57cf62e589aec6219ac Mon Sep 17 00:00:00 2001 From: Luke Butler Date: Thu, 14 Sep 2023 16:00:34 -0400 Subject: [PATCH 135/233] Remove recursion in getclosedlink MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The function getclosedlink in report.c uses recursion to find closed links when reporting on disconnections. In very large networks, it’s possible for the recursion to exhaust the memory on the call stack which then causes EPANET to crash. If a loop is used instead of recursion, EPANET will not crash with very large disconnections --- ReleaseNotes2_3.md | 1 + src/report.c | 50 +++++++++++++++++++++++++++++++++------------- 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index cb8f151..2cf6f87 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -47,4 +47,5 @@ This document describes the changes and updates that have been made in version 2 - `EN_STATUS_REPORT` can now be used with `EN_getoption` and `EN_setoption` to get or set the type of status report that EPANET will generate (`EN_NO_REPORT`, `EN_NORMAL_REPORT` or `EN_FULL_REPORT`). - A possible parser error that could result in a Trace Node ID in an input file not being recognized was fixed. - Additional API functions for enabling/disabling controls and rules were added. + - Updated the internal function `getclosedlink` in report.c to use a loop instead of recursion to prevent a stack overflow during the analysis of very large disconnections. \ No newline at end of file diff --git a/src/report.c b/src/report.c index 14f55cf..31e0649 100644 --- a/src/report.c +++ b/src/report.c @@ -45,7 +45,7 @@ static void writeenergy(Project *); static int writeresults(Project *); static int disconnected(Project *); static void marknodes(Project *, int, int *, char *); -static void getclosedlink(Project *, int, char *); +static void getclosedlink(Project *, int, char *, int *); static void writelimits(Project *, int, int); static int checklimits(Report *, double *, int, int); static char *fillstr(char *, char, int); @@ -1287,7 +1287,7 @@ int disconnected(Project *pr) clocktime(rpt->Atime, time->Htime)); writeline(pr, pr->Msg); } - getclosedlink(pr, j, marked); + getclosedlink(pr, j, marked, nodelist); } // Free allocated memory @@ -1350,11 +1350,12 @@ void marknodes(Project *pr, int m, int *nodelist, char *marked) } } -void getclosedlink(Project *pr, int i, char *marked) +void getclosedlink(Project *pr, int i, char *marked, int *stack) /* **---------------------------------------------------------------- ** Input: i = junction index ** marked[] = marks nodes already examined +** stack[] = stack to hold nodes to examine ** Output: None. ** Purpose: Determines if a closed link connects to junction i. **---------------------------------------------------------------- @@ -1365,20 +1366,41 @@ void getclosedlink(Project *pr, int i, char *marked) int j, k; Padjlist alink; + int top = 0; + + // Mark the current junction as examined and push onto stack marked[i] = 2; - for (alink = net->Adjlist[i]; alink != NULL; alink = alink->next) - { - k = alink->link; - j = alink->node; - if (marked[j] == 2) continue; - if (marked[j] == 1) - { - sprintf(pr->Msg, WARN03c, net->Link[k].ID); - writeline(pr, pr->Msg); - return; + stack[top] = i; + + while (top >= 0) { + i = stack[top--]; + alink = net->Adjlist[i]; + + // Iterate through each link adjacent to the current node + while (alink != NULL) { + k = alink->link; + j = alink->node; + + // Skip nodes that have already been examined + if (marked[j] == 2) { + alink = alink->next; + continue; + } + + // If a closed link is found, return and display a warning message + if (marked[j] == 1) { + sprintf(pr->Msg, WARN03c, net->Link[k].ID); + writeline(pr, pr->Msg); + return; + } + + // Mark the node as examined and push it onto the stack + marked[j] = 2; + stack[++top] = j; + alink = alink->next; } - else getclosedlink(pr, j, marked); } + } void writelimits(Project *pr, int j1, int j2) From 05c0528862a100f6cc3b1fd7f1651d01812fe536 Mon Sep 17 00:00:00 2001 From: Luke Butler Date: Fri, 15 Sep 2023 11:53:02 -0400 Subject: [PATCH 136/233] Update EN_setcurvetype to support EN_VALVE_CURVE --- src/epanet.c | 2 +- tests/test_valve.cpp | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index bbbfb62..10bb485 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -4907,7 +4907,7 @@ int DLLEXPORT EN_setcurvetype(EN_Project p, int index, int type) Network *net = &p->network; if (!p->Openflag) return 102; if (index < 1 || index > net->Ncurves) return 206; - if (type < 0 || type > EN_GENERIC_CURVE) return 251; + if (type < 0 || type > EN_VALVE_CURVE) return 251; net->Curve[index].Type = type; return 0; } diff --git a/tests/test_valve.cpp b/tests/test_valve.cpp index 925ebea..d024007 100644 --- a/tests/test_valve.cpp +++ b/tests/test_valve.cpp @@ -28,7 +28,7 @@ BOOST_FIXTURE_TEST_CASE(test_PCV_valve, FixtureOpenClose) double x[] = { 0.0, 25., 50., 75., 100. }; double y[] = {0.0, 8.9, 18.4, 40.6, 100.0}; double v; - int linkIndex, curveIndex; + int linkIndex, curveIndex, curveType; // Make steady state run error = EN_settimeparam(ph, EN_DURATION, 0); @@ -50,6 +50,11 @@ BOOST_FIXTURE_TEST_CASE(test_PCV_valve, FixtureOpenClose) BOOST_REQUIRE(error == 0); error = EN_setcurve(ph, curveIndex, x, y, npts); BOOST_REQUIRE(error == 0); + error = EN_setcurvetype(ph, curveIndex, EN_VALVE_CURVE); + BOOST_REQUIRE(error == 0); + error = EN_getcurvetype(ph, curveIndex, &curveType); + BOOST_REQUIRE(error == 0); + BOOST_REQUIRE(curveType == EN_VALVE_CURVE); // Assign curve & initial setting to PCV error = EN_setlinkvalue(ph, linkIndex, EN_PCV_CURVE, curveIndex); From 984e6b7fb1161bc75508d5645fe9841b95d25d1a Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Mon, 25 Sep 2023 09:23:50 +0300 Subject: [PATCH 137/233] Update ReleaseNotes2_3.md Thanks @lbutler for the suggestions. Feel free to make changes! --- ReleaseNotes2_3.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 5b91a45..854d123 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -6,8 +6,8 @@ This document describes the changes and updates that have been made in version 2 - The check for at least two nodes, one tank/reservoir and no unconnected junction nodes was moved from `EN_open` to `EN_openH` and `EN_openQ` so that partial network data files could be opened by the toolkit. - A `EN_setcurvetype` function was added to allow API clients to set a curve's type (e.g., `EN_PUMP_CURVE,` `EN_VOLUME_CURVE,` etc.). - A `EN_setvertex` function was added to allow API clients to change the coordinates of a single link vertex. - - The index of a General Purpose Valve's (GPV's) head loss curve was added to the list of editable Link Properties using the symbolic constant name `EN_GPV_CURVE`. - - The `EN_getlinkvalue` and `EN_setlinkvalue` functions were updated to get and set the value of `EN_GPV_CURVE`. + - The indices of a General Purpose Valve (GPV) and a Positional Control Valve (PCV) were added to the list of editable Link Properties using the symbolic constant names `EN_GPV_CURVE` and `EN_PCV_CURVE`, respectively. + - The `EN_getlinkvalue` and `EN_setlinkvalue` functions were updated to get and set the values of `EN_GPV_CURVE` and `EN_PCV_CURVE`. - Negative pressure values for `EN_SETTING` are now permitted in the `EN_setlinkvalue` function. - The `EN_STARTTIME` parameter was added into the `EN_settimeparam` function. - A `EN_DEMANDPATTERN` parameter was added as the index of the default time pattern used by demands with no specific pattern assigned. It can be set or retrieved with the `EN_setoption` and `EN_getoption` functions, respectively, and is saved to the file when the `EN_saveinpfile` function is called. @@ -24,11 +24,9 @@ This document describes the changes and updates that have been made in version 2 - dropping the check for identical status report content since it prevents accepting code changes that produce more accurate solutions in fewer iterations. - A possible loss of network connectivity when evaluating a Pressure Sustaining Valve was prevented. - Having the implied loss coefficient for an active Flow Control Valve be less than its fully opened value was prevented. - - A new type of valve, a Positional Control Valve (PCV), was added that uses a valve characteristic curve to relate its loss coefficient to its fraction open setting (`EN_PCV`). + - A new type of valve, a Positional Control Valve (PCV), was added. It uses a valve characteristic curve to relate its loss coefficient to a percentage open setting (parameter - `EN_PCV`). - `EN_VALVE_CURVE` can now be used with the `EN_getcurvetype` and `EN_setcurvetype` to get or set the valve position curve. - - The index of a Positional Control Valve (PCV) was added to the list of editable Link Properties using the symbolic constant name `EN_PCV_CURVE`. - - `EN_PCV_CURVE` can now be used with the `EN_getlinkvalue` and `EN_setlinkvalue` to get or set a PCV's curve. - - A new set of functions has been added to get information about upcoming time step events. Users will now see what type of event is going to cause the end of a time step to occur. See `ENtimetonextevent` and `EN_timetonextevent`. + - A new set of functions has been added to get information about upcoming time step events. Users will now see what type of event is going to cause the end of a time step to occur. See `EN_timetonextevent`. - A new set of functions has been added to allow users to set a reporting callback function. The user-supplied function will receive all output normally directed to the report file. - A `EN_EMITBACKFLOW` option was added that either allows emitters to have reverse flow through them (the default) or not. - An incorrect tank elevation value set using `EN_settankdata` with SI units has been fixed. From 10d5079d750ab6a8b2070bb20778346afacc37ff Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 4 Oct 2023 09:53:05 -0400 Subject: [PATCH 138/233] Add EN_openX function EN_openX allows an EPANET input file to be opened even if it has errors. This required re-arranging code, mainly in input3.c, so that default values are assigned to an object before its input line is parsed. --- include/epanet2.bas | 3 +- include/epanet2.cs | 5 +- include/epanet2.def | 3 +- include/epanet2.h | 5 +- include/epanet2.pas | 3 +- include/epanet2.vb | 3 +- include/epanet2_2.h | 22 +- src/epanet.c | 142 +++------- src/epanet2.c | 10 +- src/errors.dat | 3 + src/funcs.h | 9 +- src/hydraul.c | 13 +- src/input1.c | 92 ++----- src/input2.c | 217 +++++---------- src/input3.c | 649 +++++++++++++++++++++----------------------- src/project.c | 119 +++++--- src/rules.c | 7 +- src/validate.c | 413 ++++++++++++++++++++++++++++ 18 files changed, 994 insertions(+), 724 deletions(-) create mode 100644 src/validate.c diff --git a/include/epanet2.bas b/include/epanet2.bas index 663c732..985db05 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -5,7 +5,7 @@ Attribute VB_Name = "Module1" 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) -'Last updated on 07/18/2023 +'Last updated on 09/28/2023 ' These are codes used by the DLL functions Public Const EN_ELEVATION = 0 ' Node parameters @@ -280,6 +280,7 @@ Public Const EN_SET_OPEN As Double = 1.0E10 Declare Function ENepanet Lib "epanet2.dll" (ByVal inpFile As String, ByVal rptFile As String, ByVal outFile As String, ByVal pviewprog As Any) As Long Declare Function ENinit Lib "epanet2.dll" (ByVal rptFile As String, ByVal outFile As String, ByVal unitsType As Long, ByVal headlossType As Long) As Long Declare Function ENopen Lib "epanet2.dll" (ByVal inpFile As String, ByVal rptFile As String, ByVal outFile As String) As Long + Declare Function ENopenX Lib "epanet2.dll" (ByVal inpFile As String, ByVal rptFile As String, ByVal outFile As String) As Long Declare Function ENgettitle Lib "epanet2.dll" (ByVal line1 As String, ByVal line2 As String, ByVal line3 As String) As Long Declare Function ENsettitle Lib "epanet2.dll" (ByVal titleline1 As String, ByVal titleline2 As String, ByVal titleline3 As String) As Long Declare Function ENsaveinpfile Lib "epanet2.dll" (ByVal filename As String) As Long diff --git a/include/epanet2.cs b/include/epanet2.cs index 0a6fedc..70f8a38 100644 --- a/include/epanet2.cs +++ b/include/epanet2.cs @@ -3,7 +3,7 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; //epanet2.cs[By Oscar Vegas] -//Last updated on 07/18/2023 +//Last updated on 09/28/2023 //Declarations of functions in the EPANET PROGRAMMERs TOOLKIT //(EPANET2.DLL) for use with C# @@ -286,6 +286,9 @@ namespace EpanetCSharpLibrary [DllImport(EPANETDLL, EntryPoint = "ENopen")] public static extern int ENopen(string inpFile, string rptFile, string outFile); + [DllImport(EPANETDLL, EntryPoint = "ENopenX")] + public static extern int ENopenX(string inpFile, string rptFile, string outFile); + [DllImport(EPANETDLL, EntryPoint = "ENgettitle")] public static extern int ENgettitle(string titleline1, string titleline2, string titleline3); diff --git a/include/epanet2.def b/include/epanet2.def index d72da8e..fda32cc 100644 --- a/include/epanet2.def +++ b/include/epanet2.def @@ -131,4 +131,5 @@ EXPORTS ENstepQ = _ENstepQ@4 ENusehydfile = _ENusehydfile@4 ENwriteline = _ENwriteline@4 - ENtimetonextevent = _ENtimetonextevent@12 \ No newline at end of file + ENtimetonextevent = _ENtimetonextevent@12 + ENopenX = _ENopenX@12 diff --git a/include/epanet2.h b/include/epanet2.h index 25651f0..5cc6a41 100644 --- a/include/epanet2.h +++ b/include/epanet2.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/01/2020 + Last Updated: 09/28/2023 ****************************************************************************** */ @@ -73,6 +73,9 @@ extern "C" { int DLLEXPORT ENopen(const char *inpFile, const char *rptFile, const char *outFile); + int DLLEXPORT ENopenX(const char *inpFile, const char *rptFile, + const char *outFile); + int DLLEXPORT ENgettitle(char *line1, char *line2, char *line3); int DLLEXPORT ENsettitle(const char *line1, const char *line2, const char *line3); diff --git a/include/epanet2.pas b/include/epanet2.pas index 3ae75ad..6daaea0 100644 --- a/include/epanet2.pas +++ b/include/epanet2.pas @@ -3,7 +3,7 @@ unit epanet2; { Declarations of imported procedures from the EPANET PROGRAMMERs TOOLKIT } { (EPANET2.DLL) } -{Last updated on 09/11/2023} +{Last updated on 09/28/2023} interface @@ -281,6 +281,7 @@ const function ENepanet(F1: PAnsiChar; F2: PAnsiChar; F3: PAnsiChar; F4: Pointer): Integer; stdcall; external EpanetLib; function ENinit(F2: PAnsiChar; F3: PAnsiChar; UnitsType: Integer; HeadlossType: Integer): Integer; stdcall; external EpanetLib; function ENopen(F1: PAnsiChar; F2: PAnsiChar; F3: PAnsiChar): Integer; stdcall; external EpanetLib; + function ENopenX(F1: PAnsiChar; F2: PAnsiChar; F3: PAnsiChar): Integer; stdcall; external EpanetLib; function ENgetcount(Code: Integer; var Count: Integer): Integer; stdcall; external EpanetLib; function ENgettitle(Line1: PAnsiChar; Line2: PAnsiChar; Line3: PAnsiChar): Integer; stdcall; external EpanetLib; function ENsettitle(Line1: PAnsiChar; Line2: PAnsiChar; Line3: PAnsiChar): Integer; stdcall; external EpanetLib; diff --git a/include/epanet2.vb b/include/epanet2.vb index 1a6bf11..8d944da 100644 --- a/include/epanet2.vb +++ b/include/epanet2.vb @@ -4,7 +4,7 @@ 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) for use with VB.Net. -'Last updated on 07/18/2023 +'Last updated on 09/28/2023 Imports System.Runtime.InteropServices Imports System.Text @@ -268,6 +268,7 @@ Public Const EN_SET_OPEN As Double = 1.0E10 Declare Function ENepanet Lib "epanet2.dll" (ByVal inpFile As String, ByVal rptFile As String, ByVal outFile As String, ByVal pviewprog As Any) As Int32 Declare Function ENinit Lib "epanet2.dll" (ByVal rptFile As String, ByVal outFile As String, ByVal unitsType As Int32, ByVal headlossType As Int32) As Int32 Declare Function ENopen Lib "epanet2.dll" (ByVal inpFile As String, ByVal rptFile As String, ByVal outFile As String) As Int32 + Declare Function ENopenX Lib "epanet2.dll" (ByVal inpFile As String, ByVal rptFile As String, ByVal outFile As String) As Int32 Declare Function ENgettitle Lib "epanet2.dll" (ByVal titleline1 As String, ByVal titleline2 As String, ByVal titleline3 As String) As Int32 Declare Function ENsettitle Lib "epanet2.dll" (ByVal titleline1 As String, ByVal titleline2 As String, ByVal titleline3 As String) As Int32 Declare Function ENsaveinpfile Lib "epanet2.dll" (ByVal filename As String) As Int32 diff --git a/include/epanet2_2.h b/include/epanet2_2.h index a25036c..5a3c3af 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -11,7 +11,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/01/2020 + Last Updated: 09/28/2023 ****************************************************************************** */ @@ -113,7 +113,7 @@ typedef struct Project *EN_Project; int unitsType, int headLossType); /** - @brief Opens an EPANET input file & reads in network data. + @brief Reads an EPANET input file with no errors allowed. @param ph an EPANET project handle. @param inpFile the name of an existing EPANET-formatted input file. @param rptFile the name of a report file to be created (or "" if not needed). @@ -121,11 +121,27 @@ typedef struct Project *EN_Project; @return an error code. This function should be called immediately after ::EN_createproject if an EPANET-formatted - input file will be used to supply network data. + input file will be used to supply network data. If errors are detected then the project is + not opened and will not accept toolkit function calls. */ int DLLEXPORT EN_open(EN_Project ph, const char *inpFile, const char *rptFile, const char *outFile); + /** + @brief Reads an EPANET input file with errors allowed. + @param ph an EPANET project handle. + @param inpFile the name of an existing EPANET-formatted input file. + @param rptFile the name of a report file to be created (or "" if not needed). + @param outFile the name of a binary output file to be created (or "" if not needed). + @return an error code. + + This function should be called immediately after ::EN_createproject if an EPANET-formatted + input file will be used to supply network data. If formatting errors are detected (error + code = 200) then the project remains open and will accept toolkit function calls. + */ + int DLLEXPORT EN_openX(EN_Project ph, const char *inpFile, const char *rptFile, + const char *outFile); + /** @brief Retrieves the title lines of the project @param ph an EPANET project handle. diff --git a/src/epanet.c b/src/epanet.c index bbbfb62..354a51c 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 07/17/2023 + Last Updated: 09/28/2023 ****************************************************************************** */ @@ -179,61 +179,30 @@ int DLLEXPORT EN_open(EN_Project p, const char *inpFile, const char *rptFile, ** outFile = name of binary output file ** Output: none ** Returns: error code - ** Purpose: opens an EPANET input file & reads in network data + ** Purpose: reads an EPANET input file with no errors allowed. + **---------------------------------------------------------------- + */ + { + writewin(p->viewprog, FMT100); + return openproject(p, inpFile, rptFile, outFile, FALSE); + } + +int DLLEXPORT EN_openX(EN_Project p, const char *inpFile, + const char *rptFile, const char *outFile) +/*---------------------------------------------------------------- + ** Input: inpFile = name of input file + ** rptFile = name of report file + ** outFile = name of binary output file + ** Output: none + ** Returns: error code + ** Purpose: reads an EPANET input file with errors allowed. **---------------------------------------------------------------- */ { - int errcode = 0; + writewin(p->viewprog, FMT100); + return openproject(p, inpFile, rptFile, outFile, TRUE); +} - // Set system flags - p->Openflag = FALSE; - p->hydraul.OpenHflag = FALSE; - p->quality.OpenQflag = FALSE; - p->outfile.SaveHflag = FALSE; - p->outfile.SaveQflag = FALSE; - p->Warnflag = FALSE; - p->report.Messageflag = TRUE; - p->report.Rptflag = 1; - - // Initialize data arrays to NULL - initpointers(p); - - // Open input & report files - ERRCODE(openfiles(p, inpFile, rptFile, outFile)); - if (errcode > 0) - { - errmsg(p, errcode); - return errcode; - } - - // Allocate memory for project's data arrays - writewin(p->viewprog, FMT100); - ERRCODE(netsize(p)); - ERRCODE(allocdata(p)); - - // Read input data - ERRCODE(getdata(p)); - - // Close input file - if (p->parser.InFile != NULL) - { - fclose(p->parser.InFile); - p->parser.InFile = NULL; - } - - // If using previously saved hydraulics file then open it - if (p->outfile.Hydflag == USE) ERRCODE(openhydfile(p)); - - // Write input summary to report file - if (!errcode) - { - if (p->report.Summaryflag) writesummary(p); - writetime(p, FMT104); - p->Openflag = TRUE; - } - else errmsg(p, errcode); - return errcode; -} int DLLEXPORT EN_gettitle(EN_Project p, char *line1, char *line2, char *line3) /*---------------------------------------------------------------- @@ -359,7 +328,6 @@ int DLLEXPORT EN_close(EN_Project p) */ { // Free all project data - if (p->Openflag) writetime(p, FMT105); freedata(p); // Close output file @@ -495,7 +463,11 @@ int DLLEXPORT EN_openH(EN_Project p) // Open hydraulics solver ERRCODE(openhyd(p)); - if (!errcode) p->hydraul.OpenHflag = TRUE; + if (!errcode) + { + p->hydraul.OpenHflag = TRUE; + writetime(p, FMT104); + } else errmsg(p, errcode); return errcode; } @@ -834,6 +806,7 @@ int DLLEXPORT EN_closeQ(EN_Project p) closequal(p); p->quality.OpenQflag = FALSE; closeoutfile(p); + writetime(p, FMT105); return 0; } @@ -1929,7 +1902,7 @@ int DLLEXPORT EN_addnode(EN_Project p, const char *id, int nodeType, int *index) if (control->Node > net->Njuncs - 1) control->Node += 1; } // adjust indices of tanks/reservoirs in Rule premises (see RULES.C) - adjusttankrules(p); + adjusttankrules(p, 1); } // Actions taken when a new Tank/Reservoir is added @@ -4086,12 +4059,7 @@ int DLLEXPORT EN_setlinkvalue(EN_Project p, int index, int property, double valu pumpIndex = findpump(&p->network, index); net->Pump[pumpIndex].Ptype = CONST_HP; net->Pump[pumpIndex].Hcurve = 0; - net->Link[index].Km = value; - updatepumpparams(p, pumpIndex); - net->Pump[pumpIndex].R /= Ucf[POWER]; - net->Pump[pumpIndex].Q0 /= Ucf[FLOW]; - net->Pump[pumpIndex].Qmax /= Ucf[FLOW]; - net->Pump[pumpIndex].Hmax /= Ucf[HEAD]; + net->Link[index].Km = value / Ucf[POWER]; } break; @@ -4380,10 +4348,7 @@ int DLLEXPORT EN_setheadcurveindex(EN_Project p, int linkIndex, int curveIndex) { Network *net = &p->network; - double *Ucf = p->Ucf; int pumpIndex; - int oldCurveIndex; - int newCurveType; int err = 0; Spump *pump; @@ -4393,43 +4358,12 @@ int DLLEXPORT EN_setheadcurveindex(EN_Project p, int linkIndex, int curveIndex) if (PUMP != net->Link[linkIndex].Type) return 0; if (curveIndex < 0 || curveIndex > net->Ncurves) return 206; - // Save values that need to be restored in case new curve is invalid - pumpIndex = findpump(net, linkIndex); - pump = &p->network.Pump[pumpIndex]; - oldCurveIndex = pump->Hcurve; - newCurveType = p->network.Curve[curveIndex].Type; - // Assign the new curve to the pump - pump->Ptype = NOCURVE; + pumpIndex = findpump(net, linkIndex); + pump = &net->Pump[pumpIndex]; pump->Hcurve = curveIndex; - if (curveIndex == 0) return 0; - - // Update the pump's head curve parameters (which also changes - // the new curve's Type to PUMP_CURVE) - err = updatepumpparams(p, pumpIndex); - - // If the parameter updating failed (new curve was not a valid pump curve) - // restore the pump's original curve and its parameters - if (err > 0) - { - p->network.Curve[curveIndex].Type = newCurveType; - pump->Ptype = NOCURVE; - pump->Hcurve = oldCurveIndex; - if (oldCurveIndex == 0) return err; - updatepumpparams(p, pumpIndex); - } - - // Convert the units of the updated pump parameters to feet and cfs - if (pump->Ptype == POWER_FUNC) - { - pump->H0 /= Ucf[HEAD]; - pump->R *= (pow(Ucf[FLOW], pump->N) / Ucf[HEAD]); - } - pump->Q0 /= Ucf[FLOW]; - pump->Qmax /= Ucf[FLOW]; - pump->Hmax /= Ucf[HEAD]; - - return err; + net->Link[linkIndex].Km = 0.0; + return 0; } /******************************************************************** @@ -4907,7 +4841,7 @@ int DLLEXPORT EN_setcurvetype(EN_Project p, int index, int type) Network *net = &p->network; if (!p->Openflag) return 102; if (index < 1 || index > net->Ncurves) return 206; - if (type < 0 || type > EN_GENERIC_CURVE) return 251; + if (type < 0 || type > EN_VALVE_CURVE) return 251; net->Curve[index].Type = type; return 0; } @@ -4981,9 +4915,7 @@ int DLLEXPORT EN_setcurvevalue(EN_Project p, int curveIndex, int pointIndex, // Insert new point into curve curve->X[n] = x; curve->Y[n] = y; - - // Adjust parameters for pumps using curve as a head curve - return adjustpumpparams(p, curveIndex); + return 0; } int DLLEXPORT EN_getcurve(EN_Project p, int index, char *id, int *nPoints, @@ -5055,9 +4987,7 @@ int DLLEXPORT EN_setcurve(EN_Project p, int index, double *xValues, curve->X[j] = xValues[j]; curve->Y[j] = yValues[j]; } - - // Adjust parameters for pumps using curve as a head curve - return adjustpumpparams(p, index); + return 0; } /******************************************************************** diff --git a/src/epanet2.c b/src/epanet2.c index d814892..7d7cd50 100644 --- a/src/epanet2.c +++ b/src/epanet2.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/01/2020 + Last Updated: 09/28/2023 ****************************************************************************** */ @@ -99,6 +99,14 @@ int DLLEXPORT ENopen(const char *inpFile, const char *rptFile, const char *outFi return errcode; } +int DLLEXPORT ENopenX(const char *inpFile, const char *rptFile, const char *outFile) +{ + int errcode = 0; + createtmpfiles(); + errcode = EN_openX(_defaultProject, inpFile, rptFile, outFile); + return errcode; +} + int DLLEXPORT ENgettitle(char *line1, char *line2, char *line3) { return EN_gettitle(_defaultProject, line1, line2, line3) ; diff --git a/src/errors.dat b/src/errors.dat index 65cb39a..35ecf7b 100644 --- a/src/errors.dat +++ b/src/errors.dat @@ -14,6 +14,7 @@ DAT(120,"cannot solve water quality transport equations") // These errors apply only to an input file DAT(200,"one or more errors in input file") DAT(201,"syntax error") +DAT(299,"invalid section keyword") // These errors apply to both an input file and to API functions DAT(202,"illegal numeric value") @@ -43,6 +44,8 @@ DAT(225,"invalid lower/upper levels for tank") DAT(226,"no head curve or power rating for pump") DAT(227,"invalid head curve for pump") DAT(230,"nonincreasing x-values for curve") +DAT(231,"no data provided for curve") +DAT(232,"no data provided for pattern") DAT(233,"network has unconnected nodes") DAT(234,"network has an unconnected node with ID: ") diff --git a/src/funcs.h b/src/funcs.h index a6d5150..8910c36 100755 --- a/src/funcs.h +++ b/src/funcs.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 04/29/2023 + Last Updated: 09/28/2023 ****************************************************************************** */ #ifndef FUNCS_H @@ -19,6 +19,7 @@ void initpointers(Project *); int allocdata(Project *); void freedata(Project *); +int openproject(Project *, const char *, const char *, const char *, int); int openfiles(Project *, const char *, const char *,const char *); int openhydfile(Project *); int openoutfile(Project *); @@ -48,7 +49,6 @@ void freelinkvertices(Slink *); void adjustpatterns(Network *, int); void adjustcurves(Network *, int); -int adjustpumpparams(Project *, int); int resizecurve(Scurve *, int); int setcontrol(Project *, int, int, double, int, double, Scontrol *); @@ -70,7 +70,7 @@ int getdata(Project *); void setdefaults(Project *); void initreport(Report *); void adjustdata(Project *); -int inittanks(Project *); +void inittanks(Project *); void initunits(Project *); void convertunits(Project *); @@ -78,7 +78,6 @@ void convertunits(Project *); int netsize(Project *); int readdata(Project *); -int updatepumpparams(Project *, int); int findmatch(char *, char *[]); int match(const char *, const char *); int gettokens(char *, char **, int, char *); @@ -120,7 +119,7 @@ void freerules(Project *); int ruledata(Project *); void ruleerrmsg(Project *); void adjustrules(Project *, int, int); -void adjusttankrules(Project *); +void adjusttankrules(Project *, int); Spremise *getpremise(Spremise *, int); Saction *getaction(Saction *, int); int writerule(Project *, FILE *, int); diff --git a/src/hydraul.c b/src/hydraul.c index 96433f3..7d1718b 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 08/02/2023 + Last Updated: 09/28/2023 ****************************************************************************** */ @@ -23,6 +23,7 @@ const double QZERO = 1.e-6; // Equivalent to zero flow in cfs // Imported functions +extern int validateproject(Project *); extern int createsparse(Project *); extern void freesparse(Project *); extern int hydsolve(Project *, int *, double *); @@ -52,10 +53,10 @@ int openhyd(Project *pr) int i; int errcode = 0; Slink *link; - - // Check for too few nodes & no fixed grade nodes - if (pr->network.Nnodes < 2) errcode = 223; - else if (pr->network.Ntanks == 0) errcode = 224; + + // Check for valid project data (see VALIDATE.C) + errcode = validateproject(pr); + if (errcode > 0) return errcode; // Allocate memory for sparse matrix structures (see SMATRIX.C) ERRCODE(createsparse(pr)); @@ -72,6 +73,7 @@ int openhyd(Project *pr) link = &pr->network.Link[i]; initlinkflow(pr, i, link->Status, link->Kc); } + else closehyd(pr); return errcode; } @@ -1144,3 +1146,4 @@ void resetpumpflow(Project *pr, int i) if (pump->Ptype == CONST_HP) pr->hydraul.LinkFlow[i] = pump->Q0; } + diff --git a/src/input1.c b/src/input1.c index c734432..ee40d1e 100644 --- a/src/input1.c +++ b/src/input1.c @@ -7,7 +7,7 @@ Description: retrieves network data from an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 02/05/2023 +Last Updated: 09/28/2023 ****************************************************************************** */ @@ -40,6 +40,8 @@ Last Updated: 02/05/2023 // Defined in ENUMSTXT.H extern char *Fldname[]; extern char *RptFlowUnitsTxt[]; +extern void reindextanks(Project *pr); + int getdata(Project *pr) /* @@ -58,13 +60,18 @@ int getdata(Project *pr) // Read in network data rewind(pr->parser.InFile); - ERRCODE(readdata(pr)); - + errcode = readdata(pr); + // Adjust data and convert it to internal units - if (!errcode) adjustdata(pr); - if (!errcode) initunits(pr); - ERRCODE(inittanks(pr)); - if (!errcode) convertunits(pr); + // (error code 200 means there are non-fatal errors in input file) + if (errcode == 0 || errcode == 200) + { + reindextanks(pr); + adjustdata(pr); + inittanks(pr); + initunits(pr); + convertunits(pr); + } return errcode; } @@ -328,11 +335,11 @@ void adjustdata(Project *pr) if (qual->Qualflag == NONE) rpt->Field[QUALITY].Enabled = FALSE; } -int inittanks(Project *pr) +void inittanks(Project *pr) /* **--------------------------------------------------------------- ** Input: none -** Output: returns error code +** Output: none ** Purpose: initializes volumes in non-cylindrical tanks **--------------------------------------------------------------- */ @@ -341,7 +348,7 @@ int inittanks(Project *pr) int i, j, n = 0; double a; - int errcode = 0, levelerr; + int errcode = 0; char errmsg[MAXMSG+1] = ""; Stank *tank; Scurve *curve; @@ -351,47 +358,23 @@ int inittanks(Project *pr) tank = &net->Tank[j]; if (tank->A == 0.0) continue; // Skip reservoirs - // Check for valid lower/upper tank levels - levelerr = 0; - if (tank->H0 > tank->Hmax || - tank->Hmin > tank->Hmax || - tank->H0 < tank->Hmin - ) levelerr = 1; - - // Check that tank heights are within volume curve + // See if tank has a volume curve i = tank->Vcurve; if (i > 0) { curve = &net->Curve[i]; n = curve->Npts - 1; - if (tank->Hmin < curve->X[0] || tank->Hmax > curve->X[n]) - { - levelerr = 1; - } - else - { - // Find min., max., and initial volumes from curve - tank->Vmin = interp(curve->Npts, curve->X, curve->Y, tank->Hmin); - tank->Vmax = interp(curve->Npts, curve->X, curve->Y, tank->Hmax); - tank->V0 = interp(curve->Npts, curve->X, curve->Y, tank->H0); + // Find min., max., and initial volumes from curve + tank->Vmin = interp(curve->Npts, curve->X, curve->Y, tank->Hmin); + tank->Vmax = interp(curve->Npts, curve->X, curve->Y, tank->Hmax); + tank->V0 = interp(curve->Npts, curve->X, curve->Y, tank->H0); - // Find a "nominal" diameter for tank - a = (curve->Y[n] - curve->Y[0]) / (curve->X[n] - curve->X[0]); - tank->A = sqrt(4.0 * a / PI); - } - } - - // Report error in levels if found - if (levelerr) - { - sprintf(pr->Msg, "Error 225: %s node %s", geterrmsg(225, errmsg), - net->Node[tank->Node].ID); - writeline(pr, pr->Msg); - errcode = 200; + // Find a "nominal" diameter for tank + a = (curve->Y[n] - curve->Y[0]) / (curve->X[n] - curve->X[0]); + tank->A = sqrt(4.0 * a / PI); } } - return errcode; } void initunits(Project *pr) @@ -530,7 +513,6 @@ void convertunits(Project *pr) Snode *node; Stank *tank; Slink *link; - Spump *pump; Scontrol *control; // Convert nodal elevations & initial WQ @@ -615,29 +597,9 @@ void convertunits(Project *pr) else if (link->Type == PUMP) { - // Convert units for pump curve parameters - i = findpump(net, k); - pump = &net->Pump[i]; - if (pump->Ptype == CONST_HP) - { - // For constant hp pump, convert kw to hp - if (parser->Unitsflag == SI) pump->R /= pr->Ucf[POWER]; - } - else - { - // For power curve pumps, convert shutoff head and flow coeff. - if (pump->Ptype == POWER_FUNC) - { - pump->H0 /= pr->Ucf[HEAD]; - pump->R *= (pow(pr->Ucf[FLOW], pump->N) / pr->Ucf[HEAD]); - } - - // Convert flow range & max. head units - pump->Q0 /= pr->Ucf[FLOW]; - pump->Qmax /= pr->Ucf[FLOW]; - pump->Hmax /= pr->Ucf[HEAD]; - } + link->Km /= pr->Ucf[POWER]; } + else { // For flow control valves, convert flow setting diff --git a/src/input2.c b/src/input2.c index 0ece6fd..0810d7b 100644 --- a/src/input2.c +++ b/src/input2.c @@ -7,7 +7,7 @@ Description: reads and interprets network data from an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 02/03/2020 +Last Updated: 09/28/2023 ****************************************************************************** */ @@ -21,17 +21,13 @@ Last Updated: 02/03/2020 #include "hash.h" #include "text.h" -#define MAXERRS 10 // Max. input errors reported - extern char *SectTxt[]; // Input section keywords (see ENUMSTXT.H) // Exported functions -int addnodeID(Network *n, int, char *); -int addlinkID(Network *n, int, char *); - -// Imported functions -extern int powercurve(double, double, double, double, double, double *, - double *, double *); +int addnodeID(Network *, int, char *); +int addlinkID(Network *, int, char *); +int getunitsoption(Project *, char *); +int getheadlossoption(Project *, char *); // Local functions static int newline(Project *, int, char *); @@ -100,7 +96,11 @@ int netsize(Project *pr) if (sect == _END) break; continue; } - else continue; + else + { + sect = -1; + continue; + } } // Add to count of current object @@ -122,6 +122,12 @@ int netsize(Project *pr) errcode = addcurve(&pr->network, tok); parser->MaxCurves = pr->network.Ncurves; break; + case _OPTIONS: + if (match(tok, w_UNITS)) + getunitsoption(pr, strtok(line, SEPSTR)); + else if (match(tok, w_HEADLOSS)) + getheadlossoption(pr, strtok(line, SEPSTR)); + break; } if (errcode) break; } @@ -226,9 +232,11 @@ int readdata(Project *pr) } else { - inperrmsg(pr, 201, sect, line); + sect = -1; + parser->ErrTok = 0; errsum++; - break; + inperrmsg(pr, 299, sect, line); + continue; } } @@ -244,23 +252,13 @@ int readdata(Project *pr) errsum++; } } - else - { - errcode = 200; - break; - } + else continue; } - - // Stop if reach end of file or max. error count - if (errsum == MAXERRS) break; } // Check for errors if (errsum > 0) errcode = 200; - // Determine pump curve parameters - if (!errcode) errcode = getpumpparams(pr); - // Free input buffer free(parser->X); return errcode; @@ -307,6 +305,7 @@ int newline(Project *pr, int sect, char *line) if (ruledata(pr) > 0) { ruleerrmsg(pr); + deleterule(pr, pr->network.Nrules); return 200; } else return 0; @@ -333,127 +332,6 @@ int newline(Project *pr, int sect, char *line) return 201; } -int getpumpparams(Project *pr) -/* -**------------------------------------------------------------- -** Input: none -** Output: returns error code -** Purpose: computes pump curve coefficients for all pumps -**-------------------------------------------------------------- -*/ -{ - Network *net = &pr->network; - int i, k, errcode = 0; - char errmsg[MAXMSG+1]; - - for (i = 1; i <= net->Npumps; i++) - { - errcode = updatepumpparams(pr, i); - if (errcode) - { - k = net->Pump[i].Link; - sprintf(pr->Msg, "Error %d: %s %s", - errcode, geterrmsg(errcode, errmsg), net->Link[k].ID); - writeline(pr, pr->Msg); - return 200; - } - } - return 0; -} - -int updatepumpparams(Project *pr, int pumpindex) -/* -**------------------------------------------------------------- -** Input: pumpindex = index of a pump -** Output: returns error code -** Purpose: computes & checks a pump's head curve coefficients -**-------------------------------------------------------------- -*/ -{ - Network *net = &pr->network; - Spump *pump; - Scurve *curve; - - int m; - int curveindex; - int npts = 0; - int errcode = 0; - double a, b, c, h0 = 0.0, h1 = 0.0, h2 = 0.0, q1 = 0.0, q2 = 0.0; - - pump = &net->Pump[pumpindex]; - if (pump->Ptype == CONST_HP) // Constant Hp pump - { - pump->H0 = 0.0; - pump->R = -8.814 * net->Link[pump->Link].Km; - pump->N = -1.0; - pump->Hmax = BIG; // No head limit - pump->Qmax = BIG; // No flow limit - pump->Q0 = 1.0; // Init. flow = 1 cfs - return errcode; - } - - else if (pump->Ptype == NOCURVE) // Pump curve specified - { - curveindex = pump->Hcurve; - if (curveindex == 0) return 226; - curve = &net->Curve[curveindex]; - curve->Type = PUMP_CURVE; - npts = curve->Npts; - - // Generic power function curve - if (npts == 1) - { - pump->Ptype = POWER_FUNC; - q1 = curve->X[0]; - h1 = curve->Y[0]; - h0 = 1.33334 * h1; - q2 = 2.0 * q1; - h2 = 0.0; - } - - // 3 point curve with shutoff head - else if (npts == 3 && curve->X[0] == 0.0) - { - pump->Ptype = POWER_FUNC; - h0 = curve->Y[0]; - q1 = curve->X[1]; - h1 = curve->Y[1]; - q2 = curve->X[2]; - h2 = curve->Y[2]; - } - - // Custom pump curve - else - { - pump->Ptype = CUSTOM; - for (m = 1; m < npts; m++) - { - if (curve->Y[m] >= curve->Y[m - 1]) return 227; - } - pump->Qmax = curve->X[npts - 1]; - pump->Q0 = (curve->X[0] + pump->Qmax) / 2.0; - pump->Hmax = curve->Y[0]; - } - - // Compute shape factors & limits of power function curves - if (pump->Ptype == POWER_FUNC) - { - if (!powercurve(h0, h1, h2, q1, q2, &a, &b, &c)) return 227; - else - { - pump->H0 = -a; - pump->R = -b; - pump->N = c; - pump->Q0 = q1; - pump->Qmax = pow((-a / b), (1.0 / c)); - pump->Hmax = h0; - } - } - } - return 0; -} - - int addnodeID(Network *net, int n, char *id) /* **------------------------------------------------------------- @@ -564,6 +442,51 @@ int addcurve(Network *network, char *id) return 0; } +int getunitsoption(Project *pr, char *units) +/* +**------------------------------------------------------------- +** Input: units = name of flow units to be used +** Output: returns 1 if successful, 0 if not +** Purpose: sets the flows units to be used by a project. +**-------------------------------------------------------------- +*/ +{ + Parser *parser = &pr->parser; + if (match(units, w_CFS)) parser->Flowflag = CFS; + else if (match(units, w_GPM)) parser->Flowflag = GPM; + else if (match(units, w_AFD)) parser->Flowflag = AFD; + else if (match(units, w_MGD)) parser->Flowflag = MGD; + else if (match(units, w_IMGD)) parser->Flowflag = IMGD; + else if (match(units, w_LPS)) parser->Flowflag = LPS; + else if (match(units, w_LPM)) parser->Flowflag = LPM; + else if (match(units, w_CMH)) parser->Flowflag = CMH; + else if (match(units, w_CMD)) parser->Flowflag = CMD; + else if (match(units, w_MLD)) parser->Flowflag = MLD; + else if (match(units, w_CMS)) parser->Flowflag = CMS; + else if (match(units, w_SI)) parser->Flowflag = LPS; + else return 0; + if (parser->Flowflag >= LPS) parser->Unitsflag = SI; + else parser->Unitsflag = US; + return 1; +} + +int getheadlossoption(Project *pr, char *formula) +/* +**------------------------------------------------------------- +** Input: formula = name of head loss formula to be used +** Output: returns 1 if successful, 0 if not +** Purpose: sets the head loss formula to be used by a project. +**-------------------------------------------------------------- +*/ +{ + Hydraul *hyd = &pr->hydraul; + if (match(formula, w_HW)) hyd->Formflag = HW; + else if (match(formula, w_DW)) hyd->Formflag = DW; + else if (match(formula, w_CM)) hyd->Formflag = CM; + else return 0; + return 1; +} + int findmatch(char *line, char *keyword[]) /* **-------------------------------------------------------------- @@ -799,7 +722,11 @@ void inperrmsg(Project *pr, int err, int sect, char *line) else strcpy(tok, ""); // write error message to report file - sprintf(pr->Msg, "Error %d: %s %s in %s section:", + if (err == 299) + sprintf(pr->Msg, "Error %d: %s %s: section contents ignored.", + err, geterrmsg(err, errStr), tok); + else + sprintf(pr->Msg, "Error %d: %s %s in %s section:", err, geterrmsg(err, errStr), tok, SectTxt[sect]); writeline(pr, pr->Msg); diff --git a/src/input3.c b/src/input3.c index 713c07e..cac9f2e 100644 --- a/src/input3.c +++ b/src/input3.c @@ -7,7 +7,7 @@ Description: parses network data from a line of an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 09/11/2023 +Last Updated: 09/28/2023 ****************************************************************************** */ @@ -27,15 +27,15 @@ extern char *Fldname[]; extern char *DemandModelTxt[]; extern char *BackflowTxt[]; -// Exported functions -int powercurve(double, double, double, double, double, double *, double *, - double *); - // Imported Functions extern int addnodeID(Network *, int, char *); extern int addlinkID(Network *, int, char *); +extern int getunitsoption(Project *, char *); +extern int getheadlossoption(Project *, char *); // Local functions +static double gettokvalue(Project *, double, int, int *, int *); +static int getlinknodes(Project *, int *, int *); static int optionchoice(Project *, int); static int optionvalue(Project *, int); static int getpumpcurve(Project *, int); @@ -77,31 +77,52 @@ int juncdata(Project *pr) int p = 0; // time pattern index int n; // number of tokens int njuncs; // number of network junction nodes - double el, // elevation - y = 0.0; // base demand + double el = 0.0, // elevation + d = 0.0, // base demand + x; Snode *node; - int err = 0; + int errcode = 0; + int errtok = -1; // Add new junction to data base - n = parser->Ntokens; if (net->Nnodes == parser->MaxNodes) return 200; + errcode = addnodeID(net, net->Njuncs + 1, parser->Tok[0]); + if (errcode > 0) return setError(parser, 0, errcode); net->Njuncs++; net->Nnodes++; - njuncs = net->Njuncs; - err = addnodeID(net, net->Njuncs, parser->Tok[0]); - if (err) return setError(parser, 0, err); // Check for valid data - if (n < 2) return 201; - if (!getfloat(parser->Tok[1], &el)) return setError(parser, 1, 202); - if (n >= 3 && !getfloat(parser->Tok[2], &y)) return setError(parser, 2, 202); - if (n >= 4) + n = parser->Ntokens; + if (n > 1) + { + if (!getfloat(parser->Tok[1], &x)) + { + errcode = 202; + errtok = 1; + } + else el = x; + } + if (!errcode && n > 2) + { + if (!getfloat(parser->Tok[2], &x)) + { + errcode = 202; + errtok = 2; + } + else d = x; + } + if (!errcode && n > 3) { p = findpattern(net, parser->Tok[3]); - if (p < 0) return setError(parser, 3, 205); + if (p < 0) + { + errcode = 205; + errtok = 3; + } } // Save junction data + njuncs = net->Njuncs; node = &net->Node[njuncs]; node->X = MISSING; node->Y = MISSING; @@ -116,11 +137,14 @@ int juncdata(Project *pr) // Create a demand for the junction and use NodeDemand as an indicator // to be used when processing demands from the [DEMANDS] section - if (!adddemand(node, y, p, NULL)) return 101; - hyd->NodeDemand[njuncs] = y; + if (!adddemand(node, d, p, NULL)) return 101; + hyd->NodeDemand[njuncs] = d; + + // Return error code + if (errcode > 0) return setError(parser, errtok, errcode); return 0; } - + int tankdata(Project *pr) /* **-------------------------------------------------------------- @@ -131,7 +155,6 @@ int tankdata(Project *pr) ** [RESERVOIRS] ** id elev (pattern) ** [TANKS] -** id elev (pattern) ** id elev initlevel minlevel maxlevel diam (minvol vcurve) **-------------------------------------------------------------- */ @@ -155,68 +178,84 @@ int tankdata(Project *pr) Snode *node; Stank *tank; - int err = 0; + int errcode = 0; + int errtok = -1; + double x; // Add new tank to data base - n = parser->Ntokens; if (net->Ntanks == parser->MaxTanks || net->Nnodes == parser->MaxNodes) return 200; + i = parser->MaxJuncs + net->Ntanks + 1; + errcode = addnodeID(net, i, parser->Tok[0]); + if (errcode) return setError(parser, 0, errcode); net->Ntanks++; net->Nnodes++; - i = parser->MaxJuncs + net->Ntanks; - err = addnodeID(net, i, parser->Tok[0]); - if (err) return setError(parser, 0, err); - // Check for valid data - if (n < 2) return 201; - if (!getfloat(parser->Tok[1], &el)) return setError(parser, 1, 202); + n = parser->Ntokens; + if (n < 2) errcode = 201; + if (!errcode && !getfloat(parser->Tok[1], &x)) + { + errcode = 202; + errtok = 1; + } + else el = x; - // Tank is reservoir + // Node is a reservoir if (n <= 3) { // Head pattern supplied - if (n == 3) + if (n == 3 && !errcode) { pattern = findpattern(net, parser->Tok[2]); - if (pattern < 0) return setError(parser, 2, 205); - } - } - else if (n < 6) return 201; - - // Tank is a storage tank - else - { - if (!getfloat(parser->Tok[2], &initlevel)) return setError(parser, 2, 202); - if (!getfloat(parser->Tok[3], &minlevel)) return setError(parser, 3, 202); - if (!getfloat(parser->Tok[4], &maxlevel)) return setError(parser, 4, 202); - if (!getfloat(parser->Tok[5], &diam)) return setError(parser, 5, 202); - if (n >= 7 && !getfloat(parser->Tok[6], &minvol)) return setError(parser, 6, 202); - - // If volume curve supplied check it exists - if (n >= 8) - { - if (strlen(parser->Tok[7]) > 0 && *(parser->Tok[7]) != '*') + if (pattern < 0) { - curve = findcurve(net, parser->Tok[7]); - if (curve == 0) return setError(parser, 7, 206); - net->Curve[curve].Type = VOLUME_CURVE; + errcode = 205; + errtok = 2; } } - - // Parse overflow indicator if present - if (n >= 9) + } + + // Node is a storage tank + else if (!errcode) + { + if (n < 6) errcode = 201; + else { - if (match(parser->Tok[8], w_YES)) overflow = TRUE; - else if (match(parser->Tok[8], w_NO)) overflow = FALSE; - else return setError(parser, 8, 213); - } + // Read required data + initlevel = gettokvalue(pr, initlevel, 2, &errcode, &errtok); + minlevel = gettokvalue(pr, minlevel, 3, &errcode, &errtok); + maxlevel = gettokvalue(pr, maxlevel, 4, &errcode, &errtok); + diam = gettokvalue(pr, diam, 5, &errcode, &errtok); + if (n >= 7) minvol = gettokvalue(pr, minvol, 6, &errcode, &errtok); - if (initlevel < 0.0) return setError(parser, 2, 209); - if (minlevel < 0.0) return setError(parser, 3, 209); - if (maxlevel < 0.0) return setError(parser, 4, 209); - if (diam < 0.0) return setError(parser, 5, 209); - if (minvol < 0.0) return setError(parser, 6, 209); + // If volume curve supplied check it exists + if (!errcode && n >= 8) + { + if (strlen(parser->Tok[7]) > 0 && *(parser->Tok[7]) != '*') + { + curve = findcurve(net, parser->Tok[7]); + if (curve == 0) + { + errcode = 206; + errtok = 7; + } + else net->Curve[curve].Type = VOLUME_CURVE; + } + } + + // Read overflow indicator if present + if (!errcode && n >= 9) + { + if (match(parser->Tok[8], w_YES)) overflow = TRUE; + else if (match(parser->Tok[8], w_NO)) overflow = FALSE; + else + { + errcode = 213; + errtok = 8; + } + } + } } node = &net->Node[i]; tank = &net->Tank[net->Ntanks]; @@ -254,9 +293,38 @@ int tankdata(Project *pr) tank->Vcurve = curve; tank->MixModel = MIX1; // Completely mixed tank->V1frac = 1.0; // Mixing compartment size fraction + + // Return error code + if (errcode > 0) return setError(parser, errtok, errcode); return 0; } +double gettokvalue(Project *pr, double x, int itok, int *errcode, int *errtok) +/* +**-------------------------------------------------------------- +** Input: x = default numerical value +** itok = index into an array of string tokens +** Output: errcode = an error code or 0 if successful +** errtok = itok if an error occurs +** returns a numerical data value +** Purpose: converts a string token into a numerical value. +**-------------------------------------------------------------- +*/ +{ + Parser *parser = &pr->parser; + double result; + + if (*errcode) return x; + if (!getfloat(parser->Tok[itok], &result)) *errcode = 202; + else if (result < 0.0) *errcode = 209; + if (*errcode > 0) + { + result = x; + *errtok = itok; + } + return result; +} + int pipedata(Project *pr) /* **-------------------------------------------------------------- @@ -275,71 +343,101 @@ int pipedata(Project *pr) int j1, // Start-node index j2, // End-node index n; // # data items - double length, // Pipe length - diam, // Pipe diameter - rcoeff, // Roughness coeff. - lcoeff = 0.0; // Minor loss coeff - LinkType type = PIPE; // Link type - StatusType status = OPEN; // Link status + double x; Slink *link; - int err = 0; - - // Add new pipe to data base - n = parser->Ntokens; + int errcode = 0; + + // Check that end nodes exist if (net->Nlinks == parser->MaxLinks) return 200; - net->Npipes++; - net->Nlinks++; - err = addlinkID(net, net->Nlinks, parser->Tok[0]); - if (err) return setError(parser, 0, err); - - // Check for valid data - if (n < 6) return 201; + n = parser->Ntokens; + if (n < 3) return setError(parser, -1, errcode); if ((j1 = findnode(net, parser->Tok[1])) == 0) return setError(parser, 1, 203); if ((j2 = findnode(net, parser->Tok[2])) == 0) return setError(parser, 2, 203); if (j1 == j2) return setError(parser, 0, 222); - if (!getfloat(parser->Tok[3], &length)) return setError(parser, 3, 202); - if (length <= 0.0) return setError(parser, 3, 211); - if (!getfloat(parser->Tok[4], &diam)) return setError(parser, 4, 202); - if (diam <= 0.0) return setError(parser, 4, 211); - if (!getfloat(parser->Tok[5], &rcoeff)) return setError(parser, 5, 202); - if (rcoeff <= 0.0) return setError(parser, 5, 211); + // Add new pipe to data base + errcode = addlinkID(net, net->Nlinks+1, parser->Tok[0]); + if (errcode) return setError(parser, 0, errcode); + net->Npipes++; + net->Nlinks++; - // Either a loss coeff. or a status is supplied - if (n == 7) - { - if (match(parser->Tok[6], w_CV)) type = CVPIPE; - else if (match(parser->Tok[6], w_CLOSED)) status = CLOSED; - else if (match(parser->Tok[6], w_OPEN)) status = OPEN; - else if (!getfloat(parser->Tok[6], &lcoeff)) return setError(parser, 6, 202); - } - - // Both a loss coeff. and a status is supplied - if (n == 8) - { - if (!getfloat(parser->Tok[6], &lcoeff)) return setError(parser, 6, 202); - if (match(parser->Tok[7], w_CV)) type = CVPIPE; - else if (match(parser->Tok[7], w_CLOSED)) status = CLOSED; - else if (match(parser->Tok[7], w_OPEN)) status = OPEN; - else return setError(parser, 7, 213); - } - if (lcoeff < 0.0) return setError(parser, 6, 211); - - // Save pipe data + // Assign default data to pipe link = &net->Link[net->Nlinks]; link->N1 = j1; link->N2 = j2; - link->Len = length; - link->Diam = diam; - link->Kc = rcoeff; - link->Km = lcoeff; + + if (parser->Unitsflag == SI) + { + link->Len = 100.0; + link->Diam = 254.0; + } + else + { + link->Len = 330.0; + link->Diam = 10.0; + } + switch (pr->hydraul.Formflag) + { + case HW: link->Kc = 130; break; + case DW: link->Kc = 0.0005; break; + case CM: link->Kc = 0.01; break; + default: link->Kc = 1.0; + } + + link->Km = 0.0; link->Kb = MISSING; link->Kw = MISSING; - link->Type = type; - link->Status = status; + link->Type = PIPE; + link->Status = OPEN; link->Rpt = 0; link->ResultIndex = 0; link->Comment = xstrcpy(&link->Comment, parser->Comment, MAXMSG); + + // Parse data values from input tokens + if (n > 3) + { + if (!getfloat(parser->Tok[3], &x) || x <= 0.0) + return setError(parser, 3, 202); + link->Len = x; + } + if (n > 4) + { + if (!getfloat(parser->Tok[4], &x) || x <= 0.0) + return setError(parser, 4, 202); + link->Diam = x; + } + if (n > 5) + { + if (!getfloat(parser->Tok[5], &x) || x <= 0.0) + return setError(parser, 5, 202); + link->Kc = x; + } + + // Either a loss coeff. or a status is supplied + if (n > 6) + { + if (match(parser->Tok[6], w_CV)) link->Type = CVPIPE; + else if (match(parser->Tok[6], w_CLOSED)) link->Status = CLOSED; + else if (match(parser->Tok[6], w_OPEN)) link->Status = OPEN; + else + { + if (!getfloat(parser->Tok[6], &x) || x < 0.0) + return setError(parser, 6, 202); + link->Km = x; + } + } + + // Both a loss coeff. and a status is supplied + if (n > 7) + { + if (!getfloat(parser->Tok[6], &x) || x < 0.0) + return setError(parser, 6, 202); + link->Km = x; + if (match(parser->Tok[7], w_CV)) link->Type = CVPIPE; + else if (match(parser->Tok[7], w_CLOSED)) link->Status = CLOSED; + else if (match(parser->Tok[7], w_OPEN)) link->Status = OPEN; + else return setError(parser, 7, 213); + } return 0; } @@ -351,11 +449,6 @@ int pumpdata(Project *pr) ** Purpose: processes pump data ** Formats: ** [PUMP] -** (Version 1.x Format): -** id node1 node2 power -** id node1 node2 h1 q1 -** id node1 node2 h0 h1 q1 h2 q2 -** (Version 2 Format): ** id node1 node2 KEYWORD value {KEYWORD value ...} ** where KEYWORD = [POWER,HEAD,PATTERN,SPEED] **-------------------------------------------------------------- @@ -364,7 +457,7 @@ int pumpdata(Project *pr) Network *net = &pr->network; Parser *parser = &pr->parser; - int j, m, // Token array indexes + int m, // Token array indexes j1, // Start-node index j2, // End-node index n, // # data items @@ -372,24 +465,24 @@ int pumpdata(Project *pr) double y; Slink *link; Spump *pump; - int err = 0; - - /* Add new pump to data base */ - n = parser->Ntokens; + int errcode = 0; + + // Check that end nodes exist if (net->Nlinks == parser->MaxLinks || net->Npumps == parser->MaxPumps) return 200; - net->Nlinks++; - net->Npumps++; - err = addlinkID(net, net->Nlinks, parser->Tok[0]); - if (err) return setError(parser, 0, err); - - // Check for valid data - if (n < 3) return 201; + n = parser->Ntokens; + if (n < 3) return setError(parser, -1, errcode); if ((j1 = findnode(net, parser->Tok[1])) == 0) return setError(parser, 1, 203); if ((j2 = findnode(net, parser->Tok[2])) == 0) return setError(parser, 2, 203); if (j1 == j2) return setError(parser, 0, 222); - // Save pump data + // Add new pump to data base + errcode = addlinkID(net, net->Nlinks+1, parser->Tok[0]); + if (errcode) return setError(parser, 0, errcode); + net->Nlinks++; + net->Npumps++; + + // Assign default data to pump link = &net->Link[net->Nlinks]; pump = &net->Pump[net->Npumps]; @@ -415,28 +508,14 @@ int pumpdata(Project *pr) pump->Epat = 0; if (n < 4) return 0; - // If 4-th token is a number then input follows Version 1.x format - // so retrieve pump curve parameters - if (getfloat(parser->Tok[3], &parser->X[0])) - { - m = 1; - for (j = 4; j < n; j++) - { - if (!getfloat(parser->Tok[j], &parser->X[m])) return setError(parser, j, 202); - m++; - } - return (getpumpcurve(pr, m)); - } - - // Otherwise input follows Version 2 format - // so retrieve keyword/value pairs + // Retrieve keyword/value pairs m = 4; while (m < n) { if (match(parser->Tok[m - 1], w_POWER)) // Const. HP curve { - y = atof(parser->Tok[m]); - if (y <= 0.0) return setError(parser, m, 202); + if (!getfloat(parser->Tok[m], &y) || y <= 0.0) + return setError(parser, m, 202); pump->Ptype = CONST_HP; link->Km = y; } @@ -454,11 +533,11 @@ int pumpdata(Project *pr) } else if (match(parser->Tok[m - 1], w_SPEED)) // Speed setting { - if (!getfloat(parser->Tok[m], &y)) return setError(parser, m, 202); - if (y < 0.0) return setError(parser, m, 211); + if (!getfloat(parser->Tok[m], &y) || y < 0.0) + return setError(parser, m, 202); link->Kc = y; } - else return 201; + else return setError(parser, m-1, 201);; m = m + 2; // Move to next keyword token } return 0; @@ -485,74 +564,30 @@ int valvedata(Project *pr) n; // # data items char status = ACTIVE, // Valve status type; // Valve type - double diam = 0.0, // Valve diameter - setting, // Valve setting - lcoeff = 0.0; // Minor loss coeff. + double x; Slink *link; - int err = 0, + int errcode = 0, losscurve = 0; // Loss coeff. curve - // Add new valve to data base - n = parser->Ntokens; + // Check that end nodes exist if (net->Nlinks == parser->MaxLinks || net->Nvalves == parser->MaxValves) return 200; - net->Nvalves++; - net->Nlinks++; - err = addlinkID(net, net->Nlinks, parser->Tok[0]); - if (err) return setError(parser, 0, err); - - // Check for valid data - if (n < 6) - return 201; - if ((j1 = findnode(net, parser->Tok[1])) == 0) - return setError(parser, 1, 203); - if ((j2 = findnode(net, parser->Tok[2])) == 0) - return setError(parser, 2, 203); - if (j1 == j2) - return setError(parser, 0, 222); - - if (match(parser->Tok[4], w_PRV)) - type = PRV; - else if (match(parser->Tok[4], w_PSV)) - type = PSV; - else if (match(parser->Tok[4], w_PBV)) - type = PBV; - else if (match(parser->Tok[4], w_FCV)) - type = FCV; - else if (match(parser->Tok[4], w_TCV)) - type = TCV; - else if (match(parser->Tok[4], w_GPV)) - type = GPV; - else if (match(parser->Tok[4], w_PCV)) - type = PCV; - else - return setError(parser, 4, 213); - - if (!getfloat(parser->Tok[3], &diam)) return setError(parser, 3, 202); - if (diam <= 0.0) return setError(parser, 3, 211); - - // Find headloss curve for GPV - if (type == GPV) - { - c = findcurve(net, parser->Tok[5]); - if (c == 0) return setError(parser, 5, 206); - setting = c; - net->Curve[c].Type = HLOSS_CURVE; - status = OPEN; - } - else if (!getfloat(parser->Tok[5], &setting)) return setError(parser, 5, 202); - if (n >= 7 && !getfloat(parser->Tok[6], &lcoeff)) return setError(parser, 6, 202); + n = parser->Ntokens; + if (n < 5) return setError(parser, -1, errcode); + if ((j1 = findnode(net, parser->Tok[1])) == 0) return setError(parser, 1, 203); + if ((j2 = findnode(net, parser->Tok[2])) == 0) return setError(parser, 2, 203); + if (j1 == j2) return setError(parser, 0, 222); + + // Parse valve type + if (match(parser->Tok[4], w_PRV)) type = PRV; + else if (match(parser->Tok[4], w_PSV)) type = PSV; + else if (match(parser->Tok[4], w_PBV)) type = PBV; + else if (match(parser->Tok[4], w_FCV)) type = FCV; + else if (match(parser->Tok[4], w_TCV)) type = TCV; + else if (match(parser->Tok[4], w_GPV)) type = GPV; + else if (match(parser->Tok[4], w_PCV)) type = PCV; + else return setError(parser, 4, 213); - // Find loss coeff. curve for PCV - if (type == PCV && n >= 8) - { - c = findcurve(net, parser->Tok[7]); - if (c == 0) return setError(parser, 7, 206); - losscurve = c; - net->Curve[c].Type = VALVE_CURVE; - if (setting > 100.0) setting = 100.0; - } - // Check for illegal connections if (valvecheck(pr, net->Nlinks, type, j1, j2)) { @@ -561,23 +596,67 @@ int valvedata(Project *pr) else return setError(parser, -1, 220); } - // Save valve data + // Add new valve to data base + errcode = addlinkID(net, net->Nlinks+1, parser->Tok[0]); + if (errcode) return setError(parser, 0, errcode); + net->Nvalves++; + net->Nlinks++; + + // Assign default data to valve link = &net->Link[net->Nlinks]; link->N1 = j1; link->N2 = j2; - link->Diam = diam; + if (parser->Unitsflag == SI) link->Diam = 254.0; + else link->Diam = 10.0; link->Len = 0.0; - link->Kc = setting; - link->Km = lcoeff; + link->Kc = 0.0; + link->Km = 0.0; link->Kb = 0.0; link->Kw = 0.0; link->Type = type; - link->Status = status; + link->Status = ACTIVE; link->Rpt = 0; link->ResultIndex = 0; link->Comment = xstrcpy(&link->Comment, parser->Comment, MAXMSG); net->Valve[net->Nvalves].Link = net->Nlinks; - net->Valve[net->Nvalves].Curve = losscurve; + net->Valve[net->Nvalves].Curve = 0; + + // Parse data values + if (!getfloat(parser->Tok[3], &x) || x <= 0.0) + return setError(parser, 3, 202); + link->Diam = x; + if (n > 5) + { + // Find headloss curve for GPV + if (type == GPV) + { + c = findcurve(net, parser->Tok[5]); + if (c == 0) return setError(parser, 5, 206); + link->Kc = c; + net->Curve[c].Type = HLOSS_CURVE; + link->Status = OPEN; + } + else + { + if (!getfloat(parser->Tok[5], &x)) return setError(parser, 5, 202); + link->Kc = x; + } + } + if (n > 6) + { + if (!getfloat(parser->Tok[6], &x) || x < 0.0) + return setError(parser, 6, 202); + link->Km = x; + } + if (n > 7 && type == PCV) + { + // Find loss coeff. curve for PCV + c = findcurve(net, parser->Tok[7]); + if (c == 0) return setError(parser, 7, 206); + net->Valve[net->Nvalves].Curve = c; + net->Curve[c].Type = VALVE_CURVE; + if (link->Kc > 100.0) link->Kc = 100.0; + } return 0; } @@ -628,6 +707,7 @@ int patterndata(Project *pr) pattern->F = realloc(pattern->F, pattern->Length * sizeof(double)); // Add parsed multipliers to the pattern + for (j = 1; j <= n; j++) pattern->F[n1 + j - 1] = 1.0; for (j = 1; j <= n; j++) { if (!getfloat(parser->Tok[j], &x)) return setError(parser, j, 202); @@ -776,7 +856,6 @@ int demanddata(Project *pr) ** Purpose: processes node demand data ** Format: ** [DEMANDS] -** MULTIPLY factor ** node base_demand (pattern) ** ** NOTE: Demands entered in this section replace those @@ -798,15 +877,7 @@ int demanddata(Project *pr) if (n < 2) return 201; if (!getfloat(parser->Tok[1], &y)) return setError(parser, 1, 202); - // If MULTIPLY command, save multiplier - if (match(parser->Tok[0], w_MULTIPLY)) - { - if (y <= 0.0) return setError(parser, 1, 213); - else hyd->Dmult = y; - return 0; - } - - // Otherwise find node (and pattern) being referenced + // Find node (and pattern) being referenced if ((j = findnode(net, parser->Tok[0])) == 0) return setError(parser, 0, 203); if (j > net->Njuncs) return 0; if (n >= 3) @@ -1781,25 +1852,14 @@ int optionchoice(Project *pr, int n) if (match(parser->Tok[0], w_UNITS)) { if (n < 1) return 0; - else if (match(parser->Tok[1], w_CFS)) parser->Flowflag = CFS; - else if (match(parser->Tok[1], w_GPM)) parser->Flowflag = GPM; - else if (match(parser->Tok[1], w_AFD)) parser->Flowflag = AFD; - else if (match(parser->Tok[1], w_MGD)) parser->Flowflag = MGD; - else if (match(parser->Tok[1], w_IMGD)) parser->Flowflag = IMGD; - else if (match(parser->Tok[1], w_LPS)) parser->Flowflag = LPS; - else if (match(parser->Tok[1], w_LPM)) parser->Flowflag = LPM; - else if (match(parser->Tok[1], w_CMH)) parser->Flowflag = CMH; - else if (match(parser->Tok[1], w_CMD)) parser->Flowflag = CMD; - else if (match(parser->Tok[1], w_MLD)) parser->Flowflag = MLD; - else if (match(parser->Tok[1], w_CMS)) parser->Flowflag = CMS; - else if (match(parser->Tok[1], w_SI)) parser->Flowflag = LPS; - else return setError(parser, 1, 213); + if (!getunitsoption(pr, parser->Tok[1])) + return setError(parser, 1, 213); } // PRESSURE units else if (match(parser->Tok[0], w_PRESSURE)) { - if (n < 1) return 0; + if (n < 1) return 0; else if (match(parser->Tok[1], w_EXPONENT)) return -1; else if (match(parser->Tok[1], w_PSI)) parser->Pressflag = PSI; else if (match(parser->Tok[1], w_KPA)) parser->Pressflag = KPA; @@ -1811,10 +1871,8 @@ int optionchoice(Project *pr, int n) else if (match(parser->Tok[0], w_HEADLOSS)) { if (n < 1) return 0; - else if (match(parser->Tok[1], w_HW)) hyd->Formflag = HW; - else if (match(parser->Tok[1], w_DW)) hyd->Formflag = DW; - else if (match(parser->Tok[1], w_CM)) hyd->Formflag = CM; - else return setError(parser, 1, 213); + if (!getheadlossoption(pr, parser->Tok[1])) + return setError(parser, 1, 213); } // HYDRUALICS USE/SAVE file option @@ -2063,101 +2121,6 @@ int optionvalue(Project *pr, int n) return 0; } -int getpumpcurve(Project *pr, int n) -/* -**-------------------------------------------------------- -** Input: n = number of parameters for pump curve -** Output: returns error code -** Purpose: processes pump curve data for Version 1.1- -** style input data -** Notes: -** 1. Called by pumpdata() in INPUT3.C -** 2. Current link index & pump index of pump being -** processed is found in network variables Nlinks -** and Npumps, respectively -** 3. Curve data read from input line is found in -** parser's array X[0],...X[n-1] -**--------------------------------------------------------- -*/ -{ - Network *net = &pr->network; - Parser *parser = &pr->parser; - - double a, b, c, h0, h1, h2, q1, q2; - Spump *pump = &net->Pump[net->Npumps]; - - // Constant HP curve - if (n == 1) - { - if (parser->X[0] <= 0.0) return 202; - pump->Ptype = CONST_HP; - net->Link[net->Nlinks].Km = parser->X[0]; - } - - // Power function curve - else - { - // Single point power curve - if (n == 2) - { - q1 = parser->X[1]; - h1 = parser->X[0]; - h0 = 1.33334 * h1; - q2 = 2.0 * q1; - h2 = 0.0; - } - - // 3-point power curve - else if (n >= 5) - { - h0 = parser->X[0]; - h1 = parser->X[1]; - q1 = parser->X[2]; - h2 = parser->X[3]; - q2 = parser->X[4]; - } - else return 202; - pump->Ptype = POWER_FUNC; - if (!powercurve(h0, h1, h2, q1, q2, &a, &b, &c)) return 206; - pump->H0 = -a; - pump->R = -b; - pump->N = c; - pump->Q0 = q1; - pump->Qmax = pow((-a / b), (1.0 / c)); - pump->Hmax = h0; - } - return 0; -} - -int powercurve(double h0, double h1, double h2, double q1, double q2, - double *a, double *b, double *c) -/* -**--------------------------------------------------------- -** Input: h0 = shutoff head -** h1 = design head -** h2 = head at max. flow -** q1 = design flow -** q2 = max. flow -** Output: *a, *b, *c = pump curve coeffs. (H = a-bQ^c), -** Returns 1 if sucessful, 0 otherwise. -** Purpose: computes coeffs. for pump curve -**---------------------------------------------------------- -*/ -{ - double h4, h5; - - if (h0 < TINY || h0 - h1 < TINY || h1 - h2 < TINY || - q1 < TINY || q2 - q1 < TINY - ) return 0; - *a = h0; - h4 = h0 - h1; - h5 = h0 - h2; - *c = log(h5 / h4) / log(q2 / q1); - if (*c <= 0.0 || *c > 20.0) return 0; - *b = -h4 / pow(q1, *c); - if (*b >= 0.0) return 0; - return 1; -} void changestatus(Network *net, int j, StatusType status, double y) /* diff --git a/src/project.c b/src/project.c index 258b9b0..2104d06 100644 --- a/src/project.c +++ b/src/project.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 08/02/2023 + Last Updated: 09/28/2023 ****************************************************************************** */ @@ -24,6 +24,81 @@ #include "types.h" #include "funcs.h" +int openproject(Project *pr, const char *inpFile, const char *rptFile, + const char *outFile, int allowerrors) +/*---------------------------------------------------------------- + ** Input: inpFile = name of input file + ** rptFile = name of report file + ** outFile = name of binary output file + ** allowerrors = TRUE if project can be opened with errors + ** Output: none + ** Returns: error code + ** Purpose: opens an EPANET input file & reads in network data + **---------------------------------------------------------------- + */ +{ + int errcode = 0; + int hyderrcode = 0; + int projectopened; + + // Set system flags + pr->Openflag = FALSE; + pr->hydraul.OpenHflag = FALSE; + pr->quality.OpenQflag = FALSE; + pr->outfile.SaveHflag = FALSE; + pr->outfile.SaveQflag = FALSE; + pr->Warnflag = FALSE; + pr->report.Messageflag = TRUE; + pr->report.Rptflag = 1; + + // Initialize data arrays to NULL + initpointers(pr); + + // Open input & report files + ERRCODE(openfiles(pr, inpFile, rptFile, outFile)); + if (errcode > 0) + { + errmsg(pr, errcode); + return errcode; + } + + // Allocate memory for project's data arrays + ERRCODE(netsize(pr)); + ERRCODE(allocdata(pr)); + + // Read input data + ERRCODE(getdata(pr)); + + // Close input file + if (pr->parser.InFile != NULL) + { + fclose(pr->parser.InFile); + pr->parser.InFile = NULL; + } + + // Input file read with no fatal errors + if (allowerrors) projectopened = (errcode == 0 || errcode == 200); + else projectopened = (errcode == 0); + if (projectopened) + { + // If using previously saved hydraulics file then open it + if (pr->outfile.Hydflag == USE) + { + hyderrcode = openhydfile(pr); + if (hyderrcode > 0) + { + errmsg(pr, hyderrcode); + pr->outfile.Hydflag = SCRATCH; + } + } + + // Write input summary to report file + if (pr->report.Summaryflag) writesummary(pr); + pr->Openflag = TRUE; + } + errmsg(pr, errcode); + return errcode; +} int openfiles(Project *pr, const char *f1, const char *f2, const char *f3) /*---------------------------------------------------------------- @@ -1060,47 +1135,6 @@ void adjustcurves(Network *network, int index) } } -int adjustpumpparams(Project *pr, int curveIndex) -/*---------------------------------------------------------------- -** Input: curveIndex = index of a data curve -** Output: returns an error code -** Purpose: updates head curve parameters for pumps using a -** curve whose data have been modified. -**---------------------------------------------------------------- -*/ -{ - Network *network = &pr->network; - - double *Ucf = pr->Ucf; - int j, err = 0; - Spump *pump; - - // Check each pump - for (j = 1; j <= network->Npumps; j++) - { - // Pump uses curve as head curve - pump = &network->Pump[j]; - if ( curveIndex == pump->Hcurve) - { - // Update its head curve parameters - pump->Ptype = NOCURVE; - err = updatepumpparams(pr, j); - if (err > 0) break; - - // Convert parameters to internal units - if (pump->Ptype == POWER_FUNC) - { - pump->H0 /= Ucf[HEAD]; - pump->R *= (pow(Ucf[FLOW], pump->N) / Ucf[HEAD]); - } - pump->Q0 /= Ucf[FLOW]; - pump->Qmax /= Ucf[FLOW]; - pump->Hmax /= Ucf[HEAD]; - } - } - return err; -} - int resizecurve(Scurve *curve, int size) /*---------------------------------------------------------------- @@ -1448,6 +1482,7 @@ double interp(int n, double x[], double y[], double xx) int k, m; double dx, dy; + if (n == 0) return 0.0; m = n - 1; // Highest data index if (xx <= x[0]) return (y[0]); // xx off low end of curve for (k = 1; k <= m; k++) // Bracket xx on curve diff --git a/src/rules.c b/src/rules.c index 99d0a02..cf43365 100644 --- a/src/rules.c +++ b/src/rules.c @@ -404,7 +404,7 @@ void adjustrules(Project *pr, int objtype, int index) } } -void adjusttankrules(Project *pr) +void adjusttankrules(Project *pr, int ndiff) //----------------------------------------------------------- // Adjusts tank indices in rule premises. //----------------------------------------------------------- @@ -420,7 +420,8 @@ void adjusttankrules(Project *pr) p = net->Rule[i].Premises; while (p != NULL) { - if (p->object == r_NODE && p->index > njuncs) p->index++; + if (p->object == r_NODE && p->index > njuncs) + p->index += ndiff; p = p->next; } } @@ -472,7 +473,7 @@ int writerule(Project *pr, FILE *f, int ruleIndex) Srule *rule = &net->Rule[ruleIndex]; Spremise *p; Saction *a; - + // Write each premise clause to the file p = rule->Premises; fprintf(f, "\nIF "); diff --git a/src/validate.c b/src/validate.c new file mode 100644 index 0000000..486c82f --- /dev/null +++ b/src/validate.c @@ -0,0 +1,413 @@ +/* + ****************************************************************************** + Project: OWA EPANET + Version: 2.2 + Module: validate.c + Description: validates project data + Authors: see AUTHORS + Copyright: see AUTHORS + License: see LICENSE + Last Updated: 09/28/2023 + ****************************************************************************** +*/ + +#include +#include +#include +#include + +#include "types.h" +#include "funcs.h" +#include "text.h" + +// Exported functions +int validateproject(Project *pr); +void reindextanks(Project *pr); + +int validatetanks(Project *pr) +/* +**------------------------------------------------------------------- +** Input: none +** Output: returns 1 if successful, 0 if not +** Purpose: checks for valid tank levels. +**------------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + int i, j, n, result = 1, levelerr; + char errmsg[MAXMSG+1] = ""; + Stank *tank; + Scurve *curve; + + for (j = 1; j <= net->Ntanks; j++) + { + tank = &net->Tank[j]; + if (tank->A == 0.0) continue; // Skip reservoirs + + // Check for valid lower/upper tank levels + levelerr = 0; + if (tank->H0 > tank->Hmax || + tank->Hmin > tank->Hmax || + tank->H0 < tank->Hmin + ) levelerr = 1; + + // Check that tank heights are within volume curve + i = tank->Vcurve; + if (i > 0) + { + curve = &net->Curve[i]; + n = curve->Npts - 1; + if (tank->Hmin * pr->Ucf[ELEV] < curve->X[0] || + tank->Hmax * pr->Ucf[ELEV]> curve->X[n]) + { + levelerr = 1; + } + } + // Report error in levels if found + if (levelerr) + { + sprintf(pr->Msg, "Error 225: %s node %s", geterrmsg(225, errmsg), + net->Node[tank->Node].ID); + writeline(pr, pr->Msg); + result = 0; + } + } + return result; +} + +int validatepatterns(Project *pr) +/* +**------------------------------------------------------------------- +** Input: none +** Output: returns 1 if successful, 0 if not +** Purpose: checks if time patterns have data. +**------------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + int j, result = 1; + char errmsg[MAXMSG+1] = ""; + + if (pr->network.Pattern != NULL) + { + for (j = 0; j <= pr->network.Npats; j++) + { + if (pr->network.Pattern[j].Length == 0) + { + sprintf(pr->Msg, "Error 232: %s %s", geterrmsg(232, errmsg), + pr->network.Pattern[j].ID); + writeline(pr, pr->Msg); + result = 0; + } + } + } + return result; +} + +int validatecurves(Project *pr) +/* +**------------------------------------------------------------------- +** Input: none +** Output: returns 1 if successful, 0 if not +** Purpose: checks if data curves have data. +**------------------------------------------------------------------- +*/ +{ + int i, j, npts, result = 1; + char errmsg[MAXMSG+1] = ""; + Scurve *curve; + + if (pr->network.Curve != NULL) + { + for (j = 1; j <= pr->network.Ncurves; j++) + { + // Check that curve has data + curve = &pr->network.Curve[j]; + npts = curve->Npts; + if (npts == 0) + { + sprintf(pr->Msg, "Error 231: %s %s", geterrmsg(231, errmsg), + curve->ID); + writeline(pr, pr->Msg); + result = 0; + } + + // Check that x values are increasing + for (i = 1; i < npts; i++) + { + if (curve->X[i-1] >= curve->X[i]) + { + sprintf(pr->Msg, "Error 230: %s %s", geterrmsg(230, errmsg), + curve->ID); + writeline(pr, pr->Msg); + result = 0; + break; + } + } + } + } + return result; +} + +int powercurve(double h0, double h1, double h2, double q1, double q2, + double *a, double *b, double *c) +/* +**--------------------------------------------------------- +** Input: h0 = shutoff head +** h1 = design head +** h2 = head at max. flow +** q1 = design flow +** q2 = max. flow +** Output: *a, *b, *c = pump curve coeffs. (H = a-bQ^c), +** Returns 1 if sucessful, 0 otherwise. +** Purpose: computes coeffs. for pump curve +**---------------------------------------------------------- +*/ +{ + double h4, h5; + + if (h0 < TINY || h0 - h1 < TINY || h1 - h2 < TINY || + q1 < TINY || q2 - q1 < TINY + ) return 0; + *a = h0; + h4 = h0 - h1; + h5 = h0 - h2; + *c = log(h5 / h4) / log(q2 / q1); + if (*c <= 0.0 || *c > 20.0) return 0; + *b = -h4 / pow(q1, *c); + if (*b >= 0.0) return 0; + return 1; +} + +int findpumpparams(Project *pr, int pumpindex) +/* +**------------------------------------------------------------- +** Input: pumpindex = index of a pump +** Output: returns error code +** Purpose: computes & checks a pump's head curve coefficients +**-------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Spump *pump; + Scurve *curve; + + int m; + int curveindex; + int npts = 0; + int errcode = 0; + double a, b, c, h0 = 0.0, h1 = 0.0, h2 = 0.0, q1 = 0.0, q2 = 0.0; + + pump = &net->Pump[pumpindex]; + if (pump->Ptype == CONST_HP) // Constant Hp pump + { + pump->H0 = 0.0; + pump->R = -8.814 * net->Link[pump->Link].Km; + pump->N = -1.0; + pump->Hmax = BIG; // No head limit + pump->Qmax = BIG; // No flow limit + pump->Q0 = 1.0; // Init. flow = 1 cfs + return 0; + } + + else if (pump->Ptype == NOCURVE) // Pump curve specified + { + curveindex = pump->Hcurve; + if (curveindex == 0) return 226; + curve = &net->Curve[curveindex]; + curve->Type = PUMP_CURVE; + npts = curve->Npts; + + // Generic power function curve + if (npts == 1) + { + pump->Ptype = POWER_FUNC; + q1 = curve->X[0]; + h1 = curve->Y[0]; + h0 = 1.33334 * h1; + q2 = 2.0 * q1; + h2 = 0.0; + } + + // 3 point curve with shutoff head + else if (npts == 3 && curve->X[0] == 0.0) + { + pump->Ptype = POWER_FUNC; + h0 = curve->Y[0]; + q1 = curve->X[1]; + h1 = curve->Y[1]; + q2 = curve->X[2]; + h2 = curve->Y[2]; + } + + // Custom pump curve + else + { + pump->Ptype = CUSTOM; + for (m = 1; m < npts; m++) + { + if (curve->Y[m] >= curve->Y[m - 1]) + { + pump->Ptype = NOCURVE; + return 227; + } + } + pump->Qmax = curve->X[npts - 1]; + pump->Q0 = (curve->X[0] + pump->Qmax) / 2.0; + pump->Hmax = curve->Y[0]; + } + + // Compute shape factors & limits of power function curves + if (pump->Ptype == POWER_FUNC) + { + if (!powercurve(h0, h1, h2, q1, q2, &a, &b, &c)) + { + pump->Ptype = NOCURVE; + return 227; + } + else + { + pump->H0 = -a; + pump->R = -b; + pump->N = c; + pump->Q0 = q1; + pump->Qmax = pow((-a / b), (1.0 / c)); + pump->Hmax = h0; + } + } + + // Convert units of pump coefficients + if (pump->Ptype == POWER_FUNC) + { + pump->H0 /= pr->Ucf[HEAD]; + pump->R *= (pow(pr->Ucf[FLOW], pump->N) / pr->Ucf[HEAD]); + } + pump->R /= pr->Ucf[POWER]; + pump->Q0 /= pr->Ucf[FLOW]; + pump->Qmax /= pr->Ucf[FLOW]; + pump->Hmax /= pr->Ucf[HEAD]; + } + return 0; +} + +int validatepumps(Project *pr) +/* +**------------------------------------------------------------------- +** Input: none +** Output: returns 1 if successful, 0 if not +** Purpose: checks if pumps assigned pump curves. +**------------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + int i, k, errcode, result = 1; + char errmsg[MAXMSG+1] = ""; + Spump *pump; + + for (i = 1; i <= net->Npumps; i++) + { + // Check if pump has neither a head curve nor power setting + pump = &net->Pump[i]; + k = pump->Link; + if (net->Link[k].Km == 0.0 && pump->Hcurve <= 0) + { + sprintf(pr->Msg, "Error 226: %s %s", + geterrmsg(226, errmsg), net->Link[k].ID); + writeline(pr, pr->Msg); + result = 0; + } + + // Compute & check pump's head curve coefficients + else + { + errcode = findpumpparams(pr, i); + if (errcode) + { + sprintf(pr->Msg, "Error %d: %s %s", + errcode, geterrmsg(errcode, errmsg), net->Link[k].ID); + writeline(pr, pr->Msg); + result = 0; + } + } + } + return result; +} + +int validateproject(Project *pr) +/* + *-------------------------------------------------------------- + * Input: none + * Output: returns error code + * Purpose: checks for valid network data. + *-------------------------------------------------------------- +*/ +{ + int errcode = 0; + if (pr->network.Nnodes < 2) return 223; + if (pr->network.Ntanks == 0) return 224; + if (!validatetanks(pr)) errcode = 110; + if (!validatepumps(pr)) errcode = 110; + if (!validatepatterns(pr)) errcode = 110; + if (!validatecurves(pr)) errcode = 110; + return errcode; +} + +void reindextanks(Project *pr) +/* + *-------------------------------------------------------------- + * Input: none + * Output: none + * Purpose: adjusts tank node indexes when the number of + * junctions created from an input file is less than + * the total number of junction lines in the file. + *-------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Parser *parser = &pr->parser; + Quality *qual = &pr->quality; + Scontrol *control; + int i, j, ndiff, n1, n2, size; + + // ndiff = # unused entries in Node array before first tank node + ndiff = parser->MaxJuncs - net->Njuncs; + if (ndiff > 0) + { + for (i = 1; i <= net->Ntanks; ++i) + { + // n1 is current tank index in Node array, n2 is adjusted index + n1 = net->Tank[i].Node; + n2 = n1 - ndiff; + + // Update the tank node's hash table entry + hashtable_update(net->NodeHashTable, net->Node[n1].ID, n2); + + // Update the tank's node index + net->Tank[i].Node = n2; + + // Re-position tank node in Node array + net->Node[n2] = net->Node[n1]; + + // Replace all references to old tank node index with new one + for (j = 1; j <= net->Nlinks; ++j) + { + if (net->Link[j].N1 == n1) net->Link[j].N1 = n2; + if (net->Link[j].N2 == n1) net->Link[j].N2 = n2; + } + for (j = 1; j <= net->Ncontrols; ++j) + { + control = &net->Control[j]; + if (control->Node == n1) control->Node = n2; + } + adjusttankrules(pr, -ndiff); + if (qual->TraceNode == n1) qual->TraceNode = n2; + } + + // Reallocate the Node array (shouldn't fail as new size < old size) + parser->MaxJuncs = net->Njuncs; + parser->MaxNodes = net->Njuncs + net->Ntanks; + size = (net->Nnodes + 2) * sizeof(Snode); + net->Node = (Snode *)realloc(net->Node, size); + } +} + From c0700c83ee383b2c716f9612840a767e4a5aa9d3 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Thu, 5 Oct 2023 11:37:13 -0400 Subject: [PATCH 139/233] Refactored validate.c --- src/epanet.c | 2 +- src/input2.c | 3 +- src/validate.c | 241 ++++++++++++++++++++++++------------------------- 3 files changed, 118 insertions(+), 128 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 354a51c..86b510b 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -4059,7 +4059,7 @@ int DLLEXPORT EN_setlinkvalue(EN_Project p, int index, int property, double valu pumpIndex = findpump(&p->network, index); net->Pump[pumpIndex].Ptype = CONST_HP; net->Pump[pumpIndex].Hcurve = 0; - net->Link[index].Km = value / Ucf[POWER]; + net->Link[index].Km = value; } break; diff --git a/src/input2.c b/src/input2.c index 0810d7b..c5af2ba 100644 --- a/src/input2.c +++ b/src/input2.c @@ -1,7 +1,7 @@ /* ****************************************************************************** Project: OWA EPANET -Version: 2.2 +Version: 2.3 Module: input2.c Description: reads and interprets network data from an EPANET input file Authors: see AUTHORS @@ -33,7 +33,6 @@ int getheadlossoption(Project *, char *); static int newline(Project *, int, char *); static int addpattern(Network *, char *); static int addcurve(Network *, char *); -static int getpumpparams(Project *); static void inperrmsg(Project *, int, int, char *); diff --git a/src/validate.c b/src/validate.c index 486c82f..379cad7 100644 --- a/src/validate.c +++ b/src/validate.c @@ -1,7 +1,7 @@ /* ****************************************************************************** Project: OWA EPANET - Version: 2.2 + Version: 2.3 Module: validate.c Description: validates project data Authors: see AUTHORS @@ -21,8 +21,8 @@ #include "text.h" // Exported functions -int validateproject(Project *pr); -void reindextanks(Project *pr); +int validateproject(Project *); +void reindextanks(Project *); int validatetanks(Project *pr) /* @@ -149,8 +149,8 @@ int validatecurves(Project *pr) return result; } -int powercurve(double h0, double h1, double h2, double q1, double q2, - double *a, double *b, double *c) +int powerfuncpump(double h0, double h1, double h2, double q1, double q2, + double *a, double *b, double *c) /* **--------------------------------------------------------- ** Input: h0 = shutoff head @@ -160,7 +160,7 @@ int powercurve(double h0, double h1, double h2, double q1, double q2, ** q2 = max. flow ** Output: *a, *b, *c = pump curve coeffs. (H = a-bQ^c), ** Returns 1 if sucessful, 0 otherwise. -** Purpose: computes coeffs. for pump curve +** Purpose: computes coeffs. for a power function pump curve **---------------------------------------------------------- */ { @@ -179,114 +179,105 @@ int powercurve(double h0, double h1, double h2, double q1, double q2, return 1; } -int findpumpparams(Project *pr, int pumpindex) +int customcurvepump(Project *pr, Spump *pump, Scurve *curve) /* -**------------------------------------------------------------- -** Input: pumpindex = index of a pump -** Output: returns error code -** Purpose: computes & checks a pump's head curve coefficients -**-------------------------------------------------------------- +**------------------------------------------------------------------- +** Input: pump = a pump object +** curve = a data curve object +** Output: returns an error code +** Purpose: computes properties for a pump with a custom pump curve. +**------------------------------------------------------------------- */ { - Network *net = &pr->network; - Spump *pump; - Scurve *curve; + int m, npts = curve->Npts; + pump->Ptype = CUSTOM; + for (m = 1; m < npts; m++) + { + // Curve must have continuously decreasing head (the Y value) + if (curve->Y[m] >= curve->Y[m - 1]) + { + pump->Ptype = NOCURVE; + return 227; + } + } + pump->Qmax = curve->X[npts - 1] / pr->Ucf[FLOW]; + pump->Q0 = (curve->X[0] + pump->Qmax) / 2.0 / pr->Ucf[FLOW]; + pump->Hmax = curve->Y[0] / pr->Ucf[HEAD]; + return 0; +} - int m; - int curveindex; - int npts = 0; - int errcode = 0; +int pumpcurvepump(Project *pr, Spump *pump, Scurve *curve) +/* +**------------------------------------------------------------------- +** Input: pump = a pump object +** curve = a data curve object +** Output: returns an error code +** Purpose: computes properties for a pump assigned a pump curve. +**------------------------------------------------------------------- +*/ +{ double a, b, c, h0 = 0.0, h1 = 0.0, h2 = 0.0, q1 = 0.0, q2 = 0.0; + int npts = curve->Npts; - pump = &net->Pump[pumpindex]; - if (pump->Ptype == CONST_HP) // Constant Hp pump + curve->Type = PUMP_CURVE; + + // Generic power function curve + if (npts == 1) { - pump->H0 = 0.0; - pump->R = -8.814 * net->Link[pump->Link].Km; - pump->N = -1.0; - pump->Hmax = BIG; // No head limit - pump->Qmax = BIG; // No flow limit - pump->Q0 = 1.0; // Init. flow = 1 cfs - return 0; + pump->Ptype = POWER_FUNC; + q1 = curve->X[0]; + h1 = curve->Y[0]; + h0 = 1.33334 * h1; + q2 = 2.0 * q1; + h2 = 0.0; } - else if (pump->Ptype == NOCURVE) // Pump curve specified + // 3 point curve with shutoff head + else if (npts == 3 && curve->X[0] == 0.0) { - curveindex = pump->Hcurve; - if (curveindex == 0) return 226; - curve = &net->Curve[curveindex]; - curve->Type = PUMP_CURVE; - npts = curve->Npts; - - // Generic power function curve - if (npts == 1) - { - pump->Ptype = POWER_FUNC; - q1 = curve->X[0]; - h1 = curve->Y[0]; - h0 = 1.33334 * h1; - q2 = 2.0 * q1; - h2 = 0.0; - } - - // 3 point curve with shutoff head - else if (npts == 3 && curve->X[0] == 0.0) - { - pump->Ptype = POWER_FUNC; - h0 = curve->Y[0]; - q1 = curve->X[1]; - h1 = curve->Y[1]; - q2 = curve->X[2]; - h2 = curve->Y[2]; - } - - // Custom pump curve - else - { - pump->Ptype = CUSTOM; - for (m = 1; m < npts; m++) - { - if (curve->Y[m] >= curve->Y[m - 1]) - { - pump->Ptype = NOCURVE; - return 227; - } - } - pump->Qmax = curve->X[npts - 1]; - pump->Q0 = (curve->X[0] + pump->Qmax) / 2.0; - pump->Hmax = curve->Y[0]; - } - - // Compute shape factors & limits of power function curves - if (pump->Ptype == POWER_FUNC) - { - if (!powercurve(h0, h1, h2, q1, q2, &a, &b, &c)) - { - pump->Ptype = NOCURVE; - return 227; - } - else - { - pump->H0 = -a; - pump->R = -b; - pump->N = c; - pump->Q0 = q1; - pump->Qmax = pow((-a / b), (1.0 / c)); - pump->Hmax = h0; - } - } - - // Convert units of pump coefficients - if (pump->Ptype == POWER_FUNC) - { - pump->H0 /= pr->Ucf[HEAD]; - pump->R *= (pow(pr->Ucf[FLOW], pump->N) / pr->Ucf[HEAD]); - } - pump->R /= pr->Ucf[POWER]; - pump->Q0 /= pr->Ucf[FLOW]; - pump->Qmax /= pr->Ucf[FLOW]; - pump->Hmax /= pr->Ucf[HEAD]; + pump->Ptype = POWER_FUNC; + h0 = curve->Y[0]; + q1 = curve->X[1]; + h1 = curve->Y[1]; + q2 = curve->X[2]; + h2 = curve->Y[2]; } + else return customcurvepump(pr, pump, curve); + + // Compute shape factors & limits of power function curves + if (!powerfuncpump(h0, h1, h2, q1, q2, &a, &b, &c)) + { + pump->Ptype = NOCURVE; + return 227; + } + else + { + pump->H0 = -a / pr->Ucf[HEAD]; + pump->R = -b * (pow(pr->Ucf[FLOW], c) / pr->Ucf[HEAD]); + pump->N = c; + pump->Q0 = q1 / pr->Ucf[FLOW]; + pump->Qmax = pow((-a / b), (1.0 / c)) / pr->Ucf[FLOW]; + pump->Hmax = h0 / pr->Ucf[HEAD]; + } + return 0; +} + +int constpowerpump(Project *pr, Spump *pump) +/* +**------------------------------------------------------------------- +** Input: pump = a pump object +** Output: returns an error code +** Purpose: computes properties for a constant power pump. +**------------------------------------------------------------------- +*/ +{ + pump->Ptype = CONST_HP; + pump->H0 = 0.0; + pump->R = -8.814 * pr->network.Link[pump->Link].Km / pr->Ucf[POWER]; + pump->N = -1.0; + pump->Hmax = BIG; // No head limit + pump->Qmax = BIG; // No flow limit + pump->Q0 = 1.0; // Init. flow = 1 cfs return 0; } @@ -295,44 +286,44 @@ int validatepumps(Project *pr) **------------------------------------------------------------------- ** Input: none ** Output: returns 1 if successful, 0 if not -** Purpose: checks if pumps assigned pump curves. +** Purpose: checks if pumps are assigned valid pump curve data. **------------------------------------------------------------------- */ { Network *net = &pr->network; - int i, k, errcode, result = 1; + int i, errcode, result = 1; char errmsg[MAXMSG+1] = ""; Spump *pump; for (i = 1; i <= net->Npumps; i++) { - // Check if pump has neither a head curve nor power setting + // Pump has a designated pump curve pump = &net->Pump[i]; - k = pump->Link; - if (net->Link[k].Km == 0.0 && pump->Hcurve <= 0) + if (pump->Hcurve > 0) + errcode = pumpcurvepump(pr, pump, &net->Curve[pump->Hcurve]); + + // Pump has a constant power setting + else if (net->Link[pump->Link].Km > 0.0) + errcode = constpowerpump(pr, pump); + + // Pump has no pump curve info assigned + else { - sprintf(pr->Msg, "Error 226: %s %s", - geterrmsg(226, errmsg), net->Link[k].ID); + pump->Ptype = NOCURVE; + errcode = 226; + } + + if (errcode) + { + sprintf(pr->Msg, "Error %d: %s %s", + errcode, geterrmsg(errcode, errmsg), net->Link[pump->Link].ID); writeline(pr, pr->Msg); result = 0; } - - // Compute & check pump's head curve coefficients - else - { - errcode = findpumpparams(pr, i); - if (errcode) - { - sprintf(pr->Msg, "Error %d: %s %s", - errcode, geterrmsg(errcode, errmsg), net->Link[k].ID); - writeline(pr, pr->Msg); - result = 0; - } - } } return result; -} - +} + int validateproject(Project *pr) /* *-------------------------------------------------------------- From 653ffac5142fc2e71a0fb043341950b4dc5557a2 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Thu, 5 Oct 2023 12:10:08 -0400 Subject: [PATCH 140/233] Update input3.c --- src/input3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/input3.c b/src/input3.c index cac9f2e..8c10c10 100644 --- a/src/input3.c +++ b/src/input3.c @@ -1,7 +1,7 @@ /* ****************************************************************************** Project: OWA EPANET -Version: 2.2 +Version: 2.3 Module: input3.c Description: parses network data from a line of an EPANET input file Authors: see AUTHORS From e7f9e26347e4b24c7e2f70dea670af4a0201c098 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Thu, 5 Oct 2023 14:59:10 -0400 Subject: [PATCH 141/233] Update validate.c --- src/validate.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/validate.c b/src/validate.c index 379cad7..978d8f4 100644 --- a/src/validate.c +++ b/src/validate.c @@ -200,8 +200,9 @@ int customcurvepump(Project *pr, Spump *pump, Scurve *curve) return 227; } } - pump->Qmax = curve->X[npts - 1] / pr->Ucf[FLOW]; + pump->Qmax = curve->X[npts - 1]; pump->Q0 = (curve->X[0] + pump->Qmax) / 2.0 / pr->Ucf[FLOW]; + pump->Qmax /= pr->Ucf[FLOW]; pump->Hmax = curve->Y[0] / pr->Ucf[HEAD]; return 0; } From ce77b19a24c9636a52738e53848968c0f6443a45 Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Sun, 8 Oct 2023 13:13:37 +0300 Subject: [PATCH 142/233] update workflows to include the header files in the artifact --- .github/workflows/ccpp.yml | 21 +++++++++++++++------ .github/workflows/win32.yml | 16 ++++++++++++---- .github/workflows/win64.yml | 16 ++++++++++++---- 3 files changed, 39 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index dc121b5..56e672c 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -8,20 +8,29 @@ on: jobs: build: - runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 - - name: setup_build_dir + - uses: actions/checkout@v2 + + - name: Setup build directory run: mkdir buildproducts - - name: cmake + + - name: CMake working-directory: ./buildproducts run: cmake .. - - name: make + + - name: Make working-directory: ./buildproducts run: make + + - name: Copy header files to build directory + run: | + cp include/epanet2.h buildproducts/ + cp include/epanet2_2.h buildproducts/ + cp include/epanet2_enums.h buildproducts/ + - uses: actions/upload-artifact@v2 with: name: libepanet-output - path: /home/runner/work/EPANET/EPANET/buildproducts/ + path: buildproducts/ \ No newline at end of file diff --git a/.github/workflows/win32.yml b/.github/workflows/win32.yml index dd673c8..df3ecfe 100644 --- a/.github/workflows/win32.yml +++ b/.github/workflows/win32.yml @@ -14,13 +14,21 @@ jobs: - name: Checkout repository uses: actions/checkout@v2 - - name: setup_build_dir + - name: Setup build directory run: mkdir buildproducts - - name: cmake + + - name: CMake working-directory: ./buildproducts run: cmake .. -A Win32 && cmake --build . --config Release - + + - name: Copy header files to build directory + run: | + copy include\epanet2.h buildproducts\bin\Release + copy include\epanet2_2.h buildproducts\bin\Release + copy include\epanet2_enums.h buildproducts\bin\Release + shell: cmd + - uses: actions/upload-artifact@v2 with: name: epanet2-win32 - path: D:\a\EPANET\EPANET\buildproducts\bin\Release\ + path: buildproducts\bin\Release \ No newline at end of file diff --git a/.github/workflows/win64.yml b/.github/workflows/win64.yml index 560a4a3..ed62f9d 100644 --- a/.github/workflows/win64.yml +++ b/.github/workflows/win64.yml @@ -14,13 +14,21 @@ jobs: - name: Checkout repository uses: actions/checkout@v2 - - name: setup_build_dir + - name: Setup build directory run: mkdir buildproducts - - name: cmake + + - name: CMake working-directory: ./buildproducts run: cmake .. -A x64 && cmake --build . --config Release - + + - name: Copy header files to build directory + run: | + copy include\epanet2.h buildproducts\bin\Release + copy include\epanet2_2.h buildproducts\bin\Release + copy include\epanet2_enums.h buildproducts\bin\Release + shell: cmd + - uses: actions/upload-artifact@v2 with: name: epanet2-win64 - path: D:\a\EPANET\EPANET\buildproducts\bin\Release\ + path: buildproducts\bin\Release \ No newline at end of file From c6ab471b5bddb9d70aee4dd5aa42ce277f6819c5 Mon Sep 17 00:00:00 2001 From: lbutler Date: Tue, 9 Jan 2024 14:14:19 -0500 Subject: [PATCH 143/233] Update release notes and remove depreciated constants --- ReleaseNotes2_3.md | 5 ++++- src/text.h | 3 --- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index f35ad3c..86afb52 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -48,4 +48,7 @@ This document describes the changes and updates that have been made in version 2 - `EN_STATUS_REPORT` can now be used with `EN_getoption` and `EN_setoption` to get or set the type of status report that EPANET will generate (`EN_NO_REPORT`, `EN_NORMAL_REPORT` or `EN_FULL_REPORT`). - A possible parser error that could result in a Trace Node ID in an input file not being recognized was fixed. - Additional API functions for enabling/disabling controls and rules were added (`EN_getcontrolenabled`, `EN_setcontrolenabled`, `EN_getruleenabled`, `EN_setruleenabled`). - - Updated the internal function `getclosedlink` in report.c to use a loop instead of recursion to prevent a stack overflow during the analysis of very large disconnections. \ No newline at end of file + - Updated the internal function `getclosedlink` in report.c to use a loop instead of recursion to prevent a stack overflow during the analysis of very large disconnections. +- Setting the demand multiplier within the `[DEMANDS]` section of INP has been depreciated, please use `DEMAND MULTIPLIER` inside `[OPTIONS]` instead. +- `EN_PRESS_UNITS` can now be used with `EN_getoption` and `EN_setoption` to get or set the pressure unit used in EPANET. +- Continuous barrier functions were added to constrain emitter flows to allowable values. diff --git a/src/text.h b/src/text.h index f65414e..3f3b50a 100755 --- a/src/text.h +++ b/src/text.h @@ -52,9 +52,6 @@ #define w_IS "IS" #define w_NOT "NOT" -#define w_ADD "ADD" -#define w_MULTIPLY "MULT" - #define w_LIMITING "LIMIT" #define w_ORDER "ORDER" #define w_GLOBAL "GLOB" From 6c2bf2f48af45c019411464885b002e4158ab8c3 Mon Sep 17 00:00:00 2001 From: lbutler Date: Tue, 9 Jan 2024 14:22:34 -0500 Subject: [PATCH 144/233] Add en_openx to release notes --- ReleaseNotes2_3.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 86afb52..67680a8 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -52,3 +52,4 @@ This document describes the changes and updates that have been made in version 2 - Setting the demand multiplier within the `[DEMANDS]` section of INP has been depreciated, please use `DEMAND MULTIPLIER` inside `[OPTIONS]` instead. - `EN_PRESS_UNITS` can now be used with `EN_getoption` and `EN_setoption` to get or set the pressure unit used in EPANET. - Continuous barrier functions were added to constrain emitter flows to allowable values. +- The `EN_openx` function has been added to enable the opening of input files with formatting errors through the API. This allows users to continue using toolkit functions even when such errors are present. From 5c90eafdbead6d9bb24cf5a6120a40ea65c59e67 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Thu, 25 Jan 2024 12:21:09 -0500 Subject: [PATCH 145/233] Update validate.c Fixes bug in checking that tank min/max levels are within volume curve. --- src/validate.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/validate.c b/src/validate.c index 978d8f4..3eb8929 100644 --- a/src/validate.c +++ b/src/validate.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 09/28/2023 + Last Updated: 01/25/2024 ****************************************************************************** */ @@ -38,6 +38,7 @@ int validatetanks(Project *pr) char errmsg[MAXMSG+1] = ""; Stank *tank; Scurve *curve; + double elev; for (j = 1; j <= net->Ntanks; j++) { @@ -52,13 +53,14 @@ int validatetanks(Project *pr) ) levelerr = 1; // Check that tank heights are within volume curve + elev = net->Node[tank->Node].El; i = tank->Vcurve; if (i > 0) { curve = &net->Curve[i]; n = curve->Npts - 1; - if (tank->Hmin * pr->Ucf[ELEV] < curve->X[0] || - tank->Hmax * pr->Ucf[ELEV]> curve->X[n]) + if ((tank->Hmin - elev) * pr->Ucf[ELEV] < curve->X[0] || + (tank->Hmax - elev) * pr->Ucf[ELEV]> curve->X[n]) { levelerr = 1; } From 0c3d444eef7b265582bb051d8e83963f608d2346 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Mon, 12 Feb 2024 11:47:35 -0500 Subject: [PATCH 146/233] enhances build files with INSTALL options and fixes Conan --- BUILDING.md | 9 +++++++++ CMakeLists.txt | 11 +++++++++-- conanfile.py | 9 +++------ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/BUILDING.md b/BUILDING.md index 6e99a47..a1db2b6 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -24,6 +24,15 @@ These two scripts build EPANET binaries for both the 32 and 64 bit Windows platf A tutorial on [building OWA EPANET from source on Windows](tools/BuildAndTest.md), including running unit tests and performing regression testing, is also avaiable. +## Alternative build with Conan +Conan is an increasingly popular C/C++ package management suite. To build EPANET using Conan, use the following commands as a starting point: + +``` +conan build . -s build_type=Release +conan export-pkg . -s build_type=Release +``` + + # Testing Unit tests have been written using the Boost Unit Testing Framework and other Boost libraries. The tests are compiled into individual executables that automatically perform checks on the EPANET toolkit and output libraries. diff --git a/CMakeLists.txt b/CMakeLists.txt index 5fdcd7c..b912cfc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,11 +32,11 @@ project(EPANET) # Append local dir to module search path list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) +option(BUILD_SHARED_LIBS "Build using shared libraries" ON) option(BUILD_TESTS "Build tests (requires Boost)" OFF) option(BUILD_PY_LIB "Build library for Python wrapper" OFF) option(BUILD_COVERAGE "Build library for coverage" OFF) - IF (NOT BUILD_PY_LIB) add_subdirectory(run) ENDIF (NOT BUILD_PY_LIB) @@ -96,7 +96,14 @@ IF(MSVC AND "${CMAKE_VS_PLATFORM_NAME}" MATCHES "(Win32)") add_library(epanet2 SHARED ${EPANET_LIB_ALL} ${PROJECT_SOURCE_DIR}/include/epanet2.def) set_source_files_properties(${PROJECT_SOURCE_DIR}/include/epanet2.def PROPERTIES_HEADER_FILE_ONLY TRUE) ELSE(TRUE) - add_library(epanet2 SHARED ${EPANET_LIB_ALL}) + add_library(epanet2 ${EPANET_LIB_ALL}) ENDIF(MSVC AND "${CMAKE_VS_PLATFORM_NAME}" MATCHES "(Win32)") target_include_directories(epanet2 PUBLIC ${PROJECT_SOURCE_DIR}/include) + +install(TARGETS epanet2 DESTINATION lib) +install(FILES ./include/epanet2.h DESTINATION include) +install(FILES ./include/epanet2_2.h DESTINATION include) +install(DIRECTORY ./src/ DESTINATION include FILES_MATCHING PATTERN "*.h") + + diff --git a/conanfile.py b/conanfile.py index fb9db09..93c741c 100644 --- a/conanfile.py +++ b/conanfile.py @@ -1,4 +1,4 @@ -from conans import ConanFile +from conan import ConanFile from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout class EpanetConan(ConanFile): @@ -33,11 +33,8 @@ class EpanetConan(ConanFile): cmake.build() def package(self): - self.copy("lib/libepanet2.dylib", "lib", keep_path=False) - self.copy("lib/libepanet-output.dylib", "lib", keep_path=False) - self.copy("*.h", "include", "include", keep_path=False) - self.copy("types.h", "include", "src", keep_path=False) - self.copy("hash.h", "include", "src", keep_path=False) + cmake = CMake(self) + cmake.install() def package_info(self): self.cpp_info.libdirs = ["lib"] From 482f658df4170e327135403f6901d89aa853acfb Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 13 Mar 2024 09:22:33 -0400 Subject: [PATCH 147/233] Account for mass lost in tank overflow This change addresses issue #769. --- src/qualreact.c | 67 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 60 insertions(+), 7 deletions(-) diff --git a/src/qualreact.c b/src/qualreact.c index 1fc5710..f739273 100644 --- a/src/qualreact.c +++ b/src/qualreact.c @@ -7,7 +7,7 @@ Description: computes water quality reactions within pipes and tanks Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 05/15/2019 +Last Updated: 03/12/2024 ****************************************************************************** */ @@ -492,6 +492,13 @@ void tankmix1(Project *pr, int i, double vin, double win, double vnet) seg->v += vnet; seg->v = MAX(0.0, seg->v); tank->C = seg->c; + + // Account for mass lost in tank overflow + if (seg->v > tank->Vmax) + { + qual->MassBalance.outflow += ((seg->v) - tank->Vmax) * tank->C; + seg->v = tank->Vmax; + } } } @@ -513,7 +520,8 @@ void tankmix2(Project *pr, int i, double vin, double win, double vnet) int k; double vt, // Transferred volume - vmz; // Full mixing zone volume + vmz, // Full mixing zone volume + vsz; // Full stagnant zone volume Pseg mixzone, // Mixing zone segment stagzone; // Stagnant zone segment Stank *tank = &pr->network.Tank[i]; @@ -559,8 +567,19 @@ void tankmix2(Project *pr, int i, double vin, double win, double vnet) if (vt > 0.0) { mixzone->v = vmz; - if (vnet > 0.0) stagzone->v += vt; - else stagzone->v = MAX(0.0, ((stagzone->v) - vt)); + if (vnet > 0.0) + { + stagzone->v += vt; + + // Account for mass lost in overflow from stagnant zone + vsz = (tank->Vmax) - vmz; + if (stagzone->v > vsz) + { + qual->MassBalance.outflow += ((stagzone->v) - vsz) * stagzone->c; + stagzone->v = vsz; + } + } + else stagzone->v = MAX(0.0, ((stagzone->v) - vt)); } else { @@ -612,10 +631,13 @@ void tankmix3(Project *pr, int i, double vin, double win, double vnet) else addseg(pr, k, vin, cin); } - // Withdraw flow from first segment + // Find volume leaving tank, adjusted so its volume doesn't exceed Vmax + vout = vin - vnet; + if (tank->V >= tank->Vmax && vnet > 0.0) vout = vin; + + // Withdraw outflow from first segment vsum = 0.0; wsum = 0.0; - vout = vin - vnet; while (vout > 0.0) { seg = qual->FirstSeg[k]; @@ -643,6 +665,10 @@ void tankmix3(Project *pr, int i, double vin, double win, double vnet) if (vsum > 0.0) tank->C = wsum / vsum; else if (qual->FirstSeg[k] == NULL) tank->C = 0.0; else tank->C = qual->FirstSeg[k]->c; + + // Account for mass lost in overflow from 1st segment + if (tank->V >= tank->Vmax && vnet > 0.0) + qual->MassBalance.outflow += vnet * tank->C; } @@ -669,7 +695,7 @@ void tankmix4(Project *pr, int i, double vin, double win, double vnet) k = net->Nlinks + i; if (qual->LastSeg[k] == NULL || qual->FirstSeg[k] == NULL) return; - // Find inflows & outflows + // Find inflow concentration if (vin > 0.0) cin = win / vin; else cin = 0.0; @@ -687,6 +713,33 @@ void tankmix4(Project *pr, int i, double vin, double win, double vnet) // Update reported tank quality tank->C = qual->LastSeg[k]->c; + + // If tank full then remove vnet from leading segments + if (tank->V >= tank->Vmax) + { + wsum = 0.0; + while (vnet > 0.0) + { + seg = qual->FirstSeg[k]; + if (seg == NULL) break; + vseg = seg->v; // Flow volume from leading seg + vseg = MIN(vseg, vnet); + if (seg == qual->LastSeg[k]) vseg = vnet; + wsum += (seg->c) * vseg; + vnet -= vseg; // Remaining flow volume + if (vnet >= 0.0 && vseg >= seg->v) // Seg used up + { + if (seg->prev) + { + qual->FirstSeg[k] = seg->prev; + seg->prev = qual->FreeSeg; + qual->FreeSeg = seg; + } + } + else seg->v -= vseg; // Remaining volume in segment + } + qual->MassBalance.outflow += wsum; + } } // If tank emptying then remove last segments until vnet consumed From 857aaf678b482576ad2cbab5460f1a54e8f7beca Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Tue, 19 Mar 2024 12:43:38 +0200 Subject: [PATCH 148/233] Delete tests/outfile/data/enP1kAlM Remove the unnecessary file. --- tests/outfile/data/enP1kAlM | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 tests/outfile/data/enP1kAlM diff --git a/tests/outfile/data/enP1kAlM b/tests/outfile/data/enP1kAlM deleted file mode 100644 index e69de29..0000000 From 1cf1b0803b0c365bafd0347b1395c764db5eb703 Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Tue, 19 Mar 2024 13:18:11 +0200 Subject: [PATCH 149/233] Update workflows to use Node.js 20 due to deprecation of Node.js 16 --- .github/workflows/ccpp.yml | 5 ++--- .github/workflows/win32.yml | 4 ++-- .github/workflows/win64.yml | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index 56e672c..090c5d6 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -11,8 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - + - uses: actions/checkout@v4 - name: Setup build directory run: mkdir buildproducts @@ -30,7 +29,7 @@ jobs: cp include/epanet2_2.h buildproducts/ cp include/epanet2_enums.h buildproducts/ - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 with: name: libepanet-output path: buildproducts/ \ No newline at end of file diff --git a/.github/workflows/win32.yml b/.github/workflows/win32.yml index df3ecfe..cc9830f 100644 --- a/.github/workflows/win32.yml +++ b/.github/workflows/win32.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Setup build directory run: mkdir buildproducts @@ -28,7 +28,7 @@ jobs: copy include\epanet2_enums.h buildproducts\bin\Release shell: cmd - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 with: name: epanet2-win32 path: buildproducts\bin\Release \ No newline at end of file diff --git a/.github/workflows/win64.yml b/.github/workflows/win64.yml index ed62f9d..8b49817 100644 --- a/.github/workflows/win64.yml +++ b/.github/workflows/win64.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Setup build directory run: mkdir buildproducts @@ -28,7 +28,7 @@ jobs: copy include\epanet2_enums.h buildproducts\bin\Release shell: cmd - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 with: name: epanet2-win64 path: buildproducts\bin\Release \ No newline at end of file From 630f9f09a99881c6d01cd3987bdd575bade3eef1 Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Tue, 19 Mar 2024 13:31:03 +0200 Subject: [PATCH 150/233] Create macos.yml --- .github/workflows/macos.yml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/macos.yml diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml new file mode 100644 index 0000000..fa5913e --- /dev/null +++ b/.github/workflows/macos.yml @@ -0,0 +1,35 @@ +name: macOS + +on: + push: + pull_request: + schedule: + - cron: '0 0 1 * *' + +jobs: + build: + runs-on: macos-latest + + steps: + - uses: actions/checkout@v4 + - name: Setup build directory + run: mkdir buildproducts + + - name: CMake + working-directory: ./buildproducts + run: cmake .. + + - name: Make + working-directory: ./buildproducts + run: make + + - name: Copy header files to build directory + run: | + cp include/epanet2.h buildproducts/ + cp include/epanet2_2.h buildproducts/ + cp include/epanet2_enums.h buildproducts/ + + - uses: actions/upload-artifact@v4 + with: + name: libepanet-output + path: buildproducts/ From c24f334208fe2fbcec6592d1fef6e264e1a5002b Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 19 Mar 2024 14:38:47 -0400 Subject: [PATCH 151/233] Update validate.c Fixes false negative when checking if a tank's min/max levels fall within its volume curve (see issue #767 ). --- src/validate.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/validate.c b/src/validate.c index 3eb8929..241030d 100644 --- a/src/validate.c +++ b/src/validate.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 01/25/2024 + Last Updated: 03/18/2024 ****************************************************************************** */ @@ -59,12 +59,13 @@ int validatetanks(Project *pr) { curve = &net->Curve[i]; n = curve->Npts - 1; - if ((tank->Hmin - elev) * pr->Ucf[ELEV] < curve->X[0] || - (tank->Hmax - elev) * pr->Ucf[ELEV]> curve->X[n]) + if ((tank->Hmin - elev) * pr->Ucf[ELEV] < curve->X[0] - TINY || + (tank->Hmax - elev) * pr->Ucf[ELEV] > curve->X[n] + TINY) { levelerr = 1; } } + // Report error in levels if found if (levelerr) { From efe4e218461ee3dc473256bf7eee7ad3151067b2 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Tue, 9 Apr 2024 13:32:28 -0400 Subject: [PATCH 152/233] fixes conan build, adds enums to cmake --- CMakeLists.txt | 1 + conanfile.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b912cfc..108303b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -104,6 +104,7 @@ target_include_directories(epanet2 PUBLIC ${PROJECT_SOURCE_DIR}/include) install(TARGETS epanet2 DESTINATION lib) install(FILES ./include/epanet2.h DESTINATION include) install(FILES ./include/epanet2_2.h DESTINATION include) +install(FILES ./include/epanet2_enums.h DESTINATION include) install(DIRECTORY ./src/ DESTINATION include FILES_MATCHING PATTERN "*.h") diff --git a/conanfile.py b/conanfile.py index 93c741c..089221f 100644 --- a/conanfile.py +++ b/conanfile.py @@ -38,5 +38,5 @@ class EpanetConan(ConanFile): def package_info(self): self.cpp_info.libdirs = ["lib"] - self.cpp_info.libs = ["epanet2", "epanet-output"] + self.cpp_info.libs = ["epanet2"] self.cpp_info.includedirs = ["include"] From e396bd8b58dba77a2bbd8be2d22aa108a4f60320 Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Wed, 10 Apr 2024 21:38:57 +0300 Subject: [PATCH 153/233] Update old build script Update old build script with validate.c file --- win_build/Makefile.bat | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/win_build/Makefile.bat b/win_build/Makefile.bat index 2364f69..5f804a7 100644 --- a/win_build/Makefile.bat +++ b/win_build/Makefile.bat @@ -23,9 +23,9 @@ Find /i "x86" < checkOS.tmp > StringCheck.tmp If %ERRORLEVEL% == 1 ( CALL "%SDK_PATH%bin\"SetEnv.cmd /x64 /release rem : create epanet2.dll - cl -o epanet2.dll epanet.c epanet2.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c project.c quality.c qualroute.c qualreact.c report.c rules.c smatrix.c genmmd.c /O2 /Depanet2_EXPORTS /I ..\include /I ..\run /link /DLL + cl -o epanet2.dll epanet.c epanet2.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c project.c quality.c qualroute.c qualreact.c report.c rules.c smatrix.c genmmd.c validate.c /O2 /Depanet2_EXPORTS /I ..\include /I ..\run /link /DLL rem : create runepanet.exe - cl -o runepanet.exe epanet.c epanet2.c ..\run\main.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c project.c quality.c qualroute.c qualreact.c report.c rules.c smatrix.c genmmd.c /O2 /Depanet2_EXPORTS /I ..\include /I ..\run /I ..\src /link + cl -o runepanet.exe epanet.c epanet2.c ..\run\main.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c project.c quality.c qualroute.c qualreact.c report.c rules.c smatrix.c genmmd.c validate.c /O2 /Depanet2_EXPORTS /I ..\include /I ..\run /I ..\src /link md "%Build_PATH%"\64bit move /y "%SRC_PATH%"\*.dll "%Build_PATH%"\64bit move /y "%SRC_PATH%"\*.exe "%Build_PATH%"\64bit @@ -37,9 +37,9 @@ rem : 32 bit with DEF CALL "%SDK_PATH%bin\"SetEnv.cmd /x86 /release echo "32 bit with epanet2.def mapping" rem : create epanet2.dll -cl -o epanet2.dll epanet.c epanet2.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c project.c quality.c qualroute.c qualreact.c report.c rules.c smatrix.c genmmd.c /O2 /Depanet2_EXPORTS /I ..\include /I ..\run /link /DLL /def:..\include\epanet2.def /MAP +cl -o epanet2.dll epanet.c epanet2.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c project.c quality.c qualroute.c qualreact.c report.c rules.c smatrix.c genmmd.c validate.c /O2 /Depanet2_EXPORTS /I ..\include /I ..\run /link /DLL /def:..\include\epanet2.def /MAP rem : create runepanet.exe -cl -o runepanet.exe epanet.c epanet2.c ..\run\main.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c project.c quality.c qualroute.c qualreact.c report.c rules.c smatrix.c genmmd.c /O2 /Depanet2_EXPORTS /I ..\include /I ..\run /I ..\src /link +cl -o runepanet.exe epanet.c epanet2.c ..\run\main.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c project.c quality.c qualroute.c qualreact.c report.c rules.c smatrix.c genmmd.c validate.c /O2 /Depanet2_EXPORTS /I ..\include /I ..\run /I ..\src /link md "%Build_PATH%"\32bit move /y "%SRC_PATH%"\*.dll "%Build_PATH%"\32bit move /y "%SRC_PATH%"\*.exe "%Build_PATH%"\32bit From ac09675f794c81810ad09a76746a6f109b7eeccc Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Sun, 21 Apr 2024 11:48:43 +0300 Subject: [PATCH 154/233] update cmake version --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5fdcd7c..511d6e8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ # CMake is available at https://cmake.org/download/ # -cmake_minimum_required (VERSION 2.8.8) +cmake_minimum_required (VERSION 3.5.2) project(EPANET) From 8bf2334708d9350426e9e19a64788d4dd3704623 Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Sun, 21 Apr 2024 11:48:49 +0300 Subject: [PATCH 155/233] add macos badge --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index af87356..4b8b6a2 100755 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ OWA-EPANET [![codecov](https://codecov.io/gh/OpenWaterAnalytics/EPANET/branch/master/graph/badge.svg)](https://codecov.io/gh/OpenWaterAnalytics/EPANET) [![linux](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/ccpp.yml/badge.svg)](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/ccpp.yml) +[![macos](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/macos.yml/badge.svg)](https://github. +com/OpenWaterAnalytics/EPANET/actions/workflows/macos.yml) [![epanet2-win32](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/win32.yml/badge.svg)](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/win32.yml) [![epanet2-win64](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/win64.yml/badge.svg)](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/win64.yml) From cd242aa8199f5e2d36af1ca37cb1854df54d926e Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Sun, 21 Apr 2024 11:48:57 +0300 Subject: [PATCH 156/233] add retry build. --- .github/workflows/ccpp.yml | 63 ++++++++++++++++++++++++++----------- .github/workflows/macos.yml | 37 ++++++++++++++++++---- .github/workflows/win32.yml | 20 ++++++++++-- .github/workflows/win64.yml | 25 ++++++++++++--- 4 files changed, 114 insertions(+), 31 deletions(-) diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index 090c5d6..b0c7d9b 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -9,27 +9,52 @@ on: jobs: build: runs-on: ubuntu-latest + strategy: + fail-fast: false steps: - - uses: actions/checkout@v4 - - name: Setup build directory - run: mkdir buildproducts + - uses: actions/checkout@v4 - - name: CMake - working-directory: ./buildproducts - run: cmake .. + - name: Setup build directory + run: mkdir buildproducts - - name: Make - working-directory: ./buildproducts - run: make + - name: CMake + working-directory: ./buildproducts + run: | + retry=0 + max_retries=3 + until cmake ..; do + retry=$((retry+1)) + echo "Retry $retry/$max_retries..." + if [ "$retry" -ge "$max_retries" ]; then + echo "CMake configuration failed after $max_retries attempts." + exit 1 + fi + sleep 10 + done - - name: Copy header files to build directory - run: | - cp include/epanet2.h buildproducts/ - cp include/epanet2_2.h buildproducts/ - cp include/epanet2_enums.h buildproducts/ - - - uses: actions/upload-artifact@v4 - with: - name: libepanet-output - path: buildproducts/ \ No newline at end of file + - name: Make + working-directory: ./buildproducts + run: | + retry=0 + max_retries=3 + until make; do + retry=$((retry+1)) + echo "Retry $retry/$max_retries..." + if [ "$retry" -ge "$max_retries" ]; then + echo "Make build failed after $max_retries attempts." + exit 1 + fi + sleep 10 + done + + - name: Copy header files to build directory + run: | + cp include/epanet2.h buildproducts/ + cp include/epanet2_2.h buildproducts/ + cp include/epanet2_enums.h buildproducts/ + + - uses: actions/upload-artifact@v4 + with: + name: libepanet-output + path: buildproducts/ diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index fa5913e..78b0e7f 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -9,26 +9,51 @@ on: jobs: build: runs-on: macos-latest + strategy: + fail-fast: false steps: - uses: actions/checkout@v4 + - name: Setup build directory run: mkdir buildproducts - + - name: CMake working-directory: ./buildproducts - run: cmake .. - + run: | + retry=0 + max_retries=3 + until cmake ..; do + ((retry++)) + echo "Retry $retry/$max_retries..." + if [ "$retry" -ge "$max_retries" ]; then + echo "CMake configuration failed after $max_retries attempts." + exit 1 + fi + sleep 10 + done + - name: Make working-directory: ./buildproducts - run: make - + run: | + retry=0 + max_retries=3 + until make; do + ((retry++)) + echo "Retry $retry/$max_retries..." + if [ "$retry" -ge "$max_retries" ]; then + echo "Make build failed after $max_retries attempts." + exit 1 + fi + sleep 10 + done + - name: Copy header files to build directory run: | cp include/epanet2.h buildproducts/ cp include/epanet2_2.h buildproducts/ cp include/epanet2_enums.h buildproducts/ - + - uses: actions/upload-artifact@v4 with: name: libepanet-output diff --git a/.github/workflows/win32.yml b/.github/workflows/win32.yml index cc9830f..5c5a761 100644 --- a/.github/workflows/win32.yml +++ b/.github/workflows/win32.yml @@ -9,6 +9,8 @@ on: jobs: build: runs-on: windows-latest + strategy: + fail-fast: false steps: - name: Checkout repository @@ -19,7 +21,21 @@ jobs: - name: CMake working-directory: ./buildproducts - run: cmake .. -A Win32 && cmake --build . --config Release + shell: pwsh + run: | + $retryCount = 0 + $maxRetries = 3 + do { + cmake .. -A Win32 && cmake --build . --config Release + if ($LASTEXITCODE -eq 0) { break } + Write-Host "Retry $($retryCount + 1)/$maxRetries..." + Start-Sleep -Seconds 10 + $retryCount++ + } while ($retryCount -lt $maxRetries) + if ($retryCount -eq $maxRetries) { + Write-Host "CMake build failed after $maxRetries attempts." + exit 1 + } - name: Copy header files to build directory run: | @@ -31,4 +47,4 @@ jobs: - uses: actions/upload-artifact@v4 with: name: epanet2-win32 - path: buildproducts\bin\Release \ No newline at end of file + path: buildproducts\bin\Release diff --git a/.github/workflows/win64.yml b/.github/workflows/win64.yml index 8b49817..0a1ee6f 100644 --- a/.github/workflows/win64.yml +++ b/.github/workflows/win64.yml @@ -9,6 +9,8 @@ on: jobs: build: runs-on: windows-latest + strategy: + fail-fast: false steps: - name: Checkout repository @@ -19,16 +21,31 @@ jobs: - name: CMake working-directory: ./buildproducts - run: cmake .. -A x64 && cmake --build . --config Release - + shell: pwsh + run: | + $retryCount = 0 + $maxRetries = 3 + do { + cmake .. -A x64 # Specify architecture for 64-bit + cmake --build . --config Release + if ($LASTEXITCODE -eq 0) { break } + Write-Host "Retry $($retryCount + 1)/$maxRetries..." + Start-Sleep -Seconds 10 + $retryCount++ + } while ($retryCount -lt $maxRetries) + if ($retryCount -eq $maxRetries) { + Write-Host "CMake build failed after $maxRetries attempts." + exit 1 + } + - name: Copy header files to build directory run: | copy include\epanet2.h buildproducts\bin\Release copy include\epanet2_2.h buildproducts\bin\Release copy include\epanet2_enums.h buildproducts\bin\Release shell: cmd - + - uses: actions/upload-artifact@v4 with: name: epanet2-win64 - path: buildproducts\bin\Release \ No newline at end of file + path: buildproducts\bin\Release From c5232f47a77491d7c7a314d856b0f75bffce38f4 Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Sun, 21 Apr 2024 19:13:14 +0300 Subject: [PATCH 157/233] fix badge macos link --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 4b8b6a2..0afc2a0 100755 --- a/README.md +++ b/README.md @@ -7,8 +7,7 @@ OWA-EPANET [![codecov](https://codecov.io/gh/OpenWaterAnalytics/EPANET/branch/master/graph/badge.svg)](https://codecov.io/gh/OpenWaterAnalytics/EPANET) [![linux](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/ccpp.yml/badge.svg)](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/ccpp.yml) -[![macos](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/macos.yml/badge.svg)](https://github. -com/OpenWaterAnalytics/EPANET/actions/workflows/macos.yml) +[![macos](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/macos.yml/badge.svg)](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/macos.yml) [![epanet2-win32](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/win32.yml/badge.svg)](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/win32.yml) [![epanet2-win64](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/win64.yml/badge.svg)](https://github.com/OpenWaterAnalytics/EPANET/actions/workflows/win64.yml) From 4dff3bd054282c63afe6e086887c3c6b0d35ab02 Mon Sep 17 00:00:00 2001 From: Abel Heinsbroek Date: Tue, 23 Apr 2024 11:31:17 +0200 Subject: [PATCH 158/233] add ENgetnodesvalues and ENgetlinksvalues methods --- ReleaseNotes2_3.md | 1 + include/epanet2.h | 4 ++++ include/epanet2_2.h | 25 +++++++++++++++++++++++++ src/epanet.c | 39 +++++++++++++++++++++++++++++++++++++++ src/epanet2.c | 9 +++++++++ 5 files changed, 78 insertions(+) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 67680a8..e7de309 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -53,3 +53,4 @@ This document describes the changes and updates that have been made in version 2 - `EN_PRESS_UNITS` can now be used with `EN_getoption` and `EN_setoption` to get or set the pressure unit used in EPANET. - Continuous barrier functions were added to constrain emitter flows to allowable values. - The `EN_openx` function has been added to enable the opening of input files with formatting errors through the API. This allows users to continue using toolkit functions even when such errors are present. +- The `EN_getnodesvalues` and `EN_getlinksvalues` were added to retrieve a property value for all nodes or links in the network. \ No newline at end of file diff --git a/include/epanet2.h b/include/epanet2.h index 5cc6a41..c9fe5f8 100644 --- a/include/epanet2.h +++ b/include/epanet2.h @@ -214,6 +214,8 @@ extern "C" { int DLLEXPORT ENgetnodevalue(int index, int property, EN_API_FLOAT_TYPE *value); + int DLLEXPORT ENgetnodevalues(int property, EN_API_FLOAT_TYPE *value); + int DLLEXPORT ENsetnodevalue(int index, int property, EN_API_FLOAT_TYPE value); int DLLEXPORT ENsetjuncdata(int index, EN_API_FLOAT_TYPE elev, @@ -291,6 +293,8 @@ extern "C" { int DLLEXPORT ENgetlinkvalue(int index, int property, EN_API_FLOAT_TYPE *value); + int DLLEXPORT ENgetlinksvalues(int property, EN_API_FLOAT_TYPE *value); + int DLLEXPORT ENsetlinkvalue(int index, int property, EN_API_FLOAT_TYPE value); int DLLEXPORT ENsetpipedata(int index, EN_API_FLOAT_TYPE length, diff --git a/include/epanet2_2.h b/include/epanet2_2.h index 5a3c3af..01082e7 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -881,6 +881,20 @@ typedef struct Project *EN_Project; Values are returned in units that depend on the units used for flow rate (see @ref Units). */ + + int DLLEXPORT EN_getnodesvalues(EN_Project ph, int property, double *out_values); + + /** + @brief Retrieves an array of property values for all nodes. + @param ph an EPANET project handle. + @param property the property to retrieve (see @ref EN_NodeProperty). + @param[out] values an array of values for all nodes. + @return an error code. + + Values are returned in units that depend on the units used for flow rate + (see @ref Units). + */ + int DLLEXPORT EN_getnodevalue(EN_Project ph, int index, int property, double *out_value); /** @@ -1242,6 +1256,17 @@ typedef struct Project *EN_Project; */ int DLLEXPORT EN_getlinkvalue(EN_Project ph, int index, int property, double *out_value); + /** + @brief Retrieves an array of property values for all links. + @param ph an EPANET project handle. + @param property the property to retrieve (see @ref EN_LinkProperty). + @param[out] values an array of values for all links. + @return an error code. + + Values are returned in units that depend on the units used for flow rate (see @ref Units). + */ + int DLLEXPORT EN_getlinksvalues(EN_Project ph, int property, double *out_values); + /** @brief Sets a property value for a link. @param ph an EPANET project handle. diff --git a/src/epanet.c b/src/epanet.c index 86b510b..45170f9 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2358,6 +2358,26 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val return 0; } +int DLLEXPORT EN_getnodesvalues(EN_Project p, int property, double *values) +/*---------------------------------------------------------------- +** Input: property = node property code (see EN_NodeProperty) +** Output: values = array of node property values +** Returns: error code +** Purpose: retrieves an array of node property values +**---------------------------------------------------------------- +*/ +{ + int status = 0; + + for (int i = 1; i <= p->network.Nnodes; i++) + { + status = EN_getnodevalue(p, i, property, &values[i - 1]); + // if status is not 0, return the error code + if (status != 0) { return status; } + } + return 0; +} + int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double value) /*---------------------------------------------------------------- ** Input: index = node index @@ -3903,6 +3923,25 @@ int DLLEXPORT EN_getlinkvalue(EN_Project p, int index, int property, double *val return 0; } +int DLLEXPORT EN_getlinksvalues(EN_Project p, int property, double *values) +/*---------------------------------------------------------------- +** Input: property = link property code (see EN_LinkProperty) +** Output: values = array of link property values +** Returns: error code +** Purpose: retrieves property values for all links +**---------------------------------------------------------------- +*/ +{ + int status = 0; + for(int i = 1; i <= p->network.Nlinks; i++) + { + status = EN_getlinkvalue(p, i, property, &values[i-1]); + // If an error occurs, return the error code + if(status != 0) { return status; } + } + return 0; +} + int DLLEXPORT EN_setlinkvalue(EN_Project p, int index, int property, double value) /*---------------------------------------------------------------- ** Input: index = link index diff --git a/src/epanet2.c b/src/epanet2.c index 7d7cd50..63b2217 100644 --- a/src/epanet2.c +++ b/src/epanet2.c @@ -355,6 +355,11 @@ int DLLEXPORT ENgetnodevalue(int index, int property, EN_API_FLOAT_TYPE *value) return errcode; } +int DLLEXPORT ENgetnodesvalues(int property, EN_API_FLOAT_TYPE *values) +{ + return EN_getnodesvalues(_defaultProject, property, values); +} + int DLLEXPORT ENsetnodevalue(int index, int property, EN_API_FLOAT_TYPE value) { return EN_setnodevalue(_defaultProject, index, property, value); @@ -523,6 +528,10 @@ int DLLEXPORT ENgetlinkvalue(int index, int property, EN_API_FLOAT_TYPE *value) *value = (EN_API_FLOAT_TYPE)v; return errcode; } +int DLLEXPORT ENgetlinksvalues(int property, EN_API_FLOAT_TYPE *values) +{ + return EN_getlinksvalues(_defaultProject, property, values); +} int DLLEXPORT ENsetlinkvalue(int index, int property, EN_API_FLOAT_TYPE value) { From 9637f5c092cc5cddc7e15e2201805e3b6d5939aa Mon Sep 17 00:00:00 2001 From: Abel Heinsbroek Date: Wed, 24 Apr 2024 15:20:59 +0200 Subject: [PATCH 159/233] change names of new functions to ENgetnodevalues and ENgetlinkvalues --- include/epanet2.h | 2 +- include/epanet2_2.h | 4 ++-- src/epanet.c | 4 ++-- src/epanet2.c | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/epanet2.h b/include/epanet2.h index c9fe5f8..18a7345 100644 --- a/include/epanet2.h +++ b/include/epanet2.h @@ -293,7 +293,7 @@ extern "C" { int DLLEXPORT ENgetlinkvalue(int index, int property, EN_API_FLOAT_TYPE *value); - int DLLEXPORT ENgetlinksvalues(int property, EN_API_FLOAT_TYPE *value); + int DLLEXPORT ENgetlinkvalues(int property, EN_API_FLOAT_TYPE *value); int DLLEXPORT ENsetlinkvalue(int index, int property, EN_API_FLOAT_TYPE value); diff --git a/include/epanet2_2.h b/include/epanet2_2.h index 01082e7..1094280 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -882,7 +882,7 @@ typedef struct Project *EN_Project; (see @ref Units). */ - int DLLEXPORT EN_getnodesvalues(EN_Project ph, int property, double *out_values); + int DLLEXPORT EN_getnodevalues(EN_Project ph, int property, double *out_values); /** @brief Retrieves an array of property values for all nodes. @@ -1265,7 +1265,7 @@ typedef struct Project *EN_Project; Values are returned in units that depend on the units used for flow rate (see @ref Units). */ - int DLLEXPORT EN_getlinksvalues(EN_Project ph, int property, double *out_values); + int DLLEXPORT EN_getlinkvalues(EN_Project ph, int property, double *out_values); /** @brief Sets a property value for a link. diff --git a/src/epanet.c b/src/epanet.c index 45170f9..8844cd5 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2358,7 +2358,7 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val return 0; } -int DLLEXPORT EN_getnodesvalues(EN_Project p, int property, double *values) +int DLLEXPORT EN_getnodevalues(EN_Project p, int property, double *values) /*---------------------------------------------------------------- ** Input: property = node property code (see EN_NodeProperty) ** Output: values = array of node property values @@ -3923,7 +3923,7 @@ int DLLEXPORT EN_getlinkvalue(EN_Project p, int index, int property, double *val return 0; } -int DLLEXPORT EN_getlinksvalues(EN_Project p, int property, double *values) +int DLLEXPORT EN_getlinkvalues(EN_Project p, int property, double *values) /*---------------------------------------------------------------- ** Input: property = link property code (see EN_LinkProperty) ** Output: values = array of link property values diff --git a/src/epanet2.c b/src/epanet2.c index 63b2217..82e7490 100644 --- a/src/epanet2.c +++ b/src/epanet2.c @@ -355,9 +355,9 @@ int DLLEXPORT ENgetnodevalue(int index, int property, EN_API_FLOAT_TYPE *value) return errcode; } -int DLLEXPORT ENgetnodesvalues(int property, EN_API_FLOAT_TYPE *values) +int DLLEXPORT ENgetnodevalues(int property, EN_API_FLOAT_TYPE *values) { - return EN_getnodesvalues(_defaultProject, property, values); + return EN_getnodevalues(_defaultProject, property, values); } int DLLEXPORT ENsetnodevalue(int index, int property, EN_API_FLOAT_TYPE value) @@ -528,9 +528,9 @@ int DLLEXPORT ENgetlinkvalue(int index, int property, EN_API_FLOAT_TYPE *value) *value = (EN_API_FLOAT_TYPE)v; return errcode; } -int DLLEXPORT ENgetlinksvalues(int property, EN_API_FLOAT_TYPE *values) +int DLLEXPORT ENgetlinkvalues(int property, EN_API_FLOAT_TYPE *values) { - return EN_getlinksvalues(_defaultProject, property, values); + return EN_getlinkvalues(_defaultProject, property, values); } int DLLEXPORT ENsetlinkvalue(int index, int property, EN_API_FLOAT_TYPE value) From 7e661148638506fde24192ac0112079167b8b189 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sat, 11 May 2024 12:37:52 -0400 Subject: [PATCH 160/233] Changes EMITTER BACKFLOW keyword This change avoids a conflict between the EMITTER EXPONENT and EMITTER BACKFLOW keywords when running a v2.3 input file in the v2.2 EPANET GUI. --- src/inpfile.c | 6 +++--- src/input3.c | 10 +++++----- src/text.h | 5 +++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/inpfile.c b/src/inpfile.c index e23284d..b2d82d0 100644 --- a/src/inpfile.c +++ b/src/inpfile.c @@ -1,13 +1,13 @@ /* ****************************************************************************** Project: OWA EPANET -Version: 2.2 +Version: 2.3 Module: inpfile.c Description: saves network data to an EPANET formatted text file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 04/30/2023 +Last Updated: 05/11/2024 ****************************************************************************** */ @@ -682,7 +682,7 @@ int saveinpfile(Project *pr, const char *fname) fprintf(f, "\n PATTERN %s", net->Pattern[hyd->DefPat].ID); fprintf(f, "\n DEMAND MULTIPLIER %-.4f", hyd->Dmult); fprintf(f, "\n EMITTER EXPONENT %-.4f", 1.0 / hyd->Qexp); - fprintf(f, "\n EMITTER BACKFLOW %s", BackflowTxt[hyd->EmitBackFlag]); + fprintf(f, "\n BACKFLOW ALLOWED %s", BackflowTxt[hyd->EmitBackFlag]); fprintf(f, "\n VISCOSITY %-.6f", hyd->Viscos / VISCOS); fprintf(f, "\n DIFFUSIVITY %-.6f", qual->Diffus / DIFFUS); fprintf(f, "\n SPECIFIC GRAVITY %-.6f", hyd->SpGrav); diff --git a/src/input3.c b/src/input3.c index 8c10c10..1d4f03a 100644 --- a/src/input3.c +++ b/src/input3.c @@ -7,7 +7,7 @@ Description: parses network data from a line of an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 09/28/2023 +Last Updated: 05/11/2024 ****************************************************************************** */ @@ -1832,7 +1832,7 @@ int optionchoice(Project *pr, int n) ** UNBALANCED STOP/CONTINUE {Niter} ** PATTERN id ** DEMAND MODEL DDA/PDA -** EMITTER BACKFLOW YES/NO +** BACKFLOW ALLOWED YES/NO **-------------------------------------------------------------- */ { @@ -1956,11 +1956,11 @@ int optionchoice(Project *pr, int n) hyd->DemandModel = choice; } - // EMITTER BACKFLOW - else if (match(parser->Tok[0], w_EMITTER)) + // Emitter BACKFLOW ALLOWED + else if (match(parser->Tok[0], w_BACKFLOW)) { if (n < 2) return 0; - if (!match(parser->Tok[1], w_BACKFLOW)) return -1; + if (!match(parser->Tok[1], w_ALLOWED)) return -1; choice = findmatch(parser->Tok[2], BackflowTxt); if (choice < 0) return setError(parser, 2, 213); hyd->EmitBackFlag = choice; diff --git a/src/text.h b/src/text.h index 3f3b50a..1a78573 100755 --- a/src/text.h +++ b/src/text.h @@ -1,13 +1,13 @@ /* ****************************************************************************** Project: OWA EPANET - Version: 2.2 + Version: 2.3 Module: text.h Description: string constants used throughout EPANET Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/05/2023 + Last Updated: 05/11/2024 ****************************************************************************** */ @@ -130,6 +130,7 @@ #define w_TOLERANCE "TOLER" #define w_EMITTER "EMIT" #define w_BACKFLOW "BACK" +#define w_ALLOWED "ALLOW" #define w_PRICE "PRICE" #define w_DMNDCHARGE "DEMAN" From 9307913c5bb584c7916c49e595915c1aa4c895db Mon Sep 17 00:00:00 2001 From: Dennis <65568528+zannads@users.noreply.github.com> Date: Thu, 23 May 2024 10:24:29 +0300 Subject: [PATCH 161/233] Proposed Fix for Issue #789 See the comment on the Issue. --- src/hydraul.c | 1 + src/quality.c | 1 + 2 files changed, 2 insertions(+) diff --git a/src/hydraul.c b/src/hydraul.c index 7d1718b..36c746e 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -286,6 +286,7 @@ void closehyd(Project *pr) { freesparse(pr); freematrix(pr); + freeadjlists(pr); } diff --git a/src/quality.c b/src/quality.c index 41869fe..2b8ccb6 100644 --- a/src/quality.c +++ b/src/quality.c @@ -410,6 +410,7 @@ int closequal(Project *pr) FREE(qual->FlowDir); FREE(qual->SortedNodes); } + freeadjlists(pr); return errcode; } From d50c6733213d8952daddfd823531527df5e1bbe4 Mon Sep 17 00:00:00 2001 From: Dennis <65568528+zannads@users.noreply.github.com> Date: Thu, 23 May 2024 10:33:30 +0300 Subject: [PATCH 162/233] Fix Issue #790 - incorrect number of pipes The pipe counter was not decreased if the element was a pipe. --- src/epanet.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/epanet.c b/src/epanet.c index 86b510b..4c8399f 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -3408,6 +3408,12 @@ int DLLEXPORT EN_deletelink(EN_Project p, int index, int actionCode) if (net->Valve[i].Link > index) net->Valve[i].Link -= 1; } + // Reduce the number of pipes count by one if it is a pipe. + if (linkType == PIPE) + { + net->Npipes--; + } + // Delete any pump associated with the deleted link if (linkType == PUMP) { From a74171fa265ef24931aaf91d4b9a35ab419284c0 Mon Sep 17 00:00:00 2001 From: lbutler Date: Tue, 28 May 2024 22:18:29 -0400 Subject: [PATCH 163/233] Fix emitter-related NaN errors by initializing zero EmitterFlow to 1.0. Co-Authored-By: Lew Rossman --- src/epanet.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/epanet.c b/src/epanet.c index 86b510b..7e3ef8f 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2429,6 +2429,7 @@ int DLLEXPORT EN_setnodevalue(EN_Project p, int index, int property, double valu if (value < 0.0) return 209; if (value > 0.0) value = pow((Ucf[FLOW] / value), hyd->Qexp) / Ucf[PRESSURE]; Node[index].Ke = value; + if (hyd->EmitterFlow[index] == 0.0) hyd->EmitterFlow[index] = 1.0; break; case EN_INITQUAL: From 48934c7089701153c5337c3c7299bc967626473a Mon Sep 17 00:00:00 2001 From: lbutler Date: Tue, 28 May 2024 22:23:46 -0400 Subject: [PATCH 164/233] Updated ReleaseNotes for EN_EMITTER bug --- ReleaseNotes2_3.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index 67680a8..b2f4ec9 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -53,3 +53,4 @@ This document describes the changes and updates that have been made in version 2 - `EN_PRESS_UNITS` can now be used with `EN_getoption` and `EN_setoption` to get or set the pressure unit used in EPANET. - Continuous barrier functions were added to constrain emitter flows to allowable values. - The `EN_openx` function has been added to enable the opening of input files with formatting errors through the API. This allows users to continue using toolkit functions even when such errors are present. +- Fixed a bug in EN_setnodevalue with EN_EMITTER option that could cause NaN results. \ No newline at end of file From c79f12560893be18743bba2984173c6afdbbb3e7 Mon Sep 17 00:00:00 2001 From: Dennis <65568528+zannads@users.noreply.github.com> Date: Tue, 4 Jun 2024 13:49:24 +0200 Subject: [PATCH 165/233] Fix: pass the network pointer to freeadjlists and not the project --- src/hydraul.c | 2 +- src/quality.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hydraul.c b/src/hydraul.c index 36c746e..3976921 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -286,7 +286,7 @@ void closehyd(Project *pr) { freesparse(pr); freematrix(pr); - freeadjlists(pr); + freeadjlists(&pr->network); } diff --git a/src/quality.c b/src/quality.c index 2b8ccb6..0739c15 100644 --- a/src/quality.c +++ b/src/quality.c @@ -410,7 +410,7 @@ int closequal(Project *pr) FREE(qual->FlowDir); FREE(qual->SortedNodes); } - freeadjlists(pr); + freeadjlists(&pr->network); return errcode; } From 62f0bc6db76ffe62cfa670a5218ddefb7012e10f Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Thu, 13 Jun 2024 07:49:14 -0400 Subject: [PATCH 166/233] Fix two legacy API functions --- src/epanet2.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/epanet2.c b/src/epanet2.c index 82e7490..c3c8fa2 100644 --- a/src/epanet2.c +++ b/src/epanet2.c @@ -357,7 +357,16 @@ int DLLEXPORT ENgetnodevalue(int index, int property, EN_API_FLOAT_TYPE *value) int DLLEXPORT ENgetnodevalues(int property, EN_API_FLOAT_TYPE *values) { - return EN_getnodevalues(_defaultProject, property, values); + int i, errcode = 0; + EN_API_FLOAT_TYPE value; + + for (i = 1; i <= _defaultProject->network.Nnodes; i++) + { + errcode = ENgetnodevalue(i, property, &value); + values[i-1] = value; + if (errcode != 0) return errcode; + } + return 0; } int DLLEXPORT ENsetnodevalue(int index, int property, EN_API_FLOAT_TYPE value) @@ -530,7 +539,16 @@ int DLLEXPORT ENgetlinkvalue(int index, int property, EN_API_FLOAT_TYPE *value) } int DLLEXPORT ENgetlinkvalues(int property, EN_API_FLOAT_TYPE *values) { - return EN_getlinkvalues(_defaultProject, property, values); + int i, errcode = 0; + EN_API_FLOAT_TYPE value; + + for (i = 1; i <= _defaultProject->network.Nlinks; i++) + { + errcode = ENgetlinkvalue(i, property, &value); + values[i-1] = value; + if (errcode != 0) return errcode; + } + return 0; } int DLLEXPORT ENsetlinkvalue(int index, int property, EN_API_FLOAT_TYPE value) From 6ac4156fd02e9cff1a8ba851551fca10c6294f05 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Fri, 14 Jun 2024 09:49:28 -0400 Subject: [PATCH 167/233] Update report.c Change a "printf" statement to "sprintf". --- src/report.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/report.c b/src/report.c index 31e0649..ffdc2d2 100644 --- a/src/report.c +++ b/src/report.c @@ -291,7 +291,7 @@ void writesummary(Project *pr) if (qual->Qualflag == NONE || time->Dur == 0.0) sprintf(s, FMT29); else if (qual->Qualflag == CHEM) sprintf(s, FMT30, qual->ChemName); else if (qual->Qualflag == TRACE) sprintf(s, FMT31, net->Node[qual->TraceNode].ID); - else if (qual->Qualflag == AGE) printf(s, FMT32); + else if (qual->Qualflag == AGE) sprintf(s, FMT32); writeline(pr, s); if (qual->Qualflag != NONE && time->Dur > 0) { From 317990a8d174ff972bbc22263c1be01306afa911 Mon Sep 17 00:00:00 2001 From: Yu Chun Tsao Date: Sat, 15 Jun 2024 23:48:14 +0800 Subject: [PATCH 168/233] feat: Add column headings for sections in INP file This commit includes the following changes: - Column headings have been added for each section in the INP file. - The alignment of the values has been updated to match these headings. These enhancements improve readability and understanding of the INP file. --- src/inpfile.c | 122 +++++++++++++++++++++++++++++++------------------- 1 file changed, 76 insertions(+), 46 deletions(-) diff --git a/src/inpfile.c b/src/inpfile.c index b2d82d0..39eec65 100644 --- a/src/inpfile.c +++ b/src/inpfile.c @@ -152,40 +152,46 @@ int saveinpfile(Project *pr, const char *fname) // (Leave demands for [DEMANDS] section) fprintf(f, "\n\n"); fprintf(f, s_JUNCTIONS); + fprintf(f, "\n;%-31s\t%-12s\t%-12s\t%-31s", + "ID", "Elev", "Demand", "Pattern"); for (i = 1; i <= net->Njuncs; i++) { node = &net->Node[i]; - fprintf(f, "\n %-31s %12.4f", node->ID, node->El * pr->Ucf[ELEV]); - if (node->Comment) fprintf(f, " ;%s", node->Comment); + fprintf(f, "\n %-31s\t%-12.4f", node->ID, node->El * pr->Ucf[ELEV]); + if (node->Comment) fprintf(f, "\t;%s", node->Comment); } // Write [RESERVOIRS] section fprintf(f, "\n\n"); fprintf(f, s_RESERVOIRS); + fprintf(f, "\n;%-31s\t%-12s\t%-31s", + "ID", "Head", "Pattern"); for (i = 1; i <= net->Ntanks; i++) { tank = &net->Tank[i]; if (tank->A == 0.0) { node = &net->Node[tank->Node]; - sprintf(s, " %-31s %12.4f", node->ID, node->El * pr->Ucf[ELEV]); - if ((j = tank->Pat) > 0) sprintf(s1, " %s", net->Pattern[j].ID); + sprintf(s, " %-31s\t%-12.4f", node->ID, node->El * pr->Ucf[ELEV]); + if ((j = tank->Pat) > 0) sprintf(s1, "%s", net->Pattern[j].ID); else strcpy(s1, " "); - fprintf(f, "\n%s %-31s", s, s1); - if (node->Comment) fprintf(f, " ;%s", node->Comment); + fprintf(f, "\n%s\t%-31s", s, s1); + if (node->Comment) fprintf(f, "\t;%s", node->Comment); } } // Write [TANKS] section fprintf(f, "\n\n"); fprintf(f, s_TANKS); + fprintf(f, "\n;%-31s\t%-12s\t%-12s\t%-12s\t%-12s\t%-12s\t%-12s\t%-31s\t%-12s", + "ID", "Elevation", "InitLevel", "MinLevel", "MaxLevel", "Diameter", "MinVol", "VolCurve", "Overflow"); for (i = 1; i <= net->Ntanks; i++) { tank = &net->Tank[i]; if (tank->A > 0.0) { node = &net->Node[tank->Node]; - sprintf(s, " %-31s %12.4f %12.4f %12.4f %12.4f %12.4f %12.4f", + sprintf(s, " %-31s\t%-12.4f\t%-12.4f\t%-12.4f\t%-12.4f\t%-12.4f\t%-12.4f", node->ID, node->El * pr->Ucf[ELEV], (tank->H0 - node->El) * pr->Ucf[ELEV], (tank->Hmin - node->El) * pr->Ucf[ELEV], @@ -195,15 +201,17 @@ int saveinpfile(Project *pr, const char *fname) if ((j = tank->Vcurve) > 0) sprintf(s1, "%s", net->Curve[j].ID); else if (tank->CanOverflow) strcpy(s1, "*"); else strcpy(s1, " "); - fprintf(f, "\n%s %-31s", s, s1); - if (tank->CanOverflow) fprintf(f, " YES "); - if (node->Comment) fprintf(f, " ;%s", node->Comment); + fprintf(f, "\n%s\t%-31s", s, s1); + if (tank->CanOverflow) fprintf(f, "\t%-12s", "YES"); + if (node->Comment) fprintf(f, "\t;%s", node->Comment); } } // Write [PIPES] section fprintf(f, "\n\n"); fprintf(f, s_PIPES); + fprintf(f, "\n;%-31s\t%-31s\t%-31s\t%-12s\t%-12s\t%-12s\t%-12s\t%-6s", + "ID", "Node1", "Node2", "Length", "Diameter", "Roughness", "MinorLoss", "Status"); for (i = 1; i <= net->Nlinks; i++) { link = &net->Link[i]; @@ -214,36 +222,38 @@ int saveinpfile(Project *pr, const char *fname) if (hyd->Formflag == DW) kc = kc * pr->Ucf[ELEV] * 1000.0; km = link->Km * SQR(d) * SQR(d) / 0.02517; - sprintf(s, " %-31s %-31s %-31s %12.4f %12.4f %12.4f %12.4f", + sprintf(s, " %-31s\t%-31s\t%-31s\t%-12.4f\t%-12.4f\t%-12.4f\t%-12.4f", link->ID, net->Node[link->N1].ID, net->Node[link->N2].ID, link->Len * pr->Ucf[LENGTH], d * pr->Ucf[DIAM], kc, km); if (link->Type == CVPIPE) sprintf(s2, "CV"); else if (link->Status == CLOSED) sprintf(s2, "CLOSED"); else strcpy(s2, " "); - fprintf(f, "\n%s %-6s", s, s2); - if (link->Comment) fprintf(f, " ;%s", link->Comment); + fprintf(f, "\n%s\t%-6s", s, s2); + if (link->Comment) fprintf(f, "\t;%s", link->Comment); } } // Write [PUMPS] section fprintf(f, "\n\n"); fprintf(f, s_PUMPS); + fprintf(f, "\n;%-31s\t%-31s\t%-31s\t%-12s", + "ID", "Node1", "Node2", "Parameters"); for (i = 1; i <= net->Npumps; i++) { n = net->Pump[i].Link; link = &net->Link[n]; pump = &net->Pump[i]; - sprintf(s, " %-31s %-31s %-31s", link->ID, net->Node[link->N1].ID, + sprintf(s, " %-31s\t%-31s\t%-31s", link->ID, net->Node[link->N1].ID, net->Node[link->N2].ID); // Pump has constant power - if (pump->Ptype == CONST_HP) sprintf(s1, " POWER %.4f", link->Km); + if (pump->Ptype == CONST_HP) sprintf(s1, "\tPOWER %.4f", link->Km); // Pump has a head curve else if ((j = pump->Hcurve) > 0) { - sprintf(s1, " HEAD %s", net->Curve[j].ID); + sprintf(s1, "\tHEAD %s", net->Curve[j].ID); } // Old format used for pump curve @@ -260,25 +270,26 @@ int saveinpfile(Project *pr, const char *fname) // Optional speed pattern if ((j = pump->Upat) > 0) { - sprintf(s1, " PATTERN %s", net->Pattern[j].ID); + sprintf(s1, "\tPATTERN %s", net->Pattern[j].ID); strcat(s, s1); } // Optional speed setting if (link->Kc != 1.0) { - sprintf(s1, " SPEED %.4f", link->Kc); + sprintf(s1, "\tSPEED %.4f", link->Kc); strcat(s, s1); } fprintf(f, "\n%s", s); - if (link->Comment) fprintf(f, " ;%s", link->Comment); - + if (link->Comment) fprintf(f, "\t;%s", link->Comment); } // Write [VALVES] section fprintf(f, "\n\n"); fprintf(f, s_VALVES); + fprintf(f, "\n;%-31s\t%-31s\t%-31s\t%-12s\t%-6s\t%-12s\t%-12s", + "ID", "Node1", "Node2", "Diameter", "Type", "Setting", "MinorLoss"); for (i = 1; i <= net->Nvalves; i++) { n = net->Valve[i].Link; @@ -303,7 +314,7 @@ int saveinpfile(Project *pr, const char *fname) } km = link->Km * SQR(d) * SQR(d) / 0.02517; - sprintf(s, " %-31s %-31s %-31s %12.4f %5s", + sprintf(s, " %-31s\t%-31s\t%-31s\t%-12.4f\t%-6s", link->ID, net->Node[link->N1].ID, net->Node[link->N2].ID, d * pr->Ucf[DIAM], LinkTxt[link->Type]); @@ -311,22 +322,24 @@ int saveinpfile(Project *pr, const char *fname) // For GPV, setting = head curve index if (link->Type == GPV && (j = ROUND(link->Kc)) > 0) { - sprintf(s1, "%-31s %12.4f", net->Curve[j].ID, km); + sprintf(s1, "%-31s\t%-12.4f", net->Curve[j].ID, km); } // For PCV add loss curve if present else if (link->Type == PCV && (j = net->Valve[i].Curve) > 0) { - sprintf(s1, "%12.4f %12.4f %-31s", kc, km, net->Curve[j].ID); + sprintf(s1, "%-12.4f\t%-12.4f\t%-31s", kc, km, net->Curve[j].ID); } - else sprintf(s1, "%12.4f %12.4f", kc, km); - fprintf(f, "\n%s %s", s, s1); - if (link->Comment) fprintf(f, " ;%s", link->Comment); + else sprintf(s1, "%-12.4f\t%-12.4f", kc, km); + fprintf(f, "\n%s\t%s", s, s1); + if (link->Comment) fprintf(f, "\t;%s", link->Comment); } // Write [DEMANDS] section fprintf(f, "\n\n"); fprintf(f, s_DEMANDS); + fprintf(f, "\n;%-31s\t%-14s\t%-31s\t%-31s", + "Junction", "Demand", "Pattern", "Category"); ucf = pr->Ucf[DEMAND]; for (i = 1; i <= net->Njuncs; i++) { @@ -334,11 +347,11 @@ int saveinpfile(Project *pr, const char *fname) for (demand = node->D; demand != NULL; demand = demand->next) { if (demand->Base == 0.0) continue; - sprintf(s, " %-31s %14.6f", node->ID, ucf * demand->Base); - if ((j = demand->Pat) > 0) sprintf(s1, " %-31s", net->Pattern[j].ID); + sprintf(s, " %-31s\t%-14.6f", node->ID, ucf * demand->Base); + if ((j = demand->Pat) > 0) sprintf(s1, "%-31s", net->Pattern[j].ID); else strcpy(s1, " "); - fprintf(f, "\n%s %-31s", s, s1); - if (demand->Name) fprintf(f, " ;%s", demand->Name); + fprintf(f, "\n%s\t%-31s", s, s1); + if (demand->Name) fprintf(f, "\t;%s", demand->Name); } } @@ -346,17 +359,21 @@ int saveinpfile(Project *pr, const char *fname) // Write [EMITTERS] section fprintf(f, "\n\n"); fprintf(f, s_EMITTERS); + fprintf(f, "\n;%-31s\t%-14s", + "Junction", "Coefficient"); for (i = 1; i <= net->Njuncs; i++) { node = &net->Node[i]; if (node->Ke == 0.0) continue; ke = pr->Ucf[FLOW] / pow(pr->Ucf[PRESSURE] * node->Ke, (1.0 / hyd->Qexp)); - fprintf(f, "\n %-31s %14.6f", node->ID, ke); + fprintf(f, "\n %-31s\t%-14.6f", node->ID, ke); } // Write [STATUS] section fprintf(f, "\n\n"); fprintf(f, s_STATUS); + fprintf(f, "\n;%-31s\t%-12s", + "ID", "Status/Setting"); for (i = 1; i <= net->Nlinks; i++) { link = &net->Link[i]; @@ -364,7 +381,7 @@ int saveinpfile(Project *pr, const char *fname) { if (link->Status == CLOSED) { - fprintf(f, "\n %-31s %s", link->ID, StatTxt[CLOSED]); + fprintf(f, "\n %-31s\t%s", link->ID, StatTxt[CLOSED]); } // Write pump speed here for pumps with old-style pump curve input @@ -375,7 +392,7 @@ int saveinpfile(Project *pr, const char *fname) if (pump->Hcurve == 0 && pump->Ptype != CONST_HP && link->Kc != 1.0) { - fprintf(f, "\n %-31s %-.4f", link->ID, link->Kc); + fprintf(f, "\n %-31s\t%-.4f", link->ID, link->Kc); } } } @@ -385,11 +402,11 @@ int saveinpfile(Project *pr, const char *fname) { if (link->Status == OPEN) { - fprintf(f, "\n %-31s %s", link->ID, StatTxt[OPEN]); + fprintf(f, "\n %-31s\t%s", link->ID, StatTxt[OPEN]); } if (link->Status == CLOSED) { - fprintf(f, "\n%-31s %s", link->ID, StatTxt[CLOSED]); + fprintf(f, "\n%-31s\t%s", link->ID, StatTxt[CLOSED]); } } } @@ -398,26 +415,30 @@ int saveinpfile(Project *pr, const char *fname) // (Use 6 pattern factors per line) fprintf(f, "\n\n"); fprintf(f, s_PATTERNS); + fprintf(f, "\n;%-31s\t%-12s", + "ID", "Multipliers"); for (i = 1; i <= net->Npats; i++) { if (net->Pattern[i].Comment) fprintf(f, "\n;%s", net->Pattern[i].Comment); for (j = 0; j < net->Pattern[i].Length; j++) { if (j % 6 == 0) fprintf(f, "\n %-31s", net->Pattern[i].ID); - fprintf(f, " %12.4f", net->Pattern[i].F[j]); + fprintf(f, "\t%-12.4f", net->Pattern[i].F[j]); } } // Write [CURVES] section fprintf(f, "\n\n"); fprintf(f, s_CURVES); + fprintf(f, "\n;%-31s\t%-12s\t%-12s", + "ID", "X-Value", "Y-Value"); for (i = 1; i <= net->Ncurves; i++) { if (net->Curve[i].Comment) fprintf(f, "\n;%s", net->Curve[i].Comment); for (j = 0; j < net->Curve[i].Npts; j++) { curve = &net->Curve[i]; - fprintf(f, "\n %-31s %12.4f %12.4f", curve->ID, curve->X[j], curve->Y[j]); + fprintf(f, "\n %-31s\t%-12.4f\t%-12.4f", curve->ID, curve->X[j], curve->Y[j]); } } @@ -502,39 +523,42 @@ int saveinpfile(Project *pr, const char *fname) // (Skip nodes with default quality of 0) fprintf(f, "\n\n"); fprintf(f, s_QUALITY); + fprintf(f, "\n;%-31s\t%-14s", "ID", "InitQual"); for (i = 1; i <= net->Nnodes; i++) { node = &net->Node[i]; if (node->C0 == 0.0) continue; - fprintf(f, "\n %-31s %14.6f", node->ID, node->C0 * pr->Ucf[QUALITY]); + fprintf(f, "\n %-31s\t%-14.6f", node->ID, node->C0 * pr->Ucf[QUALITY]); } // Write [SOURCES] section fprintf(f, "\n\n"); fprintf(f, s_SOURCES); + fprintf(f, "\n;%-31s\t%-9s\t%-14s\t%-31s", "ID", "Type", "Quality", "Pattern"); for (i = 1; i <= net->Nnodes; i++) { node = &net->Node[i]; source = node->S; if (source == NULL) continue; - sprintf(s, " %-31s %-8s %14.6f", node->ID, SourceTxt[source->Type], + sprintf(s, " %-31s\t%-9s\t%-14.6f", node->ID, SourceTxt[source->Type], source->C0); if ((j = source->Pat) > 0) { sprintf(s1, "%s", net->Pattern[j].ID); } else strcpy(s1, ""); - fprintf(f, "\n%s %s", s, s1); + fprintf(f, "\n%s\t%s", s, s1); } // Write [MIXING] section fprintf(f, "\n\n"); fprintf(f, s_MIXING); + fprintf(f, "\n;%-31s\t%-8s", "ID", "Model"); for (i = 1; i <= net->Ntanks; i++) { tank = &net->Tank[i]; if (tank->A == 0.0) continue; - fprintf(f, "\n %-31s %-8s %12.4f", net->Node[tank->Node].ID, + fprintf(f, "\n %-31s\t%-8s\t%12.4f", net->Node[tank->Node].ID, MixTxt[tank->MixModel], tank->V1frac); } @@ -558,6 +582,10 @@ int saveinpfile(Project *pr, const char *fname) fprintf(f, "\n ROUGHNESS CORRELATION %-.6f", qual->Rfactor); } + fprintf(f, "\n\n"); + fprintf(f, s_REACTIONS); + fprintf(f, "\n;%-9s\t%-31s\t%-12s", "Type", "Pipe/Tank", "Coefficient"); + // Pipe-specific parameters for (i = 1; i <= net->Nlinks; i++) { @@ -565,11 +593,11 @@ int saveinpfile(Project *pr, const char *fname) if (link->Type > PIPE) continue; if (link->Kb != qual->Kbulk) { - fprintf(f, "\n BULK %-31s %-.6f", link->ID, link->Kb * SECperDAY); + fprintf(f, "\n %-9s\t%-31s\t%-.6f", "BULK", link->ID, link->Kb * SECperDAY); } if (link->Kw != qual->Kwall) { - fprintf(f, "\n WALL %-31s %-.6f", link->ID, link->Kw * SECperDAY); + fprintf(f, "\n %-9s\t%-31s\t%-.6f", "WALL", link->ID, link->Kw * SECperDAY); } } @@ -580,7 +608,7 @@ int saveinpfile(Project *pr, const char *fname) if (tank->A == 0.0) continue; if (tank->Kb != qual->Kbulk) { - fprintf(f, "\n TANK %-31s %-.6f", net->Node[tank->Node].ID, + fprintf(f, "\n %-9s\t%-31s\t%-.6f", "TANK", net->Node[tank->Node].ID, tank->Kb * SECperDAY); } } @@ -793,23 +821,25 @@ int saveinpfile(Project *pr, const char *fname) // Write [COORDINATES] section fprintf(f, "\n\n"); fprintf(f, s_COORDS); + fprintf(f, "\n;%-31s\t%-14s\t%-14s", "ID", "X-Coord", "Y-Coord"); for (i = 1; i <= net->Nnodes; i++) { node = &net->Node[i]; if (node->X == MISSING || node->Y == MISSING) continue; - fprintf(f, "\n %-31s %14.6f %14.6f", node->ID, node->X, node->Y); + fprintf(f, "\n %-31s\t%-14.6f\t%-14.6f", node->ID, node->X, node->Y); } // Write [VERTICES] section fprintf(f, "\n\n"); fprintf(f, s_VERTICES); + fprintf(f, "\n;%-31s\t%-14s\t%-14s", "ID", "X-Coord", "Y-Coord"); for (i = 1; i <= net->Nlinks; i++) { link = &net->Link[i]; if (link->Vertices != NULL) { for (j = 0; j < link->Vertices->Npts; j++) - fprintf(f, "\n %-31s %14.6f %14.6f", + fprintf(f, "\n %-31s\t%-14.6f\t%-14.6f", link->ID, link->Vertices->X[j], link->Vertices->Y[j]); } } From 96cb4c9c886daf297c2b50e33c6aab09ae2f4243 Mon Sep 17 00:00:00 2001 From: Yu Chun Tsao Date: Wed, 19 Jun 2024 00:38:05 +0800 Subject: [PATCH 169/233] fix: Use two semicolons in each heading line --- src/inpfile.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/inpfile.c b/src/inpfile.c index 39eec65..ec786b2 100644 --- a/src/inpfile.c +++ b/src/inpfile.c @@ -152,7 +152,7 @@ int saveinpfile(Project *pr, const char *fname) // (Leave demands for [DEMANDS] section) fprintf(f, "\n\n"); fprintf(f, s_JUNCTIONS); - fprintf(f, "\n;%-31s\t%-12s\t%-12s\t%-31s", + fprintf(f, "\n;;%-31s\t%-12s\t%-12s\t%-31s", "ID", "Elev", "Demand", "Pattern"); for (i = 1; i <= net->Njuncs; i++) { @@ -164,7 +164,7 @@ int saveinpfile(Project *pr, const char *fname) // Write [RESERVOIRS] section fprintf(f, "\n\n"); fprintf(f, s_RESERVOIRS); - fprintf(f, "\n;%-31s\t%-12s\t%-31s", + fprintf(f, "\n;;%-31s\t%-12s\t%-31s", "ID", "Head", "Pattern"); for (i = 1; i <= net->Ntanks; i++) { @@ -183,7 +183,7 @@ int saveinpfile(Project *pr, const char *fname) // Write [TANKS] section fprintf(f, "\n\n"); fprintf(f, s_TANKS); - fprintf(f, "\n;%-31s\t%-12s\t%-12s\t%-12s\t%-12s\t%-12s\t%-12s\t%-31s\t%-12s", + fprintf(f, "\n;;%-31s\t%-12s\t%-12s\t%-12s\t%-12s\t%-12s\t%-12s\t%-31s\t%-12s", "ID", "Elevation", "InitLevel", "MinLevel", "MaxLevel", "Diameter", "MinVol", "VolCurve", "Overflow"); for (i = 1; i <= net->Ntanks; i++) { @@ -210,7 +210,7 @@ int saveinpfile(Project *pr, const char *fname) // Write [PIPES] section fprintf(f, "\n\n"); fprintf(f, s_PIPES); - fprintf(f, "\n;%-31s\t%-31s\t%-31s\t%-12s\t%-12s\t%-12s\t%-12s\t%-6s", + fprintf(f, "\n;;%-31s\t%-31s\t%-31s\t%-12s\t%-12s\t%-12s\t%-12s\t%-6s", "ID", "Node1", "Node2", "Length", "Diameter", "Roughness", "MinorLoss", "Status"); for (i = 1; i <= net->Nlinks; i++) { @@ -237,7 +237,7 @@ int saveinpfile(Project *pr, const char *fname) // Write [PUMPS] section fprintf(f, "\n\n"); fprintf(f, s_PUMPS); - fprintf(f, "\n;%-31s\t%-31s\t%-31s\t%-12s", + fprintf(f, "\n;;%-31s\t%-31s\t%-31s\t%-12s", "ID", "Node1", "Node2", "Parameters"); for (i = 1; i <= net->Npumps; i++) { @@ -288,7 +288,7 @@ int saveinpfile(Project *pr, const char *fname) // Write [VALVES] section fprintf(f, "\n\n"); fprintf(f, s_VALVES); - fprintf(f, "\n;%-31s\t%-31s\t%-31s\t%-12s\t%-6s\t%-12s\t%-12s", + fprintf(f, "\n;;%-31s\t%-31s\t%-31s\t%-12s\t%-6s\t%-12s\t%-12s", "ID", "Node1", "Node2", "Diameter", "Type", "Setting", "MinorLoss"); for (i = 1; i <= net->Nvalves; i++) { @@ -338,7 +338,7 @@ int saveinpfile(Project *pr, const char *fname) // Write [DEMANDS] section fprintf(f, "\n\n"); fprintf(f, s_DEMANDS); - fprintf(f, "\n;%-31s\t%-14s\t%-31s\t%-31s", + fprintf(f, "\n;;%-31s\t%-14s\t%-31s\t%-31s", "Junction", "Demand", "Pattern", "Category"); ucf = pr->Ucf[DEMAND]; for (i = 1; i <= net->Njuncs; i++) @@ -359,7 +359,7 @@ int saveinpfile(Project *pr, const char *fname) // Write [EMITTERS] section fprintf(f, "\n\n"); fprintf(f, s_EMITTERS); - fprintf(f, "\n;%-31s\t%-14s", + fprintf(f, "\n;;%-31s\t%-14s", "Junction", "Coefficient"); for (i = 1; i <= net->Njuncs; i++) { @@ -372,7 +372,7 @@ int saveinpfile(Project *pr, const char *fname) // Write [STATUS] section fprintf(f, "\n\n"); fprintf(f, s_STATUS); - fprintf(f, "\n;%-31s\t%-12s", + fprintf(f, "\n;;%-31s\t%-12s", "ID", "Status/Setting"); for (i = 1; i <= net->Nlinks; i++) { @@ -415,7 +415,7 @@ int saveinpfile(Project *pr, const char *fname) // (Use 6 pattern factors per line) fprintf(f, "\n\n"); fprintf(f, s_PATTERNS); - fprintf(f, "\n;%-31s\t%-12s", + fprintf(f, "\n;;%-31s\t%-12s", "ID", "Multipliers"); for (i = 1; i <= net->Npats; i++) { @@ -430,7 +430,7 @@ int saveinpfile(Project *pr, const char *fname) // Write [CURVES] section fprintf(f, "\n\n"); fprintf(f, s_CURVES); - fprintf(f, "\n;%-31s\t%-12s\t%-12s", + fprintf(f, "\n;;%-31s\t%-12s\t%-12s", "ID", "X-Value", "Y-Value"); for (i = 1; i <= net->Ncurves; i++) { @@ -523,7 +523,7 @@ int saveinpfile(Project *pr, const char *fname) // (Skip nodes with default quality of 0) fprintf(f, "\n\n"); fprintf(f, s_QUALITY); - fprintf(f, "\n;%-31s\t%-14s", "ID", "InitQual"); + fprintf(f, "\n;;%-31s\t%-14s", "ID", "InitQual"); for (i = 1; i <= net->Nnodes; i++) { node = &net->Node[i]; @@ -534,7 +534,7 @@ int saveinpfile(Project *pr, const char *fname) // Write [SOURCES] section fprintf(f, "\n\n"); fprintf(f, s_SOURCES); - fprintf(f, "\n;%-31s\t%-9s\t%-14s\t%-31s", "ID", "Type", "Quality", "Pattern"); + fprintf(f, "\n;;%-31s\t%-9s\t%-14s\t%-31s", "ID", "Type", "Quality", "Pattern"); for (i = 1; i <= net->Nnodes; i++) { node = &net->Node[i]; @@ -553,7 +553,7 @@ int saveinpfile(Project *pr, const char *fname) // Write [MIXING] section fprintf(f, "\n\n"); fprintf(f, s_MIXING); - fprintf(f, "\n;%-31s\t%-8s", "ID", "Model"); + fprintf(f, "\n;;%-31s\t%-8s", "ID", "Model"); for (i = 1; i <= net->Ntanks; i++) { tank = &net->Tank[i]; @@ -584,7 +584,7 @@ int saveinpfile(Project *pr, const char *fname) fprintf(f, "\n\n"); fprintf(f, s_REACTIONS); - fprintf(f, "\n;%-9s\t%-31s\t%-12s", "Type", "Pipe/Tank", "Coefficient"); + fprintf(f, "\n;;%-9s\t%-31s\t%-12s", "Type", "Pipe/Tank", "Coefficient"); // Pipe-specific parameters for (i = 1; i <= net->Nlinks; i++) @@ -821,7 +821,7 @@ int saveinpfile(Project *pr, const char *fname) // Write [COORDINATES] section fprintf(f, "\n\n"); fprintf(f, s_COORDS); - fprintf(f, "\n;%-31s\t%-14s\t%-14s", "ID", "X-Coord", "Y-Coord"); + fprintf(f, "\n;;%-31s\t%-14s\t%-14s", "ID", "X-Coord", "Y-Coord"); for (i = 1; i <= net->Nnodes; i++) { node = &net->Node[i]; @@ -832,7 +832,7 @@ int saveinpfile(Project *pr, const char *fname) // Write [VERTICES] section fprintf(f, "\n\n"); fprintf(f, s_VERTICES); - fprintf(f, "\n;%-31s\t%-14s\t%-14s", "ID", "X-Coord", "Y-Coord"); + fprintf(f, "\n;;%-31s\t%-14s\t%-14s", "ID", "X-Coord", "Y-Coord"); for (i = 1; i <= net->Nlinks; i++) { link = &net->Link[i]; From 0329819f04eca7e741f8b5a780aa5a63f53b52d3 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Mon, 24 Jun 2024 13:08:13 -0400 Subject: [PATCH 170/233] fixes regression related to tank fill/empty events In the affected code, q is really just a proxy for flow direction. And in cases where a tank has filled in a previous step, its connected link will have been TEMPCLOSED making the flow pretty small. When this occurs, the link actually never opens even if dH says that the tank should be draining. --- src/hydstatus.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hydstatus.c b/src/hydstatus.c index e746e58..6367dc0 100644 --- a/src/hydstatus.c +++ b/src/hydstatus.c @@ -433,10 +433,10 @@ void tankstatus(Project *pr, int k, int n, double q) if (tank->A == 0.0) return; // Can't add flow to a full tank - if (hyd->NodeHead[n] >= tank->Hmax && !tank->CanOverflow && q < TINY) + if (hyd->NodeHead[n] >= tank->Hmax && !tank->CanOverflow && q < 0.0) hyd->LinkStatus[k] = TEMPCLOSED; // Can't remove flow from an empty tank - else if (hyd->NodeHead[n] <= tank->Hmin && q > -TINY) + else if (hyd->NodeHead[n] <= tank->Hmin && q > 0.0) hyd->LinkStatus[k] = TEMPCLOSED; } From 31cfd60943fad56706c193a69eafe4a02dfcdae7 Mon Sep 17 00:00:00 2001 From: Sam Hatchett Date: Mon, 24 Jun 2024 15:10:06 -0400 Subject: [PATCH 171/233] fixes compilation with old compilers and keeps our programming conventions of declaring variables --- src/epanet.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 8583c14..991024c 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2367,9 +2367,9 @@ int DLLEXPORT EN_getnodevalues(EN_Project p, int property, double *values) **---------------------------------------------------------------- */ { - int status = 0; + int status = 0, i = 0; - for (int i = 1; i <= p->network.Nnodes; i++) + for (i = 1; i <= p->network.Nnodes; i++) { status = EN_getnodevalue(p, i, property, &values[i - 1]); // if status is not 0, return the error code @@ -3939,8 +3939,8 @@ int DLLEXPORT EN_getlinkvalues(EN_Project p, int property, double *values) **---------------------------------------------------------------- */ { - int status = 0; - for(int i = 1; i <= p->network.Nlinks; i++) + int status = 0, i = 0; + for(i = 1; i <= p->network.Nlinks; i++) { status = EN_getlinkvalue(p, i, property, &values[i-1]); // If an error occurs, return the error code From b0796f346a4a6de9718a6ed4097dc8699c2fdc81 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 26 Jun 2024 11:15:01 -0400 Subject: [PATCH 172/233] Adding leakage model --- ReleaseNotes2_3.md | 17 +- include/epanet2.bas | 11 +- include/epanet2.cs | 25 +- include/epanet2.def | 17 +- include/epanet2.pas | 304 ++++++++++++----------- include/epanet2.vb | 14 +- include/epanet2_enums.h | 13 +- src/enumstxt.h | 4 +- src/epanet.c | 66 ++++- src/flowbalance.c | 191 +++++++++++++++ src/funcs.h | 19 +- src/hydcoeffs.c | 5 +- src/hydraul.c | 19 +- src/hydsolver.c | 93 ++++--- src/inpfile.c | 17 +- src/input1.c | 6 +- src/input2.c | 1 + src/input3.c | 41 ++++ src/leakage.c | 531 ++++++++++++++++++++++++++++++++++++++++ src/project.c | 11 +- src/report.c | 38 +++ src/text.h | 6 +- src/types.h | 43 +++- tests/CMakeLists.txt | 1 + tests/test_leakage.cpp | 93 +++++++ 25 files changed, 1365 insertions(+), 221 deletions(-) create mode 100644 src/flowbalance.c create mode 100644 src/leakage.c create mode 100644 tests/test_leakage.cpp diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index ea5e96d..e561ee8 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -4,6 +4,7 @@ This document describes the changes and updates that have been made in version 2.3 of EPANET. - The check for at least two nodes, one tank/reservoir and no unconnected junction nodes was moved from `EN_open` to `EN_openH` and `EN_openQ` so that partial network data files could be opened by the toolkit. + - A `EN_setcurvetype` function was added to allow API clients to set a curve's type (e.g., `EN_PUMP_CURVE,` `EN_VOLUME_CURVE,` etc.). - A `EN_setvertex` function was added to allow API clients to change the coordinates of a single link vertex. - The indices of a General Purpose Valve (GPV) and a Positional Control Valve (PCV) were added to the list of editable Link Properties using the symbolic constant names `EN_GPV_CURVE` and `EN_PCV_CURVE`, respectively. @@ -52,6 +53,20 @@ This document describes the changes and updates that have been made in version 2 - Setting the demand multiplier within the `[DEMANDS]` section of INP has been depreciated, please use `DEMAND MULTIPLIER` inside `[OPTIONS]` instead. - `EN_PRESS_UNITS` can now be used with `EN_getoption` and `EN_setoption` to get or set the pressure unit used in EPANET. - Continuous barrier functions were added to constrain emitter flows to allowable values. -- The `EN_openx` function has been added to enable the opening of input files with formatting errors through the API. This allows users to continue using toolkit functions even when such errors are present. +- The `EN_openX` function has been added to enable the opening of input files with formatting errors through the API. This allows users to continue using toolkit functions even when such errors are present. - The `EN_getnodesvalues` and `EN_getlinksvalues` were added to retrieve a property value for all nodes or links in the network. - Fixed a bug in EN_setnodevalue with EN_EMITTER option that could cause NaN results. +- Support has been added for FAVAD (Fixed And Variable Area Discharge) modeling of pipe leaks: + - A new `[LEAKAGE]` section has been added to the input file format where each line contains the ID name of a pipe, its leak area in sq. mm per 100 length units, and its leak expansion rate in sq. mm per unit of pressure head. + - `EN_LEAK_AREA` and `EN_LEAK_EXPAN` can be used with the functions `EN_getlinkvalue` and `EN_setlinkvalue` to retrieve and assign values for a pipe's leak area and expansion properties. + - `EN_LINK_LEAKAGE` can be used with `EN_getlinkvalue` to retrieve a pipe's leakage rate at a given point in time. + - `EN_LEAKAGEFLOW` can be used with `EN_getnodevalue` to retrieve the leakage demand generated at a node from all its connecting pipes at a given point in time. + - `EN_LEAKAGELOSS` can be used with `EN_getstatistic` to retrieve the the total leakage loss in the system at a given point in time as a percentage of total flow entering the system. +- A new Flow Balance Report has been added to end of a simulation run's Status Report that lists the various components of the system's total inflow and outflow over the simulation period. It also displays the ratio of outflow to inflow as a check on flow continuity. +- The following constants can be used with EN_getnodevalue to retrieve the components of a node's total demand at a given point in time: + - `EN_FULLDEMAND` - the consumer demand requested + - `EN_DEMANDFLOW` - the consumer demand delivered + - `EN_DEMANDDEFICIT` - the difference between the consumer demand requested and delivered + - `EN_EMITTERFLOW` - the node's emitter flow + - `EN_LEAKAGEFLOW` - the node's leakage flow + - `EN_DEMAND` - the sum of the node's consumer demand, emitter flow, and leakage flow \ No newline at end of file diff --git a/include/epanet2.bas b/include/epanet2.bas index 6d70759..6ddb0ad 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -5,7 +5,7 @@ Attribute VB_Name = "Module1" 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) -'Last updated on 09/28/2023 +'Last updated on 06/23/2024 ' These are codes used by the DLL functions Public Const EN_ELEVATION = 0 ' Node parameters @@ -38,6 +38,9 @@ Public Const EN_CANOVERFLOW = 26 Public Const EN_DEMANDDEFICIT = 27 Public Const EN_NODE_INCONTROL = 28 Public Const EN_EMITTERFLOW = 29 +Public Const EN_LEAKAGEFLOW = 30 +Public Const EN_DEMANDFLOW = 31 +Public Const EN_FULLDEMAND = 32 Public Const EN_DIAMETER = 0 ' Link parameters Public Const EN_LENGTH = 1 @@ -65,6 +68,9 @@ Public Const EN_PUMP_EPAT = 22 Public Const EN_LINK_INCONTROL = 23 Public Const EN_GPV_CURVE = 24 Public Const EN_PCV_CURVE = 25 +Public Const EN_LEAK_AREA = 26 +Public Const EN_LEAK_EXPAN = 27 +Public Const EN_LINK_LEAKAGE = 28 Public Const EN_DURATION = 0 ' Time parameters Public Const EN_HYDSTEP = 1 @@ -90,6 +96,7 @@ Public Const EN_MAXFLOWCHANGE = 3 Public Const EN_MASSBALANCE = 4 Public Const EN_DEFICIENTNODES = 5 Public Const EN_DEMANDREDUCTION = 6 +Public Const EN_LEAKAGELOSS = 7 Public Const EN_NODE = 0 ' Component types Public Const EN_LINK = 1 @@ -350,6 +357,7 @@ Public Const EN_TRUE = 1 ' boolean true Declare Function ENsettankdata Lib "epanet2.dll" (ByVal index As Long, ByVal elev As Single, ByVal initlvl As Single, ByVal minlvl As Single, ByVal maxlvl As Single, ByVal diam As Single, ByVal minvol As Single, ByVal volcurve As String) As Long Declare Function ENgetcoord Lib "epanet2.dll" (ByVal index As Long, x As Double, y As Double) As Long Declare Function ENsetcoord Lib "epanet2.dll" (ByVal index As Long, ByVal x As Double, ByVal y As Double) As Long + Declare Function ENgetnodevalues Lib "epanet2.dll" (ByVal property as Long, values as Any) As Long 'Nodal Demand Functions Declare Function ENgetdemandmodel Lib "epanet2.dll" (type_ As Long, pmin As Single, preq As Single, pexp As Single) As Long @@ -382,6 +390,7 @@ Public Const EN_TRUE = 1 ' boolean true Declare Function ENgetvertex Lib "epanet2.dll" (ByVal index As Long, ByVal vertex As Long, x As Double, y As Double) As Long Declare Function ENsetvertex Lib "epanet2.dll" (ByVal index As Long, ByVal vertex As Long, ByVal x As Double, ByVal y As Double) As Long Declare Function ENsetvertices Lib "epanet2.dll" (ByVal index As Long, xCoords As Any, yCoords As Any, ByVal count As Long) As Long + Declare Function ENgetlinkvalues Lib "epanet2.dll" (ByVal property as Long, values as Any) As Long 'Pump Functions Declare Function ENgetheadcurveindex Lib "epanet2.dll" (ByVal linkIndex As Long, curveIndex As Long) As Long diff --git a/include/epanet2.cs b/include/epanet2.cs index 57668bf..0327c4d 100644 --- a/include/epanet2.cs +++ b/include/epanet2.cs @@ -3,7 +3,7 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; //epanet2.cs[By Oscar Vegas] -//Last updated on 09/28/2023 +//Last updated on 06/23/2024 //Declarations of functions in the EPANET PROGRAMMERs TOOLKIT //(EPANET2.DLL) for use with C# @@ -50,6 +50,9 @@ namespace EpanetCSharpLibrary public const int EN_DEMANDDEFICIT = 27; public const int EN_NODE_INCONTROL = 28; public const int EN_EMITTERFLOW = 29; + public const int EN_LEAKAGEFLOW = 30; + public const int EN_DEMANDFLOW = 31; + public const int EN_FULLDEMAND = 32; public const int EN_DIAMETER = 0; //Link parameters public const int EN_LENGTH = 1; @@ -78,6 +81,9 @@ namespace EpanetCSharpLibrary public const int EN_LINK_INCONTROL = 23; public const int EN_GPV_CURVE = 24; public const int EN_PCV_CURVE = 25; + public const int EN_LEAK_AREA = 26; + public const int EN_LEAK_EXPAN = 27; + public const int EN_LINK_LEAKAGE = 28; public const int EN_DURATION = 0; //Time parameters public const int EN_HYDSTEP = 1; @@ -102,6 +108,7 @@ namespace EpanetCSharpLibrary public const int EN_MASSBALANCE = 4; public const int EN_DEFICIENTNODES = 5; public const int EN_DEMANDREDUCTION = 6; + public const int EN_LEAKAGELOSS = 7; public const int EN_NODE = 0; //Component types public const int EN_LINK = 1; @@ -390,6 +397,9 @@ namespace EpanetCSharpLibrary [DllImport(EPANETDLL, EntryPoint = "ENgetresultindex")] public static extern int ENgetresultindex(int type, int index, ref int value); + [DllImport(EPANETDLL, EntryPoint = "ENtimetonextevent")] + public static extern int ENtimetonextevent(ref int eventType, ref long duration, ref int elementIndex); + //Analysis Options Functions [DllImport(EPANETDLL, EntryPoint = "ENgetoption")] @@ -440,10 +450,10 @@ namespace EpanetCSharpLibrary public static extern int ENgetnodetype(int index, ref int nodeType); [DllImport(EPANETDLL, EntryPoint = "ENgetnodevalue")] - public static extern int ENgetnodevalue(int index, int paramcode, ref float value); + public static extern int ENgetnodevalue(int index, int param, ref float value); [DllImport(EPANETDLL, EntryPoint = "ENsetnodevalue")] - public static extern int ENsetnodevalue(int index, int code, float value); + public static extern int ENsetnodevalue(int index, int param, float value); [DllImport(EPANETDLL, EntryPoint = "ENsetjuncdata")] public static extern int ENsetjuncdata(int index, float elev, float dmnd, string dmndpat); @@ -457,6 +467,8 @@ namespace EpanetCSharpLibrary [DllImport(EPANETDLL, EntryPoint = "ENsetcoord")] public static extern int ENsetcoord(int index, double x, double y); + [DllImport(EPANETDLL, EntryPoint = "ENgetnodevalues")] + public static extern int ENgetnodevalues(int param, ref float values); //Nodal Demand Functions [DllImport(EPANETDLL, EntryPoint = "ENgetdemandmodel")] @@ -525,10 +537,10 @@ namespace EpanetCSharpLibrary public static extern int ENsetlinknodes(int index, int node1, int node2); [DllImport(EPANETDLL, EntryPoint = "ENgetlinkvalue")] - public static extern int ENgetlinkvalue(int index, int code, ref float value); + public static extern int ENgetlinkvalue(int index, int param, ref float value); [DllImport(EPANETDLL, EntryPoint = "ENsetlinkvalue")] - public static extern int ENsetlinkvalue(int index, int code, float value); + public static extern int ENsetlinkvalue(int index, int param, float value); [DllImport(EPANETDLL, EntryPoint = "ENsetpipedata")] public static extern int ENsetpipedata(int index, float length, float diam, float rough, float mloss); @@ -542,6 +554,9 @@ namespace EpanetCSharpLibrary [DllImport(EPANETDLL, EntryPoint = "ENsetvertices")] public static extern int ENsetvertices(int index, ref double[] x, ref double[] y, int count); + [DllImport(EPANETDLL, EntryPoint = "ENgetlinkvalues")] + public static extern int ENgetlinkvalues(int param, ref float values); + //Pump Functions [DllImport(EPANETDLL, EntryPoint = "ENgetheadcurveindex")] diff --git a/include/epanet2.def b/include/epanet2.def index f5372af..d3472c1 100644 --- a/include/epanet2.def +++ b/include/epanet2.def @@ -25,6 +25,7 @@ EXPORTS ENgetbasedemand = _ENgetbasedemand@12 ENgetcomment = _ENgetcomment@12 ENgetcontrol = _ENgetcontrol@24 + ENgetcontrolenabled = _ENgetcontrolenabled@8 ENgetcoord = _ENgetcoord@12 ENgetcount = _ENgetcount@8 ENgetcurve = _ENgetcurve@20 @@ -44,13 +45,14 @@ EXPORTS ENgetlinkid = _ENgetlinkid@8 ENgetlinkindex = _ENgetlinkindex@8 ENgetlinknodes = _ENgetlinknodes@12 - ENsetlinknodes = _ENsetlinknodes@12 ENgetlinktype = _ENgetlinktype@8 ENgetlinkvalue = _ENgetlinkvalue@12 + ENgetlinkvalues = _ENgetlinkvalues@8 ENgetnodeid = _ENgetnodeid@8 ENgetnodeindex = _ENgetnodeindex@8 ENgetnodetype = _ENgetnodetype@8 - ENgetnodevalue = _ENgetnodevalue@12 + ENgetnodevalue = _ENgetnodevalue@12 + ENgetnodevalues = _ENgetnodevalues@8 ENgetnumdemands = _ENgetnumdemands@8 ENgetoption = _ENgetoption@8 ENgetpatternid = _ENgetpatternid@8 @@ -63,6 +65,7 @@ EXPORTS ENgetqualtype = _ENgetqualtype@8 ENgetresultindex = _ENgetresultindex@12 ENgetrule = _ENgetrule@20 + ENgetruleenabled = _ENgetruleenabled@8 ENgetruleID = _ENgetruleID@8 ENgetstatistic = _ENgetstatistic@8 ENgetthenaction = _ENgetthenaction@20 @@ -79,6 +82,7 @@ EXPORTS ENopen = _ENopen@12 ENopenH = _ENopenH@0 ENopenQ = _ENopenQ@0 + ENopenX = _ENopenX@12 ENreport = _ENreport@0 ENresetreport = _ENresetreport@0 ENrunH = _ENrunH@4 @@ -89,6 +93,7 @@ EXPORTS ENsetbasedemand = _ENsetbasedemand@12 ENsetcomment = _ENsetcomment@12 ENsetcontrol = _ENsetcontrol@24 + ENsetcontrolenabled = _ENsetcontrolenabled@8 ENsetcoord = _ENsetcoord@20 ENsetcurve = _ENsetcurve@16 ENsetcurveid = _ENsetcurveid@8 @@ -118,6 +123,7 @@ EXPORTS ENsetpremisevalue = _ENsetpremisevalue@12 ENsetqualtype = _ENsetqualtype@16 ENsetreport = _ENsetreport@4 + ENsetruleenabled = _ENsetruleenabled@8 ENsetrulepriority = _ENsetrulepriority@8 ENsetstatusreport = _ENsetstatusreport@4 ENsettankdata = _ENsettankdata@32 @@ -129,11 +135,6 @@ EXPORTS ENsolveH = _ENsolveH@0 ENsolveQ = _ENsolveQ@0 ENstepQ = _ENstepQ@4 + ENtimetonextevent = _ENtimetonextevent@12 ENusehydfile = _ENusehydfile@4 ENwriteline = _ENwriteline@4 - ENtimetonextevent = _ENtimetonextevent@12 - ENopenX = _ENopenX@12 - ENgetcontrolenabled = _ENgetcontrolenabled@8 - ENsetcontrolenabled = _ENsetcontrolenabled@8 - ENgetruleenabled = _ENgetruleenabled@8 - ENsetruleenabled = _ENsetruleenabled@8 diff --git a/include/epanet2.pas b/include/epanet2.pas index 4ce4a03..6f2e8da 100644 --- a/include/epanet2.pas +++ b/include/epanet2.pas @@ -3,7 +3,7 @@ unit epanet2; { Declarations of imported procedures from the EPANET PROGRAMMERs TOOLKIT } { (EPANET2.DLL) } -{Last updated on 09/28/2023} +{Last updated on 06/06/2024} interface @@ -46,6 +46,9 @@ const EN_DEMANDDEFICIT = 27; EN_NODE_INCONTROL = 28; EN_EMITTERFLOW = 29; + EN_LEAKAGEFLOW = 30; + EN_DEMANDFLOW = 31; + EN_FULLDEMAND = 32; EN_DIAMETER = 0; { Link parameters } EN_LENGTH = 1; @@ -71,8 +74,11 @@ const EN_PUMP_ECOST = 21; EN_PUMP_EPAT = 22; EN_LINK_INCONTROL = 23; - EN_GPV_CURVE = 24; - EN_PCV_CURVE = 25; + EN_GPV_CURVE = 24; + EN_PCV_CURVE = 25; + EN_LEAK_AREA = 26; + EN_LEAK_EXPAN = 27; + EN_LINK_LEAKAGE = 28; EN_DURATION = 0; { Time parameters } EN_HYDSTEP = 1; @@ -98,6 +104,7 @@ const EN_MASSBALANCE = 4; EN_DEFICIENTNODES = 5; EN_DEMANDREDUCTION = 6; + EN_LEAKAGELOSS = 7; EN_NODE = 0; { Component Types } EN_LINK = 1; @@ -275,180 +282,199 @@ const EN_TRUE = 1; { boolean true } +{$MACRO ON} + {$ifdef MSWINDOWS} - EpanetLib = 'epanet2.dll'; + EpanetLib = 'epanet2.dll'; + {$DEFINE cdecl := stdcall} +{$endif} + +{$ifdef UNIX} + {$ifdef DARWIN} + EpanetLib = 'libepanet2.dylib'; + {$linklib libepanet2} + {$else} + EpanetLib = 'libepanet2.so'; + {$endif} +{$endif} + +{$ifdef UNIX} + {$DEFINE TimeType:=Int64} {$else} - EpanetLib = 'libepanet2.so'; + {$DEFINE TimeType:=Integer} {$endif} {Project Functions} - function ENepanet(F1: PAnsiChar; F2: PAnsiChar; F3: PAnsiChar; F4: Pointer): Integer; stdcall; external EpanetLib; - function ENinit(F2: PAnsiChar; F3: PAnsiChar; UnitsType: Integer; HeadlossType: Integer): Integer; stdcall; external EpanetLib; - function ENopen(F1: PAnsiChar; F2: PAnsiChar; F3: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENopenX(F1: PAnsiChar; F2: PAnsiChar; F3: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENgetcount(Code: Integer; var Count: Integer): Integer; stdcall; external EpanetLib; - function ENgettitle(Line1: PAnsiChar; Line2: PAnsiChar; Line3: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsettitle(Line1: PAnsiChar; Line2: PAnsiChar; Line3: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENgetcomment(ObjType: Integer; Index: Integer; Comment: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsetcomment(ObjType: Integer; Index: Integer; Comment: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsaveinpfile(F: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENclose: Integer; stdcall; external EpanetLib; + function ENepanet(F1: PAnsiChar; F2: PAnsiChar; F3: PAnsiChar; F4: Pointer): Integer; cdecl; external EpanetLib; + function ENinit(F2: PAnsiChar; F3: PAnsiChar; UnitsType: Integer; HeadlossType: Integer): Integer; cdecl; external EpanetLib; + function ENopen(F1: PAnsiChar; F2: PAnsiChar; F3: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENopenX(F1: PAnsiChar; F2: PAnsiChar; F3: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENgetcount(Code: Integer; var Count: Integer): Integer; cdecl; external EpanetLib; + function ENgettitle(Line1: PAnsiChar; Line2: PAnsiChar; Line3: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsettitle(Line1: PAnsiChar; Line2: PAnsiChar; Line3: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENgetcomment(ObjType: Integer; Index: Integer; Comment: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsetcomment(ObjType: Integer; Index: Integer; Comment: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsaveinpfile(F: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENclose: Integer; cdecl; external EpanetLib; {Hydraulic Functions} - function ENsolveH: Integer; stdcall; external EpanetLib; - function ENsaveH: Integer; stdcall; external EpanetLib; - function ENopenH: Integer; stdcall; external EpanetLib; - function ENinitH(SaveFlag: Integer): Integer; stdcall; external EpanetLib; - function ENrunH(var T: Integer): Integer; stdcall; external EpanetLib; - function ENnextH(var Tstep: Integer): Integer; stdcall; external EpanetLib; - function ENcloseH: Integer; stdcall; external EpanetLib; - function ENsavehydfile(F: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENusehydfile(F: PAnsiChar): Integer; stdcall; external EpanetLib; + function ENsolveH: Integer; cdecl; external EpanetLib; + function ENsaveH: Integer; cdecl; external EpanetLib; + function ENopenH: Integer; cdecl; external EpanetLib; + function ENinitH(SaveFlag: Integer): Integer; cdecl; external EpanetLib; + function ENrunH(var T: TimeType): Integer; cdecl; external EpanetLib; + function ENnextH(var Tstep: TimeType): Integer; cdecl; external EpanetLib; + function ENcloseH: Integer; cdecl; external EpanetLib; + function ENsavehydfile(F: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENusehydfile(F: PAnsiChar): Integer; cdecl; external EpanetLib; {Quality Functions} - function ENsolveQ: Integer; stdcall; external EpanetLib; - function ENopenQ: Integer; stdcall; external EpanetLib; - function ENinitQ(SaveFlag: Integer): Integer; stdcall; external EpanetLib; - function ENrunQ(var T: Integer): Integer; stdcall; external EpanetLib; - function ENnextQ(var Tstep: Integer): Integer; stdcall; external EpanetLib; - function ENstepQ(var Tleft: Integer): Integer; stdcall; external EpanetLib; - function ENcloseQ: Integer; stdcall; external EpanetLib; + function ENsolveQ: Integer; cdecl; external EpanetLib; + function ENopenQ: Integer; cdecl; external EpanetLib; + function ENinitQ(SaveFlag: Integer): Integer; cdecl; external EpanetLib; + function ENrunQ(var T: TimeType): Integer; cdecl; external EpanetLib; + function ENnextQ(var Tstep: TimeType): Integer; cdecl; external EpanetLib; + function ENstepQ(var Tleft: TimeType): Integer; cdecl; external EpanetLib; + function ENcloseQ: Integer; cdecl; external EpanetLib; {Reporting Functions} - function ENwriteline(S: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENreport: Integer; stdcall; external EpanetLib; - function ENcopyreport(F: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENclearreport: Integer; stdcall; external EpanetLib; - function ENresetreport: Integer; stdcall; external EpanetLib; - function ENsetreport(S: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsetstatusreport(Code: Integer): Integer; stdcall; external EpanetLib; - function ENgetversion(var Version: Integer): Integer; stdcall; external EpanetLib; - function ENgeterror(Errcode: Integer; Errmsg: PAnsiChar; MaxLen: Integer): Integer; stdcall; external EpanetLib; - function ENgetstatistic(StatType: Integer; var Value: Single): Integer; stdcall; external EpanetLib; - function ENgetresultindex(Code: Integer; Index: Integer; var Value: Integer): Integer; stdcall; external EpanetLib; + function ENwriteline(S: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENreport: Integer; cdecl; external EpanetLib; + function ENcopyreport(F: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENclearreport: Integer; cdecl; external EpanetLib; + function ENresetreport: Integer; cdecl; external EpanetLib; + function ENsetreport(S: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsetstatusreport(Code: Integer): Integer; cdecl; external EpanetLib; + function ENgetversion(var Version: Integer): Integer; cdecl; external EpanetLib; + function ENgeterror(Errcode: Integer; Errmsg: PAnsiChar; MaxLen: Integer): Integer; cdecl; external EpanetLib; + function ENgetstatistic(StatType: Integer; var Value: Single): Integer; cdecl; external EpanetLib; + function ENgetresultindex(Code: Integer; Index: Integer; var Value: Integer): Integer; cdecl; external EpanetLib; + function ENtimetonextevent(var EventType: Integer; var Duration: TimeType; var ElementIndex: Integer): Integer; cdecl; external EpanetLib; {Analysis Options Functions} - function ENgetoption(Code: Integer; var Value: Single): Integer; stdcall; external EpanetLib; - function ENsetoption(Code: Integer; Value: Single): Integer; stdcall; external EpanetLib; - function ENgetflowunits(var Code: Integer): Integer; stdcall; external EpanetLib; - function ENsetflowunits(Code: Integer): Integer; stdcall; external EpanetLib; - function ENgettimeparam(Code: Integer; var Value: Integer): Integer; stdcall; external EpanetLib; - function ENsettimeparam(Code: Integer; Value: Integer): Integer; stdcall; external EpanetLib; - function ENgetqualinfo(var QualType: Integer; ChemName: PAnsiChar; ChemUnits: PAnsiChar; var TraceNode: Integer): Integer; stdcall; external EpanetLib; - function ENgetqualtype(var QualCode: Integer; var TraceNode: Integer): Integer; stdcall; external EpanetLib; - function ENsetqualtype(QualCode: Integer; ChemName: PAnsiChar; ChemUnits: PAnsiChar; TraceNodeID: PAnsiChar): Integer; stdcall; external EpanetLib; + function ENgetoption(Code: Integer; var Value: Single): Integer; cdecl; external EpanetLib; + function ENsetoption(Code: Integer; Value: Single): Integer; cdecl; external EpanetLib; + function ENgetflowunits(var Code: Integer): Integer; cdecl; external EpanetLib; + function ENsetflowunits(Code: Integer): Integer; cdecl; external EpanetLib; + function ENgettimeparam(Code: Integer; var Value: TimeType): Integer; cdecl; external EpanetLib; + function ENsettimeparam(Code: Integer; Value: TimeType): Integer; cdecl; external EpanetLib; + function ENgetqualinfo(var QualType: Integer; ChemName: PAnsiChar; ChemUnits: PAnsiChar; var TraceNode: Integer): Integer; cdecl; external EpanetLib; + function ENgetqualtype(var QualCode: Integer; var TraceNode: Integer): Integer; cdecl; external EpanetLib; + function ENsetqualtype(QualCode: Integer; ChemName: PAnsiChar; ChemUnits: PAnsiChar; TraceNodeID: PAnsiChar): Integer; cdecl; external EpanetLib; {Node Functions} - function ENaddnode(ID: PAnsiChar; NodeType: Integer; var Index: Integer): Integer; stdcall; external EpanetLib; - function ENdeletenode(Index: Integer; ActionCode: Integer): Integer; stdcall; external EpanetLib; - function ENgetnodeindex(ID: PAnsiChar; var Index: Integer): Integer; stdcall; external EpanetLib; - function ENgetnodeid(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsetnodeid(Index: Integer; NewID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENgetnodetype(Index: Integer; var Code: Integer): Integer; stdcall; external EpanetLib; - function ENgetnodevalue(Index: Integer; Code: Integer; var Value: Single): Integer; stdcall; external EpanetLib; - function ENsetnodevalue(Index: Integer; Code: Integer; Value: Single): Integer; stdcall; external EpanetLib; - function ENsetjuncdata(Index: Integer; Elev: Single; Dmnd: Single; DmndPat: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsettankdata(Index: Integer; Elev, InitLvl, MinLvl, MaxLvl, Diam, MinVol: Single; VolCurve: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENgetcoord(Index: Integer; var X: Double; var Y: Double): Integer; stdcall; external EpanetLib; - function ENsetcoord(Index: Integer; X: Double; Y: Double): Integer; stdcall; external EpanetLib; + function ENaddnode(ID: PAnsiChar; NodeType: Integer; var Index: Integer): Integer; cdecl; external EpanetLib; + function ENdeletenode(Index: Integer; ActionCode: Integer): Integer; cdecl; external EpanetLib; + function ENgetnodeindex(ID: PAnsiChar; var Index: Integer): Integer; cdecl; external EpanetLib; + function ENgetnodeid(Index: Integer; ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsetnodeid(Index: Integer; NewID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENgetnodetype(Index: Integer; var Code: Integer): Integer; cdecl; external EpanetLib; + function ENgetnodevalue(Index: Integer; Code: Integer; var Value: Single): Integer; cdecl; external EpanetLib; + function ENsetnodevalue(Index: Integer; Code: Integer; Value: Single): Integer; cdecl; external EpanetLib; + function ENsetjuncdata(Index: Integer; Elev: Single; Dmnd: Single; DmndPat: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsettankdata(Index: Integer; Elev, InitLvl, MinLvl, MaxLvl, Diam, MinVol: Single; VolCurve: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENgetcoord(Index: Integer; var X: Double; var Y: Double): Integer; cdecl; external EpanetLib; + function ENsetcoord(Index: Integer; X: Double; Y: Double): Integer; cdecl; external EpanetLib; + function ENgetnodevalues(Code: Integer; var X: array of Single): Integer; cdecl; external EpanetLib; {Demand Functions} - function ENgetdemandmodel(var Model: Integer; var Pmin: Single; var Preq: Single; var Pexp: Single): Integer; stdcall; external EpanetLib; - function ENsetdemandmodel(Model: Integer; Pmin: Single; Preq: Single; Pexp: Single): Integer; stdcall; external EpanetLib; - function ENgetnumdemands(NodeIndex: Integer; var NumDemands: Integer): Integer; stdcall; external EpanetLib; - function ENadddemand(NodeIndex: Integer; BaseDemand: Single; PatName: PAnsiChar; DemandName: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENdeletedemand(NodeIndex: Integer; DemandIndex: Integer): Integer; stdcall; external EpanetLib; - function ENgetdemandindex(NodeIndex: Integer; DemandName: PAnsiChar; var DemandIndex: Integer): Integer; stdcall; external EpanetLib; - function ENgetbasedemand(NodeIndex: Integer; DemandIndex: Integer; var BaseDemand: Single): Integer; stdcall; external EpanetLib; - function ENsetbasedemand(NodeIndex: Integer; DemandIndex: Integer; BaseDemand: Single): Integer; stdcall; external EpanetLib; - function ENgetdemandpattern(NodeIndex: Integer; DemandIndex: Integer; var PatIndex: Integer): Integer; stdcall; external EpanetLib; - function ENsetdemandpattern(NodeIndex: Integer; DemandIndex: Integer; PatIndex: Integer): Integer; stdcall; external EpanetLib; - function ENgetdemandname(NodeIndex: Integer; DemandIndex: Integer; DemandName: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsetdemandname(NodeIndex: Integer; DemandIndex: Integer; DemandName: PAnsiChar): Integer; stdcall; external EpanetLib; + function ENgetdemandmodel(var Model: Integer; var Pmin: Single; var Preq: Single; var Pexp: Single): Integer; cdecl; external EpanetLib; + function ENsetdemandmodel(Model: Integer; Pmin: Single; Preq: Single; Pexp: Single): Integer; cdecl; external EpanetLib; + function ENgetnumdemands(NodeIndex: Integer; var NumDemands: Integer): Integer; cdecl; external EpanetLib; + function ENadddemand(NodeIndex: Integer; BaseDemand: Single; PatName: PAnsiChar; DemandName: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENdeletedemand(NodeIndex: Integer; DemandIndex: Integer): Integer; cdecl; external EpanetLib; + function ENgetdemandindex(NodeIndex: Integer; DemandName: PAnsiChar; var DemandIndex: Integer): Integer; cdecl; external EpanetLib; + function ENgetbasedemand(NodeIndex: Integer; DemandIndex: Integer; var BaseDemand: Single): Integer; cdecl; external EpanetLib; + function ENsetbasedemand(NodeIndex: Integer; DemandIndex: Integer; BaseDemand: Single): Integer; cdecl; external EpanetLib; + function ENgetdemandpattern(NodeIndex: Integer; DemandIndex: Integer; var PatIndex: Integer): Integer; cdecl; external EpanetLib; + function ENsetdemandpattern(NodeIndex: Integer; DemandIndex: Integer; PatIndex: Integer): Integer; cdecl; external EpanetLib; + function ENgetdemandname(NodeIndex: Integer; DemandIndex: Integer; DemandName: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsetdemandname(NodeIndex: Integer; DemandIndex: Integer; DemandName: PAnsiChar): Integer; cdecl; external EpanetLib; {Link Functions} - function ENaddlink(ID: PAnsiChar; LinkType: Integer; FromNode: PAnsiChar; ToNode: PAnsiChar; var Index: Integer): Integer; stdcall; external EpanetLib; - function ENdeletelink(Index: Integer; ActionCode: Integer): Integer; stdcall; external EpanetLib; - function ENgetlinkindex(ID: PAnsiChar; var Index: Integer): Integer; stdcall; external EpanetLib; - function ENgetlinkid(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsetlinkid(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENgetlinktype(Index: Integer; var Code: Integer): Integer; stdcall; external EpanetLib; - function ENsetlinktype(var Index: Integer; LinkType: Integer; ActionCode: Integer): Integer; stdcall; external EpanetLib; - function ENgetlinknodes(Index: Integer; var Node1: Integer; var Node2: Integer): Integer; stdcall; external EpanetLib; - function ENsetlinknodes(Index: Integer; Node1: Integer; Node2: Integer): Integer; stdcall; external EpanetLib; - function ENgetlinkvalue(Index: Integer; Code: Integer; var Value: Single): Integer; stdcall; external EpanetLib; - function ENsetlinkvalue(Index: Integer; Code: Integer; Value: Single): Integer; stdcall; external EpanetLib; - function ENsetpipedata(Index: Integer; Length: Single; Diam: Single; Rough: Single; Mloss:Single): Integer; stdcall; external EpanetLib; + function ENaddlink(ID: PAnsiChar; LinkType: Integer; FromNode: PAnsiChar; ToNode: PAnsiChar; var Index: Integer): Integer; cdecl; external EpanetLib; + function ENdeletelink(Index: Integer; ActionCode: Integer): Integer; cdecl; external EpanetLib; + function ENgetlinkindex(ID: PAnsiChar; var Index: Integer): Integer; cdecl; external EpanetLib; + function ENgetlinkid(Index: Integer; ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsetlinkid(Index: Integer; ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENgetlinktype(Index: Integer; var Code: Integer): Integer; cdecl; external EpanetLib; + function ENsetlinktype(var Index: Integer; LinkType: Integer; ActionCode: Integer): Integer; cdecl; external EpanetLib; + function ENgetlinknodes(Index: Integer; var Node1: Integer; var Node2: Integer): Integer; cdecl; external EpanetLib; + function ENsetlinknodes(Index: Integer; Node1: Integer; Node2: Integer): Integer; cdecl; external EpanetLib; + function ENgetlinkvalue(Index: Integer; Code: Integer; var Value: Single): Integer; cdecl; external EpanetLib; + function ENsetlinkvalue(Index: Integer; Code: Integer; Value: Single): Integer; cdecl; external EpanetLib; + function ENsetpipedata(Index: Integer; Length: Single; Diam: Single; Rough: Single; Mloss:Single): Integer; cdecl; external EpanetLib; + function ENgetlinkvalues(Code: Integer; var X: array of Single): Integer; cdecl; external EpanetLib; - function ENgetvertexcount(Index: Integer; var Count: Integer): Integer; stdcall; external EpanetLib; - function ENgetvertex(Index: Integer; Vertex: Integer; var X: Double; var Y: Double): Integer; stdcall; external EpanetLib; - function ENsetvertex(Index: Integer; Vertex: Integer; X: Double; Y: Double): Integer; stdcall; external EpanetLib; - function ENsetvertices(Index: Integer; var X: Double; var Y: Double; Count: Integer): Integer; stdcall; external EpanetLib; + function ENgetvertexcount(Index: Integer; var Count: Integer): Integer; cdecl; external EpanetLib; + function ENgetvertex(Index: Integer; Vertex: Integer; var X: Double; var Y: Double): Integer; cdecl; external EpanetLib; + function ENsetvertex(Index: Integer; Vertex: Integer; X: Double; Y: Double): Integer; cdecl; external EpanetLib; + function ENsetvertices(Index: Integer; var X: Double; var Y: Double; Count: Integer): Integer; cdecl; external EpanetLib; {Pump Functions} - function ENgetpumptype(LinkIndex: Integer; var PumpType: Integer): Integer; stdcall; external EpanetLib; - function ENgetheadcurveindex(LinkIndex: Integer; var CurveIndex: Integer): Integer; stdcall; external EpanetLib; - function ENsetheadcurveindex(LinkIndex: Integer; CurveIndex: Integer): Integer; stdcall; external EpanetLib; + function ENgetpumptype(LinkIndex: Integer; var PumpType: Integer): Integer; cdecl; external EpanetLib; + function ENgetheadcurveindex(LinkIndex: Integer; var CurveIndex: Integer): Integer; cdecl; external EpanetLib; + function ENsetheadcurveindex(LinkIndex: Integer; CurveIndex: Integer): Integer; cdecl; external EpanetLib; {Pattern Functions} - function ENaddpattern(ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENdeletepattern(Index: Integer): Integer; stdcall; external EpanetLib; - function ENgetpatternindex(ID: PAnsiChar; var Index: Integer): Integer; stdcall; external EpanetLib; - function ENgetpatternid(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsetpatternid(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENgetpatternlen(Index: Integer; var Len: Integer): Integer; stdcall; external EpanetLib; - function ENgetpatternvalue(Index: Integer; Period: Integer; var Value: Single): Integer; stdcall; external EpanetLib; - function ENsetpatternvalue(Index: Integer; Period: Integer; Value: Single): Integer; stdcall; external EpanetLib; - function ENgetaveragepatternvalue(Index: Integer; var Value: Single): Integer; stdcall; external EpanetLib; - function ENsetpattern(Index: Integer; var F: Single; N: Integer): Integer; stdcall; external EpanetLib; + function ENaddpattern(ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENdeletepattern(Index: Integer): Integer; cdecl; external EpanetLib; + function ENgetpatternindex(ID: PAnsiChar; var Index: Integer): Integer; cdecl; external EpanetLib; + function ENgetpatternid(Index: Integer; ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsetpatternid(Index: Integer; ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENgetpatternlen(Index: Integer; var Len: Integer): Integer; cdecl; external EpanetLib; + function ENgetpatternvalue(Index: Integer; Period: Integer; var Value: Single): Integer; cdecl; external EpanetLib; + function ENsetpatternvalue(Index: Integer; Period: Integer; Value: Single): Integer; cdecl; external EpanetLib; + function ENgetaveragepatternvalue(Index: Integer; var Value: Single): Integer; cdecl; external EpanetLib; + function ENsetpattern(Index: Integer; var F: Single; N: Integer): Integer; cdecl; external EpanetLib; {Curve Functions} - function ENaddcurve(ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENdeletecurve(Index: Integer): Integer; stdcall; external EpanetLib; - function ENgetcurveindex(ID: PAnsiChar; var Index: Integer): Integer; stdcall; external EpanetLib; - function ENgetcurveid(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsetcurveid(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENgetcurvelen(Index: Integer; var Len: Integer): Integer; stdcall; external EpanetLib; - function ENgetcurvetype(Index: Integer; var CurveType: Integer): Integer; stdcall; external EpanetLib; - function ENsetcurvetype(Index: Integer; CurveType: Integer): Integer; stdcall; external EpanetLib; - function ENgetcurvevalue(CurveIndex: Integer; PointIndex: Integer; var X: Single; var Y: Single): Integer; stdcall; external EpanetLib; - function ENsetcurvevalue(CurveIndex: Integer; PointIndex: Integer; X: Single; Y: Single): Integer; stdcall; external EpanetLib; - function ENgetcurve(Index: Integer; ID: PAnsiChar; var N: Integer; var X: Single; var Y: Single): Integer; stdcall; external EpanetLib; - function ENsetcurve(Index: Integer; var X: Single; var Y: Single; N: Integer): Integer; stdcall; external EpanetLib; + function ENaddcurve(ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENdeletecurve(Index: Integer): Integer; cdecl; external EpanetLib; + function ENgetcurveindex(ID: PAnsiChar; var Index: Integer): Integer; cdecl; external EpanetLib; + function ENgetcurveid(Index: Integer; ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsetcurveid(Index: Integer; ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENgetcurvelen(Index: Integer; var Len: Integer): Integer; cdecl; external EpanetLib; + function ENgetcurvetype(Index: Integer; var CurveType: Integer): Integer; cdecl; external EpanetLib; + function ENsetcurvetype(Index: Integer; CurveType: Integer): Integer; cdecl; external EpanetLib; + function ENgetcurvevalue(CurveIndex: Integer; PointIndex: Integer; var X: Single; var Y: Single): Integer; cdecl; external EpanetLib; + function ENsetcurvevalue(CurveIndex: Integer; PointIndex: Integer; X: Single; Y: Single): Integer; cdecl; external EpanetLib; + function ENgetcurve(Index: Integer; ID: PAnsiChar; var N: Integer; var X: Single; var Y: Single): Integer; cdecl; external EpanetLib; + function ENsetcurve(Index: Integer; var X: Single; var Y: Single; N: Integer): Integer; cdecl; external EpanetLib; {Control Functions} - function ENaddcontrol(Ctype: Integer; Link: Integer; Setting: Single; Node: Integer; Level: Single; var Index: Integer): Integer; stdcall; external EpanetLib; - function ENdeletecontrol(Index: Integer): Integer; stdcall; external EpanetLib; - function ENgetcontrol(Index: Integer; var Ctype: Integer; var Link: Integer; var Setting: Single; var Node: Integer; var Level: Single): Integer; stdcall; external EpanetLib; - function ENsetcontrol(Index: Integer; Ctype: Integer; Link: Integer; Setting: Single; Node: Integer; Level: Single): Integer; stdcall; external EpanetLib; - function ENgetcontrolenabled(Index: Integer; out_enabled: Integer): Integer; stdcall; external EpanetLib; - function ENsetcontrolenabled(Index: Integer; var enabled: Integer): Integer; stdcall; external EpanetLib; + function ENaddcontrol(Ctype: Integer; Link: Integer; Setting: Single; Node: Integer; Level: Single; var Index: Integer): Integer; cdecl; external EpanetLib; + function ENdeletecontrol(Index: Integer): Integer; cdecl; external EpanetLib; + function ENgetcontrol(Index: Integer; var Ctype: Integer; var Link: Integer; var Setting: Single; var Node: Integer; var Level: Single): Integer; cdecl; external EpanetLib; + function ENsetcontrol(Index: Integer; Ctype: Integer; Link: Integer; Setting: Single; Node: Integer; Level: Single): Integer; cdecl; external EpanetLib; + function ENgetcontrolenabled(Index: Integer; out_enabled: Integer): Integer; cdecl; external EpanetLib; + function ENsetcontrolenabled(Index: Integer; var enabled: Integer): Integer; cdecl; external EpanetLib; {Rule-Based Control Functions} - function ENaddrule(Rule: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENdeleterule(Index: Integer): Integer; stdcall; external EpanetLib; + function ENaddrule(Rule: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENdeleterule(Index: Integer): Integer; cdecl; external EpanetLib; function ENgetrule(Index: Integer; var Npremises: Integer; var NthenActions: Integer; - var NelseActions: Integer; var Priority: Single): Integer; stdcall; external EpanetLib; - function ENgetruleID(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsetrulepriority(Index: Integer; Priority: Single): Integer; stdcall; external EpanetLib; + var NelseActions: Integer; var Priority: Single): Integer; cdecl; external EpanetLib; + function ENgetruleID(Index: Integer; ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsetrulepriority(Index: Integer; Priority: Single): Integer; cdecl; external EpanetLib; function ENgetpremise(RuleIndex: Integer; PremiseIndex: Integer; var LogOp: Integer; var ObjType: Integer; var ObjIndex: Integer; var Param: Integer; var RelOp: Integer; - var Status: Integer; var Value: Single): Integer; stdcall; external EpanetLib; + var Status: Integer; var Value: Single): Integer; cdecl; external EpanetLib; function ENsetpremise(RuleIndex: Integer; PremiseIndex: Integer; LogOp: Integer; ObjType: Integer; - ObjIndex: Integer; Param: Integer; RelOp: Integer; Status: Integer; Value: Single): Integer; stdcall; external EpanetLib; - function ENsetpremiseindex(RuleIndex: Integer; PremiseIndex: Integer; ObjIndex: Integer): Integer; stdcall; external EpanetLib; - function ENsetpremisestatus(RuleIndex: Integer; PremiseIndex: Integer; Status: Integer): Integer; stdcall; external EpanetLib; - function ENsetpremisevalue(RuleIndex: Integer; PremiseIndex: Integer; Value: Single): Integer; stdcall; external EpanetLib; + ObjIndex: Integer; Param: Integer; RelOp: Integer; Status: Integer; Value: Single): Integer; cdecl; external EpanetLib; + function ENsetpremiseindex(RuleIndex: Integer; PremiseIndex: Integer; ObjIndex: Integer): Integer; cdecl; external EpanetLib; + function ENsetpremisestatus(RuleIndex: Integer; PremiseIndex: Integer; Status: Integer): Integer; cdecl; external EpanetLib; + function ENsetpremisevalue(RuleIndex: Integer; PremiseIndex: Integer; Value: Single): Integer; cdecl; external EpanetLib; function ENgetthenaction(RuleIndex: Integer; ActionIndex: Integer; var LinkIndex: Integer; - var Status: Integer; var Setting: Single): Integer; stdcall; external EpanetLib; + var Status: Integer; var Setting: Single): Integer; cdecl; external EpanetLib; function ENsetthenaction(RuleIndex: Integer; ActionIndex: Integer; LinkIndex: Integer; - Status: Integer; Setting: Single): Integer; stdcall; external EpanetLib; + Status: Integer; Setting: Single): Integer; cdecl; external EpanetLib; function ENgetelseaction(RuleIndex: Integer; ActionIndex: Integer; var LinkIndex: Integer; - var Status: Integer; var Setting: Single): Integer; stdcall; external EpanetLib; + var Status: Integer; var Setting: Single): Integer; cdecl; external EpanetLib; function ENsetelseaction(RuleIndex: Integer; ActionIndex: Integer; LinkIndex: Integer; - Status: Integer; Setting: Single): Integer; stdcall; external EpanetLib; - function ENgetruleenabled(Index: Integer; out_enabled: Integer): Integer; stdcall; external EpanetLib; - function ENsetruleenabled(Index: Integer; var enabled: Integer): Integer; stdcall; external EpanetLib; + Status: Integer; Setting: Single): Integer; cdecl; external EpanetLib; + function ENgetruleenabled(Index: Integer; out_enabled: Integer): Integer; cdecl; external EpanetLib; + function ENsetruleenabled(Index: Integer; var enabled: Integer): Integer; cdecl; external EpanetLib; implementation diff --git a/include/epanet2.vb b/include/epanet2.vb index 73e4651..a7b3179 100644 --- a/include/epanet2.vb +++ b/include/epanet2.vb @@ -4,7 +4,7 @@ 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) for use with VB.Net. -'Last updated on 09/28/2023 +'Last updated on 06/23/2024 Imports System.Runtime.InteropServices Imports System.Text @@ -42,6 +42,9 @@ Public Const EN_CANOVERFLOW = 26 Public Const EN_DEMANDDEFICIT = 27 Public Const EN_NODE_INCONTROL = 28 Public Const EN_EMITTERFLOW = 29 +Public Const EN_LEAKAGEFLOW = 30 +Public Const EN_DEMANDFLOW = 31 +Public Const EN_FULLDEMAND = 32 Public Const EN_DIAMETER = 0 ' Link parameters Public Const EN_LENGTH = 1 @@ -69,6 +72,9 @@ Public Const EN_PUMP_EPAT = 22 Public Const EN_LINK_INCONTROL = 23 Public Const EN_GPV_CURVE = 24 Public Const EN_PCV_CURVE = 25 +Public Const EN_LEAK_AREA = 26 +Public Const EN_LEAK_EXPAN = 27 +Public Const EN_LINK_LEAKAGE = 28 Public Const EN_DURATION = 0 ' Time parameters Public Const EN_HYDSTEP = 1 @@ -93,6 +99,7 @@ Public Const EN_MAXFLOWCHANGE = 3 Public Const EN_MASSBALANCE = 4 Public Const EN_DEFICIENTNODES = 5 Public Const EN_DEMANDREDUCTION = 6 +Public Const EN_LEAKAGELOSS = 7 Public Const EN_NODE = 0 ' Component types Public Const EN_LINK = 1 @@ -309,6 +316,7 @@ Public Const EN_TRUE = 1 ' boolean true Declare Function ENgeterror Lib "epanet2.dll" (ByVal errcode As Int32, ByVal errmsg As String, ByVal maxLen As Int32) As Int32 Declare Function ENgetstatistic Lib "epanet2.dll" (ByVal type_ As Int32, ByRef value As Single) As Int32 Declare Function ENgetresultindex Lib "epanet2.dll" (ByVal type_ As Int32, ByVal index As Int32, ByRef value As Int32) As Int32 + Declare Function ENtimetonextevent Lib "epanet2.dll" (eventType As Int32, duration As Int32, elementIndex As Int32) As Int32 'Analysis Options Functions Declare Function ENgetoption Lib "epanet2.dll" (ByVal option As Int32, value As Single) As Int32 @@ -334,7 +342,8 @@ Public Const EN_TRUE = 1 ' boolean true Declare Function ENsettankdata Lib "epanet2.dll" (ByVal index As Int32, ByVal elev As Single, ByVal initlvl As Single, ByVal minlvl As Single, ByVal maxlvl As Single, ByVal diam As Single, ByVal minvol As Single, ByVal volcurve As String) As Int32 Declare Function ENgetcoord Lib "epanet2.dll" (ByVal index As Int32, x As Double, y As Double) As Int32 Declare Function ENsetcoord Lib "epanet2.dll" (ByVal index As Int32, ByVal x As Double, ByVal y As Double) As Int32 - + Declare Function ENgetnodevalues Lib "epanet2.dll" (ByVal property as Int32, values as Any) As Int32 + 'Nodal Demand Functions Declare Function ENgetdemandmodel Lib "epanet2.dll" (type_ As Int32, pmin As Single, preq As Single, pexp As Single) As Int32 Declare Function ENsetdemandmodel Lib "epanet2.dll" (ByVal type_ As Int32, ByVal pmin As Single, ByVal preq As Single, ByVal pexp As Single) As Int32 @@ -366,6 +375,7 @@ Public Const EN_TRUE = 1 ' boolean true Declare Function ENgetvertex Lib "epanet2.dll" (ByVal index As Int32, ByVal vertex As Int32, x As Double, y As Double) As Int32 Declare Function ENsetvertex Lib "epanet2.dll" (ByVal index As Int32, ByVal vertex As Int32, ByVal x As Double, ByVal y As Double) As Int32 Declare Function ENsetvertices Lib "epanet2.dll" (ByVal index As Int32, xCoords As Any, yCoords As Any, ByVal count As Int32) As Int32 + Declare Function ENgetlinkvalues Lib "epanet2.dll" (ByVal property as Int32, values as Any) As Int32 'Pump Functions Declare Function ENgetheadcurveindex Lib "epanet2.dll" (ByVal linkIndex As Int32, curveIndex As Int32) As Int32 diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index 557f48f..4fc7755 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -65,7 +65,10 @@ typedef enum { EN_CANOVERFLOW = 26, //!< Tank can overflow (= 1) or not (= 0) EN_DEMANDDEFICIT = 27,//!< Amount that full demand is reduced under PDA (read only) EN_NODE_INCONTROL = 28, //!< Is present in any simple or rule-based control (= 1) or not (= 0) - EN_EMITTERFLOW = 29 //!< Current emitter flow (read only) + EN_EMITTERFLOW = 29, //!< Current emitter flow (read only) + EN_LEAKAGEFLOW = 30, //!< Current leakage flow (read only) + EN_DEMANDFLOW = 31, //!< Current consumer demand delivered (read only) + EN_FULLDEMAND = 32 //!< Current consumer demand requested (read only) } EN_NodeProperty; /// Link properties @@ -99,7 +102,10 @@ typedef enum { EN_PUMP_EPAT = 22, //!< Pump energy price time pattern index EN_LINK_INCONTROL = 23, //!< Is present in any simple or rule-based control (= 1) or not (= 0) EN_GPV_CURVE = 24, //!< GPV head loss v. flow curve index - EN_PCV_CURVE = 25 //!< PCV loss coeff. curve index + EN_PCV_CURVE = 25, //!< PCV loss coeff. curve index + EN_LEAK_AREA = 26, //!< Pipe leak area (sq mm per 100 length units) + EN_LEAK_EXPAN = 27, //!< Leak expansion rate (sq mm per unit of pressure head) + EN_LINK_LEAKAGE = 28 //!< Current leakage rate (read only) } EN_LinkProperty; /// Time parameters @@ -152,7 +158,8 @@ typedef enum { EN_MAXFLOWCHANGE = 3, //!< Largest flow change in links EN_MASSBALANCE = 4, //!< Cumulative water quality mass balance ratio EN_DEFICIENTNODES = 5, //!< Number of pressure deficient nodes - EN_DEMANDREDUCTION = 6 //!< % demand reduction at pressure deficient nodes + EN_DEMANDREDUCTION = 6, //!< % demand reduction at pressure deficient nodes + EN_LEAKAGELOSS = 7 //!< % flow lost to system leakage } EN_AnalysisStatistic; /// Types of network objects diff --git a/src/enumstxt.h b/src/enumstxt.h index dbb4c74..65962a6 100755 --- a/src/enumstxt.h +++ b/src/enumstxt.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/05/2023 + Last Updated: 06/24/2024 ****************************************************************************** */ @@ -127,7 +127,7 @@ char *SectTxt[] = {s_TITLE, s_JUNCTIONS, s_RESERVOIRS, s_REACTIONS, s_MIXING, s_REPORT, s_TIMES, s_OPTIONS, s_COORDS, s_VERTICES, s_LABELS, s_BACKDROP, - s_TAGS, s_END, + s_TAGS, s_LEAKAGE, s_END, NULL}; char *Fldname[] = {t_ELEV, t_DEMAND, t_HEAD, diff --git a/src/epanet.c b/src/epanet.c index 991024c..7e68c9d 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 09/28/2023 + Last Updated: 06/26/2024 ****************************************************************************** */ @@ -510,6 +510,10 @@ int DLLEXPORT EN_initH(EN_Project p, int initFlag) return errcode; } } + + // Open pipe leakage modeling system + errcode = openleakage(p); + if (errcode) return errcode; // Initialize hydraulics solver inithyd(p, fflag); @@ -564,7 +568,11 @@ int DLLEXPORT EN_closeH(EN_Project p) */ { if (!p->Openflag) return 102; - if (p->hydraul.OpenHflag) closehyd(p); + if (p->hydraul.OpenHflag) + { + closeleakage(p); + closehyd(p); + } p->hydraul.OpenHflag = FALSE; return 0; } @@ -1044,6 +1052,9 @@ int DLLEXPORT EN_getstatistic(EN_Project p, int type, double *value) case EN_DEMANDREDUCTION: *value = p->hydraul.DemandReduction; break; + case EN_LEAKAGELOSS: + *value = p->hydraul.LeakageLoss; + break; case EN_MASSBALANCE: *value = p->quality.MassBalance.ratio; break; @@ -1864,8 +1875,10 @@ int DLLEXPORT EN_addnode(EN_Project p, const char *id, int nodeType, int *index) hyd->NodeDemand = (double *)realloc(hyd->NodeDemand, size); qual->NodeQual = (double *)realloc(qual->NodeQual, size); hyd->NodeHead = (double *)realloc(hyd->NodeHead, size); - hyd->DemandFlow = (double *)realloc(hyd->DemandFlow, size); + hyd->FullDemand = (double *)realloc(hyd->FullDemand, size); hyd->EmitterFlow = (double *)realloc(hyd->EmitterFlow, size); + hyd->LeakageFlow = (double *)realloc(hyd->LeakageFlow, size); + hyd->DemandFlow = (double *)realloc(hyd->DemandFlow, size); // Actions taken when a new Junction is added if (nodeType == EN_JUNCTION) @@ -2256,7 +2269,7 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val Ucf[VOLUME]; break; - case EN_DEMAND: + case EN_DEMAND: // Consumer Demand + Emitter Flow + Leakage Flow v = hyd->NodeDemand[index] * Ucf[FLOW]; break; @@ -2336,11 +2349,10 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val case EN_DEMANDDEFICIT: if (index > nJuncs) return 0; - // After an analysis, DemandFlow contains node's required demand - // while NodeDemand contains delivered demand + emitter flow - if (hyd->DemandFlow[index] < 0.0) return 0; - v = (hyd->DemandFlow[index] - - (hyd->NodeDemand[index] - hyd->EmitterFlow[index])) * Ucf[FLOW]; + // FullDemand contains node's required consumer demand + // while DemandFlow contains delivered consumer demand + if (hyd->FullDemand[index] <= 0.0) return 0; + v = (hyd->FullDemand[index] - hyd->DemandFlow[index]) * Ucf[FLOW]; break; case EN_NODE_INCONTROL: @@ -2350,6 +2362,18 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val case EN_EMITTERFLOW: v = hyd->EmitterFlow[index] * Ucf[FLOW]; break; + + case EN_LEAKAGEFLOW: + v = hyd->LeakageFlow[index] * Ucf[FLOW]; + break; + + case EN_DEMANDFLOW: // Consumer demand delivered + v = hyd->DemandFlow[index] * Ucf[FLOW]; + break; + + case EN_FULLDEMAND: // Consumer demand requested + v = hyd->FullDemand[index] * Ucf[FLOW]; + break; default: return 251; @@ -3352,6 +3376,8 @@ int DLLEXPORT EN_addlink(EN_Project p, const char *id, int linkType, } link->Kb = 0; link->Kw = 0; + link->LeakArea = 0; + link->LeakExpan = 0; link->R = 0; link->Rc = 0; link->Rpt = 0; @@ -3923,6 +3949,18 @@ int DLLEXPORT EN_getlinkvalue(EN_Project p, int index, int property, double *val v = (double)incontrols(p, LINK, index); break; + case EN_LEAK_AREA: + v = Link[index].LeakArea * Ucf[LENGTH]; + break; + + case EN_LEAK_EXPAN: + v = Link[index].LeakExpan * Ucf[LENGTH]; + break; + + case EN_LINK_LEAKAGE: + v = findlinkleakage(p, index) * Ucf[FLOW]; + break; + default: return 251; } @@ -4163,6 +4201,16 @@ int DLLEXPORT EN_setlinkvalue(EN_Project p, int index, int property, double valu } break; + case EN_LEAK_AREA: // leak area in sq mm per 100 pipe length units + if (value < 0.0) return 211; + Link[index].LeakArea = value / Ucf[LENGTH]; + break; + + case EN_LEAK_EXPAN: // leak area expansion slope (sq mm per unit of head) + if (value < 0.0) return 211; + Link[index].LeakExpan = value / Ucf[LENGTH]; + break; + default: return 251; } diff --git a/src/flowbalance.c b/src/flowbalance.c new file mode 100644 index 0000000..2c0efa6 --- /dev/null +++ b/src/flowbalance.c @@ -0,0 +1,191 @@ +/* + ****************************************************************************** + Project: OWA EPANET + Version: 2.3 + Module: flowbalance.c + Description: computes components of network's flow balance + Authors: see AUTHORS + Copyright: see AUTHORS + License: see LICENSE + Last Updated: 06/26/2024 + ****************************************************************************** +*/ + +#include "types.h" + +// Exported functions (declared in funcs.h) +//void startflowbalance(Project *); +//void updateflowbalance(Project *, long); +//void endflowbalance(Project *); + +void startflowbalance(Project *pr) +/* +**------------------------------------------------------------------- +** Input: none +** Output: none +** Purpose: initializes components of the network's flow balance. +**------------------------------------------------------------------- +*/ +{ + Hydraul *hyd = &pr->hydraul; + hyd->FlowBalance.totalInflow = 0.0; + hyd->FlowBalance.totalOutflow = 0.0; + hyd->FlowBalance.consumerDemand = 0.0; + hyd->FlowBalance.emitterDemand = 0.0; + hyd->FlowBalance.leakageDemand = 0.0; + hyd->FlowBalance.deficitDemand = 0.0; + hyd->FlowBalance.storageDemand = 0.0; + hyd->FlowBalance.ratio = 0.0; +} + +void updateflowbalance(Project *pr, long hstep) +/* +**------------------------------------------------------------------- +** Input: hstep = time step (sec) +** Output: none +** Purpose: updates components of the system flow balance. +**------------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + Times *time = &pr->times; + + int i, j; + double v, dt, deficit, fullDemand; + SflowBalance flowBalance; + + // Determine current time interval in seconds + if (time->Dur == 0) dt = 1.0; + else if (time->Htime < time->Dur) + { + dt = (double) hstep; + } + else return; + + // Initialize local flow balance + flowBalance.totalInflow = 0.0; + flowBalance.totalOutflow = 0.0; + flowBalance.consumerDemand = 0.0; + flowBalance.emitterDemand = 0.0; + flowBalance.leakageDemand = 0.0; + flowBalance.deficitDemand = 0.0; + flowBalance.storageDemand = 0.0; + fullDemand = 0.0; + + // Initialize demand deficiency & leakage loss + hyd->DeficientNodes = 0; + hyd->DemandReduction = 0.0; + hyd->LeakageLoss = 0.0; + + // Examine each junction node + for (i = 1; i <= net->Njuncs; i++) + { + // Accumulate consumer demand flow + v = hyd->DemandFlow[i]; + if (v < 0.0) + flowBalance.totalInflow += (-v); + else + { + fullDemand += hyd->FullDemand[i]; + flowBalance.consumerDemand += v; + flowBalance.totalOutflow += v; + } + + // Accumulate emitter and leakage flow + v = hyd->EmitterFlow[i]; + flowBalance.emitterDemand += v; + flowBalance.totalOutflow += v; + v = hyd->LeakageFlow[i]; + flowBalance.leakageDemand += v; + flowBalance.totalOutflow += v; + + // Accumulate demand deficit flow + if (hyd->DemandModel == PDA && hyd->FullDemand[i] > 0.0) + { + deficit = hyd->FullDemand[i] - hyd->DemandFlow[i]; + if (deficit > TINY) + { + hyd->DeficientNodes++; + flowBalance.deficitDemand += deficit; + } + } + } + + // Examine each tank/reservoir node + for (j = 1; j <= net->Ntanks; j++) + { + i = net->Tank[j].Node; + v = hyd->NodeDemand[i]; + + // For a snapshot analysis or a reservoir node + if (time->Dur == 0 || net->Tank[j].A == 0.0) + { + if (v >= 0.0) + flowBalance.totalOutflow += v; + else + flowBalance.totalInflow += (-v); + } + + // For tank under extended period analysis + else + flowBalance.storageDemand += v; + } + + // Find % demand reduction & % leakage for current period + if (fullDemand > 0.0) + hyd->DemandReduction = flowBalance.deficitDemand / fullDemand * 100.0; + if (flowBalance.totalInflow > 0.0) + hyd->LeakageLoss = flowBalance.leakageDemand / flowBalance.totalInflow * 100.0; + + // Update flow balance for entire run + hyd->FlowBalance.totalInflow += flowBalance.totalInflow * dt; + hyd->FlowBalance.totalOutflow += flowBalance.totalOutflow * dt; + hyd->FlowBalance.consumerDemand += flowBalance.consumerDemand * dt; + hyd->FlowBalance.emitterDemand += flowBalance.emitterDemand * dt; + hyd->FlowBalance.leakageDemand += flowBalance.leakageDemand * dt; + hyd->FlowBalance.deficitDemand += flowBalance.deficitDemand * dt; + hyd->FlowBalance.storageDemand += flowBalance.storageDemand * dt; +} + +void endflowbalance(Project *pr) +/* +**------------------------------------------------------------------- +** Input: none +** Output: none +** Purpose: finalizes components of the system flow balance. +**------------------------------------------------------------------- +*/ +{ + Hydraul *hyd = &pr->hydraul; + Times *time = &pr->times; + + double seconds, qin, qout, qstor, r; + + if (time->Htime > 0) + seconds = time->Htime; + else + seconds = 1.0; + hyd->FlowBalance.totalInflow /= seconds; + hyd->FlowBalance.totalOutflow /= seconds; + hyd->FlowBalance.consumerDemand /= seconds; + hyd->FlowBalance.emitterDemand /= seconds; + hyd->FlowBalance.leakageDemand /= seconds; + hyd->FlowBalance.deficitDemand /= seconds; + hyd->FlowBalance.storageDemand /= seconds; + + qin = hyd->FlowBalance.totalInflow; + qout = hyd->FlowBalance.totalOutflow; + qstor = hyd->FlowBalance.storageDemand; + if (qstor > 0.0) + qout += qstor; + else + qin -= qstor; + if (qin == qout) + r = 1.0; + else if (qin > 0.0) + r = qout / qin; + else + r = 0.0; + hyd->FlowBalance.ratio = r; +} diff --git a/src/funcs.h b/src/funcs.h index 8910c36..87a6be2 100755 --- a/src/funcs.h +++ b/src/funcs.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 09/28/2023 + Last Updated: 06/26/2024 ****************************************************************************** */ #ifndef FUNCS_H @@ -100,6 +100,7 @@ int controldata(Project *); int energydata(Project *); int sourcedata(Project *); int emitterdata(Project *); +int leakagedata(Project *); int qualdata(Project *); int reactdata(Project *); int mixingdata(Project *); @@ -142,6 +143,7 @@ void writecontrolaction(Project *, int, int); void writeruleaction(Project *, int, char *); int writehydwarn(Project *, int,double); void writehyderr(Project *, int); +void writeflowbalance(Project *); void writemassbalance(Project *); void writetime(Project *, char *); char *clocktime(char *, long); @@ -195,4 +197,19 @@ int savefinaloutput(Project *); int saveinpfile(Project *, const char *); +// ------- LEAKAGE.C -------------------- + +int openleakage(Project *); +void closeleakage(Project *); +double findlinkleakage(Project *, int); +void leakagecoeffs(Project *); +double leakageflowchange(Project *, int); +int leakagehasconverged(Project *); + +// ------- FLOWBALANCE.C----------------- + +void startflowbalance(Project *); +void updateflowbalance(Project *, long); +void endflowbalance(Project *); + #endif diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index c00d2f9..5be8c40 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 03/29/2023 + Last Updated: 06/15/2024 ****************************************************************************** */ @@ -310,6 +310,7 @@ void matrixcoeffs(Project *pr) linkcoeffs(pr); emittercoeffs(pr); demandcoeffs(pr); + if (hyd->HasLeakage) leakagecoeffs(pr); // Update nodal flow balances with demands and add onto r.h.s. coeffs. nodecoeffs(pr); @@ -606,7 +607,7 @@ void demandheadloss(Project *pr, int i, double dp, double n, Hydraul *hyd = &pr->hydraul; double d = hyd->DemandFlow[i]; - double dfull = hyd->NodeDemand[i]; + double dfull = hyd->FullDemand[i]; double r = d / dfull; // Evaluate inverted demand function diff --git a/src/hydraul.c b/src/hydraul.c index 3976921..ae40ad6 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 09/28/2023 + Last Updated: 06/26/2024 ****************************************************************************** */ @@ -63,7 +63,7 @@ int openhyd(Project *pr) // Allocate memory for hydraulic variables ERRCODE(allocmatrix(pr)); - + // Check for unconnected nodes ERRCODE(unlinked(pr)); @@ -107,8 +107,10 @@ void inithyd(Project *pr, int initflag) hyd->OldStatus[net->Nlinks+i] = TEMPCLOSED; } - // Initialize emitter flows + // Initialize node outflows + memset(hyd->DemandFlow,0,(net->Nnodes+1)*sizeof(double)); memset(hyd->EmitterFlow,0,(net->Nnodes+1)*sizeof(double)); + memset(hyd->LeakageFlow,0,(net->Nnodes+1)*sizeof(double)); for (i = 1; i <= net->Nnodes; i++) { net->Node[i].ResultIndex = i; @@ -161,6 +163,9 @@ void inithyd(Project *pr, int initflag) pump->Energy.CurrentPower = 0.0; pump->Energy.CurrentEffic = 0.0; } + + // Initialize flow balance + startflowbalance(pr); // Re-position hydraulics file if (pr->outfile.Saveflag) @@ -253,6 +258,9 @@ int nexthyd(Project *pr, long *tstep) // Accumulate pumping energy if (time->Dur == 0) addenergy(pr,0); else if (time->Htime < time->Dur) addenergy(pr,hydstep); + + // Update flow balance + updateflowbalance(pr, hydstep); // More time remains - update current time if (time->Htime < time->Dur) @@ -267,6 +275,8 @@ int nexthyd(Project *pr, long *tstep) // No more time remains - force completion of analysis else { + endflowbalance(pr); + if (pr->report.Statflag) writeflowbalance(pr); time->Htime++; if (pr->quality.OpenQflag) time->Qtime++; } @@ -495,7 +505,7 @@ void demands(Project *pr) if (djunc > 0.0) hyd->Dsystem += djunc; sum += djunc; } - hyd->NodeDemand[i] = sum; + hyd->FullDemand[i] = sum; // Initialize pressure dependent demand hyd->DemandFlow[i] = sum; @@ -1147,4 +1157,3 @@ void resetpumpflow(Project *pr, int i) if (pump->Ptype == CONST_HP) pr->hydraul.LinkFlow[i] = pump->Q0; } - diff --git a/src/hydsolver.c b/src/hydsolver.c index 25c6752..d88823f 100644 --- a/src/hydsolver.c +++ b/src/hydsolver.c @@ -8,7 +8,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/14/2022 + Last Updated: 06/15/2024 ****************************************************************************** */ @@ -47,6 +47,7 @@ static double newflows(Project *, Hydbalance *); static void newlinkflows(Project *, Hydbalance *, double *, double *); static void newemitterflows(Project *, Hydbalance *, double *, double *); static void newdemandflows(Project *, Hydbalance *, double *, double *); +static void newleakageflows(Project *, Hydbalance *, double *, double *); static void checkhydbalance(Project *, Hydbalance *); static int hasconverged(Project *, double *, Hydbalance *); @@ -93,7 +94,6 @@ int hydsolve(Project *pr, int *iter, double *relerr) int valveChange; // Valve status change flag int statChange; // Non-valve status change flag Hydbalance hydbal; // Hydraulic balance errors - double fullDemand; // Full demand for a node (cfs) // Initialize status checking & relaxation factor nextcheck = hyd->CheckFreq; @@ -195,12 +195,12 @@ int hydsolve(Project *pr, int *iter, double *relerr) errcode = 110; } - // Store actual junction outflow in NodeDemand & full demand in DemandFlow + // Save total outflow (NodeDemand) at each junction for (i = 1; i <= net->Njuncs; i++) { - fullDemand = hyd->NodeDemand[i]; - hyd->NodeDemand[i] = hyd->DemandFlow[i] + hyd->EmitterFlow[i]; - hyd->DemandFlow[i] = fullDemand; + hyd->NodeDemand[i] = hyd->DemandFlow[i] + + hyd->EmitterFlow[i] + + hyd->LeakageFlow[i]; } // Save convergence info @@ -381,6 +381,7 @@ double newflows(Project *pr, Hydbalance *hbal) newlinkflows(pr, hbal, &qsum, &dqsum); newemitterflows(pr, hbal, &qsum, &dqsum); newdemandflows(pr, hbal, &qsum, &dqsum); + if (hyd->HasLeakage) newleakageflows(pr, hbal, &qsum, &dqsum); // Return ratio of total flow corrections to total flow if (qsum > hyd->Hacc) return (dqsum / qsum); @@ -514,6 +515,45 @@ void newemitterflows(Project *pr, Hydbalance *hbal, double *qsum, } +void newleakageflows(Project *pr, Hydbalance *hbal, double *qsum, + double *dqsum) +/* +**---------------------------------------------------------------- +** Input: hbal = ptr. to hydraulic balance information +** qsum = sum of current system flows +** dqsum = sum of system flow changes +** Output: updates hbal, qsum and dqsum +** Purpose: updates nodal leakage flows after new nodal heads computed +**---------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + + int i; + double dq; + + for (i = 1; i <= net->Njuncs; i++) + { + // Update leakage flow at node i + dq = leakageflowchange(pr, i); + if (dq == 0.0) continue; + + // Update system flow summation + *qsum += ABS(hyd->LeakageFlow[i]); + *dqsum += ABS(dq); + + // Update identity of element with max. flow change + if (ABS(dq) > hbal->maxflowchange) + { + hbal->maxflowchange = ABS(dq); + hbal->maxflownode = i; + hbal->maxflowlink = -1; + } + } +} + + void newdemandflows(Project *pr, Hydbalance *hbal, double *qsum, double *dqsum) /* **---------------------------------------------------------------- @@ -546,7 +586,7 @@ void newdemandflows(Project *pr, Hydbalance *hbal, double *qsum, double *dqsum) for (i = 1; i <= net->Njuncs; i++) { // Skip junctions with no positive demand - if (hyd->NodeDemand[i] <= 0.0) continue; + if (hyd->FullDemand[i] <= 0.0) continue; // Find change in demand flow (see hydcoeffs.c) demandheadloss(pr, i, dp, n, &hloss, &hgrad); @@ -555,8 +595,8 @@ void newdemandflows(Project *pr, Hydbalance *hbal, double *qsum, double *dqsum) dq *= hyd->RelaxFactor; // Prevent a flow change greater than full demand - if (fabs(dq) > 0.4 * hyd->NodeDemand[i]) - dq = 0.4 * SGN(dq) * hyd->NodeDemand[i]; + if (fabs(dq) > 0.4 * hyd->FullDemand[i]) + dq = 0.4 * SGN(dq) * hyd->FullDemand[i]; hyd->DemandFlow[i] -= dq; // Update system flow summation @@ -641,11 +681,15 @@ int hasconverged(Project *pr, double *relerr, Hydbalance *hbal) if (hyd->FlowChangeLimit > 0.0 && hbal->maxflowchange > hyd->FlowChangeLimit) return 0; + // Check for node leakage convergence + if (hyd->HasLeakage && !leakagehasconverged(pr)) return 0; + // Check for pressure driven analysis convergence if (hyd->DemandModel == PDA) return pdaconverged(pr); return 1; } + int pdaconverged(Project *pr) /* **-------------------------------------------------------------- @@ -659,47 +703,32 @@ int pdaconverged(Project *pr) Hydraul *hyd = &pr->hydraul; const double QTOL = 0.0001; // 0.0001 cfs ~= 0.005 gpm ~= 0.2 lpm) - int i, converged = 1; - double totalDemand = 0.0, totalReduction = 0.0; + int i; double dp = hyd->Preq - hyd->Pmin; double p, q, r; - hyd->DeficientNodes = 0; - hyd->DemandReduction = 0.0; - - // Add up number of junctions with demand deficits + // Examine each network junction for (i = 1; i <= pr->network.Njuncs; i++) { // Skip nodes whose required demand is non-positive - if (hyd->NodeDemand[i] <= 0.0) continue; + if (hyd->FullDemand[i] <= 0.0) continue; // Evaluate demand equation at current pressure solution p = hyd->NodeHead[i] - pr->network.Node[i].El; if (p <= hyd->Pmin) q = 0.0; else if (p >= hyd->Preq) - q = hyd->NodeDemand[i]; + q = hyd->FullDemand[i]; else { r = (p - hyd->Pmin) / dp; - q = hyd->NodeDemand[i] * pow(r, hyd->Pexp); + q = hyd->FullDemand[i] * pow(r, hyd->Pexp); } // Check if demand has not converged - if (fabs(q - hyd->DemandFlow[i]) > QTOL) - converged = 0; - - // Accumulate total required demand and demand deficit - if (hyd->DemandFlow[i] + QTOL < hyd->NodeDemand[i]) - { - hyd->DeficientNodes++; - totalDemand += hyd->NodeDemand[i]; - totalReduction += hyd->NodeDemand[i] - hyd->DemandFlow[i]; - } - } - if (totalDemand > 0.0) - hyd->DemandReduction = totalReduction / totalDemand * 100.0; - return converged; + if (fabs(q - hyd->DemandFlow[i]) > QTOL) return 0; + } + return 1; } diff --git a/src/inpfile.c b/src/inpfile.c index ec786b2..9945a2a 100644 --- a/src/inpfile.c +++ b/src/inpfile.c @@ -7,7 +7,7 @@ Description: saves network data to an EPANET formatted text file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 05/11/2024 +Last Updated: 06/18/2024 ****************************************************************************** */ @@ -369,6 +369,19 @@ int saveinpfile(Project *pr, const char *fname) fprintf(f, "\n %-31s\t%-14.6f", node->ID, ke); } + // Write [LEAKAGE] section + fprintf(f, "\n\n"); + fprintf(f, s_LEAKAGE); + fprintf(f, "\n;;%-31s\t%-14s\t%-14s", + "Pipe", "Leak Area", "Leak Expansion"); + for (i = 1; i <= net->Nlinks; i++) + { + link = &net->Link[i]; + if (link->LeakArea == 0.0 && link->LeakExpan == 0.0) continue; + fprintf(f, "\n %-31s %14.6f %14.6f", link->ID, + link->LeakArea * pr->Ucf[LENGTH], link->LeakExpan * pr->Ucf[LENGTH]); + } + // Write [STATUS] section fprintf(f, "\n\n"); fprintf(f, s_STATUS); @@ -584,7 +597,7 @@ int saveinpfile(Project *pr, const char *fname) fprintf(f, "\n\n"); fprintf(f, s_REACTIONS); - fprintf(f, "\n;;%-9s\t%-31s\t%-12s", "Type", "Pipe/Tank", "Coefficient"); + fprintf(f, "\n;%-9s\t%-31s\t%-12s", "Type", "Pipe/Tank", "Coefficient"); // Pipe-specific parameters for (i = 1; i <= net->Nlinks; i++) diff --git a/src/input1.c b/src/input1.c index ee40d1e..1074dec 100644 --- a/src/input1.c +++ b/src/input1.c @@ -7,7 +7,7 @@ Description: retrieves network data from an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 09/28/2023 +Last Updated: 06/15/2024 ****************************************************************************** */ @@ -593,6 +593,10 @@ void convertunits(Project *pr) // Convert units on reaction coeffs. link->Kb /= SECperDAY; link->Kw /= SECperDAY; + + // Convert leakage parameters + link->LeakArea /= pr->Ucf[LENGTH]; + link->LeakExpan /= pr->Ucf[LENGTH]; } else if (link->Type == PUMP) diff --git a/src/input2.c b/src/input2.c index c5af2ba..f1ce8bf 100644 --- a/src/input2.c +++ b/src/input2.c @@ -310,6 +310,7 @@ int newline(Project *pr, int sect, char *line) else return 0; case _SOURCES: return (sourcedata(pr)); case _EMITTERS: return (emitterdata(pr)); + case _LEAKAGE: return (leakagedata(pr)); case _QUALITY: return (qualdata(pr)); case _STATUS: return (statusdata(pr)); case _ROUGHNESS: return (0); diff --git a/src/input3.c b/src/input3.c index 1d4f03a..296e752 100644 --- a/src/input3.c +++ b/src/input3.c @@ -387,6 +387,8 @@ int pipedata(Project *pr) link->Km = 0.0; link->Kb = MISSING; link->Kw = MISSING; + link->LeakArea = 0.0; + link->LeakExpan = 0.0; link->Type = PIPE; link->Status = OPEN; link->Rpt = 0; @@ -494,6 +496,8 @@ int pumpdata(Project *pr) link->Km = 0.0; link->Kb = 0.0; link->Kw = 0.0; + link->LeakArea = 0.0; + link->LeakExpan = 0.0; link->Type = PUMP; link->Status = OPEN; link->Rpt = 0; @@ -613,6 +617,8 @@ int valvedata(Project *pr) link->Km = 0.0; link->Kb = 0.0; link->Kw = 0.0; + link->LeakArea = 0.0; + link->LeakExpan = 0.0; link->Type = type; link->Status = ACTIVE; link->Rpt = 0; @@ -1118,6 +1124,41 @@ int emitterdata(Project *pr) return 0; } +int leakagedata(Project *pr) +/* +**-------------------------------------------------------------- +** Input: none +** Output: returns error code +** Purpose: processes link leakage data +** Format: +** [LEAKAGE] +** link C1 C2 +**-------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Parser *parser = &pr->parser; + + int j, // Link index + n; // # data items + double c1, c2; // Flow coeff. + + // Check that link exists & is a pipe + n = parser->Ntokens; + if (n < 3) return 201; + if ((j = findlink(net, parser->Tok[0])) == 0) return setError(parser, 0, 203); + if (net->Link[j].Type > PIPE) return 0; + + // Parse leakage coeffs. + if (!getfloat(parser->Tok[1], &c1)) return setError(parser, 1, 202); + if (c1 < 0.0) return setError(parser, 1, 209); + if (!getfloat(parser->Tok[2], &c2)) return setError(parser, 2, 202); + if (c2 < 0.0) return setError(parser, 1, 209); + net->Link[j].LeakArea = c1; + net->Link[j].LeakExpan = c2; + return 0; +} + int qualdata(Project *pr) /* **-------------------------------------------------------------- diff --git a/src/leakage.c b/src/leakage.c new file mode 100644 index 0000000..cb5cad7 --- /dev/null +++ b/src/leakage.c @@ -0,0 +1,531 @@ +/* + ****************************************************************************** + Project: OWA EPANET + Version: 2.3 + Module: leakage.c + Description: models additional nodal demands due to pipe leaks. + Authors: see AUTHORS + Copyright: see AUTHORS + License: see LICENSE + Last Updated: 06/14/2024 + ****************************************************************************** +*/ +/* +This module uses the FAVAD (Fixed and Variable Discharge) equation to model +leaky pipes: + + Q = Co * L * (Ao + m * H) * sqrt(H) + +where Q = leak flow rate, Co = an orifice coefficient (= 0.6*sqrt(2g)), +L = pipe length, Ao = initial area of leak per unit of pipe length, +m = change in leak area per unit of pressure head, and H = pressure head. + +The inverted form of this equation is used to model the leakage demand from +a pipe's end node using a pair of equivalent emitters as follows: + + H = Cfa * Qfa^2 + H = Cva * Qva^(2/3) + +where Qfa = fixed area leakage rate, Qva = variable area leakage rate, +Cfa = 1 / SUM(Co*(L/2)*Ao)^2, Cva = 1 / SUM(Co*(L/2)*m)^2/3, and +SUM(x) is the summation of x over all pipes connected to the node. + +In implementing this model, the pipe property "LeakArea" represents Ao in +sq. mm per 100 units of pipe length and "LeakExpan" represents m in sq. mm +per unit of pressure head. + +*/ +#include +#include + +#include "types.h" +#include "funcs.h" + +// Exported functions (declared in funcs.h) +//int openleakage(Project *); +//void closeleakage(Project *); +//double findlinkleakage(Project *, int); +//void leakagecoeffs(Project *); +//double leakageflowchange(Project *, int); +//int leakagehasconverged(Project *); + +// Local functions +static int check_for_leakage(Project *pr); +static int create_leakage_objects(Project *pr); +static void convert_pipe_to_node_leakage(Project *pr); +static void init_node_leakage(Project *pr); +static int leakage_headloss(Project* pr, int i, double *hfa, + double *gfa, double *hva, double *gva); +static void eval_node_leakage(double RQtol, double q, double c, + double n, double *h, double *g); +static void add_lower_barrier(double q, double* h, double* g); + + +int openleakage(Project *pr) +/*------------------------------------------------------------- +** Input: none +** Output: returns an error code +** Purpose: opens the pipe leakage modeling system +**------------------------------------------------------------- +*/ +{ + Hydraul *hyd = &pr->hydraul; + + int err; + + // Check if project includes leakage + closeleakage(pr); + hyd->HasLeakage = check_for_leakage(pr); + if (!hyd->HasLeakage) return 0; + + // Allocate memory for leakage data objects + err = create_leakage_objects(pr); + if (err > 0) return err; + + // Convert pipe leakage coeffs. to node coeffs. + convert_pipe_to_node_leakage(pr); + init_node_leakage(pr); + return 0; +} + + +int check_for_leakage(Project *pr) +/*------------------------------------------------------------- +** Input: none +** Output: returns TRUE if any pipes can leak, FALSE otherwise +** Purpose: checks if any pipes can leak. +**------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + int i; + Slink *link; + + for (i = 1; i <= net->Nlinks; i++) + { + // Only pipes have leakage + link = &net->Link[i]; + if (link->Type > PIPE) continue; + if (link->LeakArea > 0.0 || link->LeakExpan > 0.0) return TRUE; + } + return FALSE; +} + + +int create_leakage_objects(Project *pr) +/*------------------------------------------------------------- +** Input: none +** Output: returns an error code +** Purpose: allocates an array of Leakage objects. +**------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + int i; + + hyd->Leakage = (Sleakage *)calloc(net->Njuncs + 1, sizeof(Sleakage)); + if (hyd->Leakage == NULL) return 101; + for (i = 1; i <= net->Njuncs; i++) + { + hyd->Leakage[i].cfa = 0.0; + hyd->Leakage[i].cva = 0.0; + hyd->Leakage[i].qfa = 0.0; + hyd->Leakage[i].qva = 0.0; + } + return 0; +} + +void convert_pipe_to_node_leakage(Project *pr) +/*------------------------------------------------------------- +** Input: none +** Output: none +** Purpose: converts pipe leakage parameters into node leakage +** coefficents. +**------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + + int i; + double c_area, c_expan, c_orif, len; + Slink *link; + Snode *node1; + Snode *node2; + + // Examine each link + c_orif = 4.8149866 * 1.e-6; + for (i = 1; i <= net->Nlinks; i++) + { + // Only pipes have leakage + link = &net->Link[i]; + if (link->Type > PIPE) continue; + + // Ignore leakage in a pipe connecting two tanks or + // reservoirs (since those nodes don't have demands) + node1 = &net->Node[link->N1]; + node2 = &net->Node[link->N2]; + if (node1->Type != JUNCTION && node2->Type != JUNCTION) continue; + + // Get pipe's fixed and variable area leak coeffs. + if (link->LeakArea == 0.0 && link->LeakExpan == 0.0) continue; + c_area = c_orif * link->LeakArea / SQR(MperFT); + c_expan = c_orif * link->LeakExpan; + + // Adjust for number of 100-ft pipe sections + len = link->Len * pr->Ucf[LENGTH] / 100.; + if (node1->Type == JUNCTION && node2->Type == JUNCTION) + { + len *= 0.5; + } + c_area *= len; + c_expan *= len; + + // Add these coeffs. to pipe's end nodes + if (node1->Type == JUNCTION) + { + hyd->Leakage[link->N1].cfa += c_area; + hyd->Leakage[link->N1].cva += c_expan; + } + if (node2->Type == JUNCTION) + { + hyd->Leakage[link->N2].cfa += c_area; + hyd->Leakage[link->N2].cva += c_expan; + } + } +} + +void init_node_leakage(Project *pr) +/*------------------------------------------------------------- +** Input: none +** Output: none +** Purpose: initializes node leakage coeffs. and flows. +**------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + + int i; + double c_area, c_expan; + + for (i = 1; i <= net->Njuncs; i++) + { + // Coeff. for fixed area leakage + c_area = hyd->Leakage[i].cfa; + if (c_area > 0.0) + hyd->Leakage[i].cfa = 1.0 / (c_area * c_area); + else + hyd->Leakage[i].cfa = 0.0; + + // Coeff. for variable area leakage + c_expan = hyd->Leakage[i].cva; + if (c_expan > 0.0) + hyd->Leakage[i].cva = 1.0 / pow(c_expan, 2./3.); + else + hyd->Leakage[i].cva = 0.0; + + // Initialize leakage flow to a non-zero value (as required by + // the hydraulic solver) + if (hyd->Leakage[i].cfa > 0.0) + hyd->Leakage[i].qfa = 0.001; + if (hyd->Leakage[i].cva > 0.0) + hyd->Leakage[i].qva = 0.001; + } +} + +void closeleakage(Project *pr) +/*------------------------------------------------------------- +** Input: none +** Output: none +** Purpose: frees memory for nodal leakage objects. +**------------------------------------------------------------- +*/ +{ + Hydraul *hyd = &pr->hydraul; + if (hyd->Leakage) free(hyd->Leakage); + hyd->Leakage = NULL; + hyd->HasLeakage = FALSE; +} + +double findlinkleakage(Project *pr, int i) +/*------------------------------------------------------------- +** Input: i = link index +** Output: returns link leakage flow (cfs) +** Purpose: computes leakage flow from link i at current +** hydraulic solution. +**------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + Smatrix *sm = &hyd->smatrix; + Slink *link = &net->Link[i]; + + int n1, n2; + double h1, h2, hsqrt, a, m, c, len, q1, q2; + + // Only pipes can leak + link = &net->Link[i]; + if (link->Type > PIPE) return 0.0; + + // No leakage if area & expansion are 0 + if (link->LeakArea == 0.0 && link->LeakExpan == 0.0) return 0.0; + + // No leakage if link's end nodes are both fixed grade + n1 = link->N1; + n2 = link->N2; + if (n1 > net->Njuncs && n2 > net->Njuncs) return 0.0; + + // Pressure head of end nodes + h1 = hyd->NodeHead[n1] - net->Node[n1].El; + h1 = MAX(h1, 0.0); + h2 = hyd->NodeHead[n2] - net->Node[n2].El; + h2 = MAX(h2, 0.0); + + // Pipe leak parameters converted to feet + a = link->LeakArea / SQR(MperFT); + m = link->LeakExpan; + len = link->Len * pr->Ucf[LENGTH] / 100.; // # 100 ft pipe lengths + c = 4.8149866 * len / 2.0 * 1.e-6; + + // Leakage from 1st half of pipe connected to node n1 + q1 = 0.0; + if (n1 <= net->Njuncs) + { + hsqrt = sqrt(h1); + q1 = c * (a + m * h1) * hsqrt; + } + + // Leakage from 2nd half of pipe connected to node n2 + q2 = 0.0; + if (n2 <= net->Njuncs) + { + hsqrt = sqrt(h2); + q2 = c * (a + m * h2) * hsqrt; + } + + // Adjust leakage flows to account for one node being fixed grade + if (q2 == 0.0) q1 *= 2.0; + if (q1 == 0.0) q2 *= 2.0; + return q1 + q2; +} + +void leakagecoeffs(Project *pr) +/* +**-------------------------------------------------------------- +** Input: none +** Output: none +** Purpose: computes coeffs. of the linearized hydraulic eqns. +** contributed by node leakages. +**-------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + Smatrix *sm = &hyd->smatrix; + + int i, row; + double hfa, // head loss producing current fixed area leakage + gfa, // gradient of fixed area head loss + hva, // head loss producing current variable area leakage + gva; // gradient of variable area head loss + + Snode* node; + + for (i = 1; i <= net->Njuncs; i++) + { + // Skip junctions that don't leak + node = &net->Node[i]; + if (!leakage_headloss(pr, i, &hfa, &gfa, &hva, &gva)) continue; + + // Addition to matrix diagonal & r.h.s + row = sm->Row[i]; + if (gfa > 0.0) + { + sm->Aii[row] += 1.0 / gfa; + sm->F[row] += (hfa + node->El) / gfa; + } + if (gva > 0.0) + { + sm->Aii[row] += 1.0 / gva; + sm->F[row] += (hva + node->El) / gva; + } + + // Update node's flow excess (inflow - outflow) + hyd->Xflow[i] -= (hyd->Leakage[i].qfa + hyd->Leakage[i].qva); + } +} + +double leakageflowchange(Project *pr, int i) +/* +**-------------------------------------------------------------- +** Input: i = node index +** Output: returns change in leakage flow rate +** Purpose: finds new leakage flow rate at a node after new +** heads are computed by the hydraulic solver. +**-------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + + double hfa, gfa, hva, gva, // same as defined in leakage_solvercoeffs() + dh, dqfa, dqva; + + // Find the head loss and gradient of the inverted leakage + // equation for both fixed and variable area leakage at the + // current leakage flow rates + if (!leakage_headloss(pr, i, &hfa, &gfa, &hva, &gva)) return 0.0; + + // Pressure head using latest head solution + dh = hyd->NodeHead[i] - net->Node[i].El; + + // GGA flow update formula for fixed area leakage + dqfa = 0.0; + if (gfa > 0.0) + { + dqfa = (hfa - dh) / gfa * hyd->RelaxFactor; + hyd->Leakage[i].qfa -= dqfa; + } + + // GGA flow update formula for variable area leakage + dqva = 0.0; + if (gva > 0.0) + { + dqva = (hva - dh) / gva * hyd->RelaxFactor; + hyd->Leakage[i].qva -= dqva; + } + + // New leakage flow at the node + hyd->LeakageFlow[i] = hyd->Leakage[i].qfa + hyd->Leakage[i].qva; + return dqfa + dqva; +} + +int leakagehasconverged(Project *pr) +/* +**-------------------------------------------------------------- +** Input: none +** Output: returns TRUE if leakage calculations converged, +** FALSE if not +** Purpose: checks if leakage calculations have converged. +**-------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + int i; + double h, qref, qtest; + const double ABSTOL = 0.0001; // 0.0001 cfs ~= 0.005 gpm ~= 0.2 lpm) + const double RELTOL = 0.001; + + for (i = 1; i <= net->Njuncs; i++) + { + // Skip junctions that don't leak + if (hyd->Leakage[i].cfa == 0 && hyd->Leakage[i].cva == 0) continue; + + // Evaluate node's pressure head + h = hyd->NodeHead[i] - net->Node[i].El; + + // Directly compute a reference leakage at this pressure head + qref = 0.0; + // Contribution from pipes with fixed area leaks + if (hyd->Leakage[i].cfa > 0.0) + qref = sqrt(h / hyd->Leakage[i].cfa); + // Contribution from pipes with variable area leaks + if (hyd->Leakage[i].cva > 0.0) + qref += pow((h / hyd->Leakage[i].cva), 1.5); + + // Compare reference leakage to solution leakage + qtest = hyd->Leakage[i].qfa + hyd->Leakage[i].qva; + if (fabs(qref - qtest) > ABSTOL + RELTOL * qref) return FALSE; + } + return TRUE; +} + +int leakage_headloss(Project* pr, int i, double *hfa, double *gfa, + double *hva, double *gva) +/* +**-------------------------------------------------------------- +** Input: i = node index +** Output: hfa = fixed area leak head loss (ft) +** gfa = gradient of fixed area head loss (ft/cfs) +** hva = variable area leak head loss (ft) +** gva = gradient of variable area head loss (ft/cfs) +** returns TRUE if node has leakage, FALSE otherwise +** Purpose: finds head loss and its gradient for a node's +** leakage as a function of leakage flow. +**-------------------------------------------------------------- +*/ +{ + Hydraul *hyd = &pr->hydraul; + if (hyd->Leakage[i].cfa == 0.0 && hyd->Leakage[i].cva == 0.0) return FALSE; + if (hyd->Leakage[i].cfa == 0.0) + { + *hfa = 0.0; + *gfa = 0.0; + } + else + eval_node_leakage(hyd->RQtol, hyd->Leakage[i].qfa, hyd->Leakage[i].cfa, + 0.5, hfa, gfa); + if (hyd->Leakage[i].cva == 0.0) + { + *hva = 0.0; + *gva = 0.0; + } + else + eval_node_leakage(hyd->RQtol, hyd->Leakage[i].qva, hyd->Leakage[i].cva, + 1.5, hva, gva); + return TRUE; +} + +void eval_node_leakage(double RQtol, double q, double c, double n, + double *h, double *g) +/* +**-------------------------------------------------------------- +** Input: RQtol = low gradient tolerance (ft/cfs) +** q = leakage flow rate (cfs) +** c = leakage head loss coefficient +** n = leakage head loss exponent +** Output: h = leakage head loss (ft) +** g = gradient of leakage head loss (ft/cfs) +** Purpose: evaluates inverted form of leakage equation to +** compute head loss and its gradient as a function +** flow. +**-------------------------------------------------------------- +*/ +{ + n = 1.0 / n; + *g = n * c * pow(fabs(q), n - 1.0); + + // Use linear head loss function for small gradient + if (*g < RQtol) + { + *g = RQtol / n; + *h = (*g) * q; + } + + // Otherwise use normal leakage head loss function + else *h = (*g) * q / n; + + // Prevent leakage from going negative + add_lower_barrier(q, h, g); +} + +void add_lower_barrier(double q, double* h, double* g) +/* +**-------------------------------------------------------------------- +** Input: q = current flow rate +** Output: h = head loss value +** g = head loss gradient value +** Purpose: adds a head loss barrier to prevent flow from falling +** below 0. +**-------------------------------------------------------------------- +*/ +{ + double a = 1.e9 * q; + double b = sqrt(a*a + 1.e-6); + *h += (a - b) / 2.; + *g += (1.e9 / 2.) * ( 1.0 - a / b); +} diff --git a/src/project.c b/src/project.c index 2104d06..80c7697 100644 --- a/src/project.c +++ b/src/project.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 09/28/2023 + Last Updated: 06/24/2024 ****************************************************************************** */ @@ -328,8 +328,11 @@ void initpointers(Project *pr) pr->hydraul.P = NULL; pr->hydraul.Y = NULL; pr->hydraul.Xflow = NULL; + pr->hydraul.FullDemand = NULL; pr->hydraul.DemandFlow = NULL; pr->hydraul.EmitterFlow = NULL; + pr->hydraul.LeakageFlow = NULL; + pr->hydraul.Leakage = NULL; pr->quality.NodeQual = NULL; pr->quality.PipeRateCoeff = NULL; @@ -392,14 +395,18 @@ int allocdata(Project *pr) pr->hydraul.NodeDemand = (double *)calloc(n, sizeof(double)); pr->hydraul.NodeHead = (double *)calloc(n, sizeof(double)); pr->quality.NodeQual = (double *)calloc(n, sizeof(double)); + pr->hydraul.FullDemand = (double *)calloc(n, sizeof(double)); pr->hydraul.DemandFlow = (double *)calloc(n, sizeof(double)); pr->hydraul.EmitterFlow = (double *)calloc(n, sizeof(double)); + pr->hydraul.LeakageFlow = (double *)calloc(n, sizeof(double)); ERRCODE(MEMCHECK(pr->network.Node)); ERRCODE(MEMCHECK(pr->hydraul.NodeDemand)); ERRCODE(MEMCHECK(pr->hydraul.NodeHead)); ERRCODE(MEMCHECK(pr->quality.NodeQual)); + ERRCODE(MEMCHECK(pr->hydraul.FullDemand)); ERRCODE(MEMCHECK(pr->hydraul.DemandFlow)); ERRCODE(MEMCHECK(pr->hydraul.EmitterFlow)); + ERRCODE(MEMCHECK(pr->hydraul.LeakageFlow)); } // Allocate memory for network links @@ -471,8 +478,10 @@ void freedata(Project *pr) free(pr->hydraul.LinkFlow); free(pr->hydraul.LinkSetting); free(pr->hydraul.LinkStatus); + free(pr->hydraul.FullDemand); free(pr->hydraul.DemandFlow); free(pr->hydraul.EmitterFlow); + free(pr->hydraul.LeakageFlow); free(pr->quality.NodeQual); // Free memory used for nodal adjacency lists diff --git a/src/report.c b/src/report.c index ffdc2d2..25bb137 100644 --- a/src/report.c +++ b/src/report.c @@ -422,6 +422,44 @@ void writehydstat(Project *pr, int iter, double relerr) writeline(pr, " "); } +void writeflowbalance(Project *pr) +/* +**------------------------------------------------------------- +** Input: none +** Output: none +** Purpose: writes hydraulic flow balance ratio to report file. +**------------------------------------------------------------- +*/ +{ + Hydraul *hyd = &pr->hydraul; + Report *rpt = &pr->report; + char s1[MAXMSG+1]; + double ucf = pr->Ucf[FLOW]; + + snprintf(s1, MAXMSG, "Hydraulic Flow Balance (%s)", rpt->Field[DEMAND].Units); + writeline(pr, s1); + snprintf(s1, MAXMSG, "================================"); + writeline(pr, s1); + snprintf(s1, MAXMSG, "Total Inflow: %12.3f", hyd->FlowBalance.totalInflow*ucf); + writeline(pr, s1); + snprintf(s1, MAXMSG, "Consumer Demand: %12.3f", hyd->FlowBalance.consumerDemand*ucf); + writeline(pr, s1); + snprintf(s1, MAXMSG, "Demand Deficit: %12.3f", hyd->FlowBalance.deficitDemand*ucf); + writeline(pr, s1); + snprintf(s1, MAXMSG, "Emitter Flow: %12.3f", hyd->FlowBalance.emitterDemand*ucf); + writeline(pr, s1); + snprintf(s1, MAXMSG, "Leakage Flow: %12.3f", hyd->FlowBalance.leakageDemand*ucf); + writeline(pr, s1); + snprintf(s1, MAXMSG, "Total Outflow: %12.3f", hyd->FlowBalance.totalOutflow*ucf); + writeline(pr, s1); + snprintf(s1, MAXMSG, "Storage Flow: %12.3f", hyd->FlowBalance.storageDemand*ucf); + writeline(pr, s1); + snprintf(s1, MAXMSG, "Flow Ratio: %12.3f", hyd->FlowBalance.ratio); + writeline(pr, s1); + snprintf(s1, MAXMSG, "================================\n"); + writeline(pr, s1); +} + void writemassbalance(Project *pr) /* **------------------------------------------------------------- diff --git a/src/text.h b/src/text.h index 1a78573..84b05db 100755 --- a/src/text.h +++ b/src/text.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 05/11/2024 + Last Updated: 06/15/2024 ****************************************************************************** */ @@ -151,6 +151,9 @@ #define w_REQUIRED "REQ" #define w_EXPONENT "EXP" +#define w_AREA "AREA" +#define w_EXPAN "EXPAN" + #define w_SECONDS "SEC" #define w_MINUTES "MIN" #define w_HOURS "HOU" @@ -208,6 +211,7 @@ #define s_DEMANDS "[DEMANDS]" #define s_SOURCES "[SOURCES]" #define s_EMITTERS "[EMITTERS]" +#define s_LEAKAGE "[LEAKAGE]" #define s_PATTERNS "[PATTERNS]" #define s_CURVES "[CURVES]" #define s_QUALITY "[QUALITY]" diff --git a/src/types.h b/src/types.h index ff7c359..30fd64e 100755 --- a/src/types.h +++ b/src/types.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 07/17/2023 + Last Updated: 06/15/2024 ****************************************************************************** */ @@ -294,7 +294,7 @@ typedef enum { _VALVES, _CONTROLS, _RULES, _DEMANDS, _SOURCES, _EMITTERS, _PATTERNS, _CURVES, _QUALITY, _STATUS, _ROUGHNESS, _ENERGY, _REACTIONS, _MIXING, _REPORT, _TIMES, _OPTIONS, - _COORDS, _VERTICES, _LABELS, _BACKDROP, _TAGS, _END + _COORDS, _VERTICES, _LABELS, _BACKDROP, _TAGS, _LEAKAGE, _END } SectionType; typedef enum { @@ -413,6 +413,8 @@ typedef struct // Link Object double Kw; // wall react. coef. double R; // flow resistance double Rc; // reaction coeff. + double LeakArea; // leak area (sq mm per 100 pipe length units + double LeakExpan; // leak expansion (sq mm per unit of head) LinkType Type; // link type StatusType Status; // initial status Pvertices Vertices; // internal vertex coordinates @@ -549,6 +551,26 @@ typedef struct // Mass Balance Components double ratio; // ratio of mass added to mass lost } SmassBalance; +typedef struct +{ + double totalInflow; + double totalOutflow; + double consumerDemand; + double emitterDemand; + double leakageDemand; + double deficitDemand; + double storageDemand; + double ratio; +} SflowBalance; + +typedef struct // Node Leakage Object +{ + double qfa; // fixed area leakage flow + double qva; // variable area leakage flow + double cfa; // fixed area leakage coeff. + double cva; // variable area leakage coeff. +} Sleakage; + /* ------------------------------------------------------ Wrapper Data Structures @@ -712,9 +734,11 @@ typedef struct { double *NodeHead, // Node hydraulic heads - *NodeDemand, // Node demand + emitter flows - *DemandFlow, // Work array of demand flows - *EmitterFlow, // Emitter outflows + *NodeDemand, // Node total demand (consumer + emitter + leakage) + *FullDemand, // Required consumer demand + *DemandFlow, // Demand flow from nodes + *EmitterFlow, // Emitter flow from nodes + *LeakageFlow, // Leakage flow from nodes *LinkFlow, // Link flows *LinkSetting, // Link settings Htol, // Hydraulic head tolerance @@ -741,6 +765,7 @@ typedef struct { MaxHeadError, // Max. error for link head loss MaxFlowChange, // Max. change in link flow DemandReduction, // % demand reduction at pressure deficient nodes + LeakageLoss, // % system leakage loss RelaxFactor, // Relaxation factor for flow updating *P, // Inverse of head loss derivatives *Y, // Flow correction factors @@ -759,12 +784,18 @@ typedef struct { MaxCheck, // Hydraulic trials limit on status checks OpenHflag, // Hydraulic system opened flag Haltflag, // Flag to halt simulation - DeficientNodes; // Number of pressure deficient nodes + DeficientNodes, // Number of pressure deficient nodes + HasLeakage; // TRUE if project has non-zero leakage parameters + + Sleakage *Leakage; // Array of node leakage parameters StatusType *LinkStatus, // Link status *OldStatus; // Previous link/tank status + SflowBalance + FlowBalance; // Flow balance components + Smatrix smatrix; // Sparse matrix storage } Hydraul; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d90167f..744a58a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -41,6 +41,7 @@ set(toolkit_test_srcs test_pda.cpp test_valve.cpp test_units.cpp + test_leakage.cpp ) add_executable(test_toolkit ${toolkit_test_srcs}) diff --git a/tests/test_leakage.cpp b/tests/test_leakage.cpp new file mode 100644 index 0000000..4a1c716 --- /dev/null +++ b/tests/test_leakage.cpp @@ -0,0 +1,93 @@ +/* + ****************************************************************************** + Project: OWA EPANET + Version: 2.3 + Module: test_leakage.cpp + Description: Tests EPANET toolkit api functions + Authors: see AUTHORS + Copyright: see AUTHORS + License: see LICENSE + Last Updated: 06/26/2024 + ****************************************************************************** +*/ + +/* + Tests Pipe Leakage Feature +*/ + +#include + +#include "test_toolkit.hpp" + +BOOST_AUTO_TEST_SUITE (test_leakage) + +BOOST_AUTO_TEST_CASE(test_leakage_model) + +//#include +//#include +//#include "epanet2_2.h" + +//int main() +{ + int error = 0; + int Pipe21, Junc21, Junc22; + double pipe21Leak, junc21Leak, junc22Leak; + EN_Project ph = NULL; + + error = EN_createproject(&ph); + BOOST_REQUIRE(error == 0); + error = EN_open(ph, DATA_PATH_NET1, DATA_PATH_RPT, ""); +// error = EN_open(ph, "Net1.inp", "Net1.rpt", ""); + BOOST_REQUIRE(error == 0); + + // single period analysis + error = EN_settimeparam(ph, EN_DURATION, 0); + BOOST_REQUIRE(error == 0); + + // Get index of Pipe 21 + error = EN_getlinkindex(ph, "21", &Pipe21); + BOOST_REQUIRE(error == 0); + + // Set Pipe21 leak area to 1.0 sq mm per 100 ft of pipe + // and its expansion rate to 0.1 sq mm per ft of head + error = EN_setlinkvalue(ph, Pipe21, EN_LEAK_AREA, 1.0); + BOOST_REQUIRE(error == 0); + error = EN_setlinkvalue(ph, Pipe21, EN_LEAK_EXPAN, 0.1); + BOOST_REQUIRE(error == 0); + + // Solve for hydraulics + error = EN_solveH(ph); + BOOST_REQUIRE(error == 0); + + // Compute Pipe 21 leakage flow using the FAVAD formula + // Note: we can't just sum the leak rates at both end nodes + // together since in general the nodes can have leakage + // contributed by other connecting pipes. + error = EN_getlinkvalue(ph, Pipe21, EN_LINK_LEAKAGE, &pipe21Leak); + BOOST_REQUIRE(error == 0); +// printf("\n Pipe leakage flow: %.4f", pipe21Leak); + + // Retrieve leakage flow at end nodes + // Note: In this case all of the leakage at these nodes is from Pipe 21. + error = EN_getnodeindex(ph, "21", &Junc21); + BOOST_REQUIRE(error == 0); + error = EN_getnodeindex(ph, "22", &Junc22); + BOOST_REQUIRE(error == 0); + error = EN_getnodevalue(ph, Junc21, EN_LEAKAGEFLOW, &junc21Leak); + BOOST_REQUIRE(error == 0); + error = EN_getnodevalue(ph, Junc22, EN_LEAKAGEFLOW, &junc22Leak); + BOOST_REQUIRE(error == 0); + + // Check that the sum of the node leakages equals the pipe leakage + //printf("\n Node leakage flow: %.4f\n", junc21Leak + junc22Leak); + BOOST_REQUIRE(abs(pipe21Leak - (junc21Leak+junc22Leak)) < 0.01); + +// Clean up + error = EN_close(ph); + BOOST_REQUIRE(error == 0); + error = EN_deleteproject(ph); + BOOST_REQUIRE(error == 0); +// return 0; +} + +BOOST_AUTO_TEST_SUITE_END() From 037ca41af6f2c92d702fecf4a5fedcbc43b3354f Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 26 Jun 2024 11:34:19 -0400 Subject: [PATCH 173/233] Adding Pipe Leakage Modeling --- ReleaseNotes2_3.md | 17 +- include/epanet2.bas | 11 +- include/epanet2.cs | 25 +- include/epanet2.def | 17 +- include/epanet2.pas | 304 ++++++++++++----------- include/epanet2.vb | 14 +- include/epanet2_enums.h | 13 +- src/enumstxt.h | 4 +- src/epanet.c | 66 ++++- src/flowbalance.c | 191 +++++++++++++++ src/funcs.h | 19 +- src/hydcoeffs.c | 5 +- src/hydraul.c | 19 +- src/hydsolver.c | 93 ++++--- src/inpfile.c | 17 +- src/input1.c | 6 +- src/input2.c | 1 + src/input3.c | 41 ++++ src/leakage.c | 531 ++++++++++++++++++++++++++++++++++++++++ src/project.c | 11 +- src/report.c | 38 +++ src/text.h | 6 +- src/types.h | 43 +++- tests/CMakeLists.txt | 1 + tests/test_leakage.cpp | 93 +++++++ 25 files changed, 1365 insertions(+), 221 deletions(-) create mode 100644 src/flowbalance.c create mode 100644 src/leakage.c create mode 100644 tests/test_leakage.cpp diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index ea5e96d..e561ee8 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -4,6 +4,7 @@ This document describes the changes and updates that have been made in version 2.3 of EPANET. - The check for at least two nodes, one tank/reservoir and no unconnected junction nodes was moved from `EN_open` to `EN_openH` and `EN_openQ` so that partial network data files could be opened by the toolkit. + - A `EN_setcurvetype` function was added to allow API clients to set a curve's type (e.g., `EN_PUMP_CURVE,` `EN_VOLUME_CURVE,` etc.). - A `EN_setvertex` function was added to allow API clients to change the coordinates of a single link vertex. - The indices of a General Purpose Valve (GPV) and a Positional Control Valve (PCV) were added to the list of editable Link Properties using the symbolic constant names `EN_GPV_CURVE` and `EN_PCV_CURVE`, respectively. @@ -52,6 +53,20 @@ This document describes the changes and updates that have been made in version 2 - Setting the demand multiplier within the `[DEMANDS]` section of INP has been depreciated, please use `DEMAND MULTIPLIER` inside `[OPTIONS]` instead. - `EN_PRESS_UNITS` can now be used with `EN_getoption` and `EN_setoption` to get or set the pressure unit used in EPANET. - Continuous barrier functions were added to constrain emitter flows to allowable values. -- The `EN_openx` function has been added to enable the opening of input files with formatting errors through the API. This allows users to continue using toolkit functions even when such errors are present. +- The `EN_openX` function has been added to enable the opening of input files with formatting errors through the API. This allows users to continue using toolkit functions even when such errors are present. - The `EN_getnodesvalues` and `EN_getlinksvalues` were added to retrieve a property value for all nodes or links in the network. - Fixed a bug in EN_setnodevalue with EN_EMITTER option that could cause NaN results. +- Support has been added for FAVAD (Fixed And Variable Area Discharge) modeling of pipe leaks: + - A new `[LEAKAGE]` section has been added to the input file format where each line contains the ID name of a pipe, its leak area in sq. mm per 100 length units, and its leak expansion rate in sq. mm per unit of pressure head. + - `EN_LEAK_AREA` and `EN_LEAK_EXPAN` can be used with the functions `EN_getlinkvalue` and `EN_setlinkvalue` to retrieve and assign values for a pipe's leak area and expansion properties. + - `EN_LINK_LEAKAGE` can be used with `EN_getlinkvalue` to retrieve a pipe's leakage rate at a given point in time. + - `EN_LEAKAGEFLOW` can be used with `EN_getnodevalue` to retrieve the leakage demand generated at a node from all its connecting pipes at a given point in time. + - `EN_LEAKAGELOSS` can be used with `EN_getstatistic` to retrieve the the total leakage loss in the system at a given point in time as a percentage of total flow entering the system. +- A new Flow Balance Report has been added to end of a simulation run's Status Report that lists the various components of the system's total inflow and outflow over the simulation period. It also displays the ratio of outflow to inflow as a check on flow continuity. +- The following constants can be used with EN_getnodevalue to retrieve the components of a node's total demand at a given point in time: + - `EN_FULLDEMAND` - the consumer demand requested + - `EN_DEMANDFLOW` - the consumer demand delivered + - `EN_DEMANDDEFICIT` - the difference between the consumer demand requested and delivered + - `EN_EMITTERFLOW` - the node's emitter flow + - `EN_LEAKAGEFLOW` - the node's leakage flow + - `EN_DEMAND` - the sum of the node's consumer demand, emitter flow, and leakage flow \ No newline at end of file diff --git a/include/epanet2.bas b/include/epanet2.bas index 6d70759..6ddb0ad 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -5,7 +5,7 @@ Attribute VB_Name = "Module1" 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) -'Last updated on 09/28/2023 +'Last updated on 06/23/2024 ' These are codes used by the DLL functions Public Const EN_ELEVATION = 0 ' Node parameters @@ -38,6 +38,9 @@ Public Const EN_CANOVERFLOW = 26 Public Const EN_DEMANDDEFICIT = 27 Public Const EN_NODE_INCONTROL = 28 Public Const EN_EMITTERFLOW = 29 +Public Const EN_LEAKAGEFLOW = 30 +Public Const EN_DEMANDFLOW = 31 +Public Const EN_FULLDEMAND = 32 Public Const EN_DIAMETER = 0 ' Link parameters Public Const EN_LENGTH = 1 @@ -65,6 +68,9 @@ Public Const EN_PUMP_EPAT = 22 Public Const EN_LINK_INCONTROL = 23 Public Const EN_GPV_CURVE = 24 Public Const EN_PCV_CURVE = 25 +Public Const EN_LEAK_AREA = 26 +Public Const EN_LEAK_EXPAN = 27 +Public Const EN_LINK_LEAKAGE = 28 Public Const EN_DURATION = 0 ' Time parameters Public Const EN_HYDSTEP = 1 @@ -90,6 +96,7 @@ Public Const EN_MAXFLOWCHANGE = 3 Public Const EN_MASSBALANCE = 4 Public Const EN_DEFICIENTNODES = 5 Public Const EN_DEMANDREDUCTION = 6 +Public Const EN_LEAKAGELOSS = 7 Public Const EN_NODE = 0 ' Component types Public Const EN_LINK = 1 @@ -350,6 +357,7 @@ Public Const EN_TRUE = 1 ' boolean true Declare Function ENsettankdata Lib "epanet2.dll" (ByVal index As Long, ByVal elev As Single, ByVal initlvl As Single, ByVal minlvl As Single, ByVal maxlvl As Single, ByVal diam As Single, ByVal minvol As Single, ByVal volcurve As String) As Long Declare Function ENgetcoord Lib "epanet2.dll" (ByVal index As Long, x As Double, y As Double) As Long Declare Function ENsetcoord Lib "epanet2.dll" (ByVal index As Long, ByVal x As Double, ByVal y As Double) As Long + Declare Function ENgetnodevalues Lib "epanet2.dll" (ByVal property as Long, values as Any) As Long 'Nodal Demand Functions Declare Function ENgetdemandmodel Lib "epanet2.dll" (type_ As Long, pmin As Single, preq As Single, pexp As Single) As Long @@ -382,6 +390,7 @@ Public Const EN_TRUE = 1 ' boolean true Declare Function ENgetvertex Lib "epanet2.dll" (ByVal index As Long, ByVal vertex As Long, x As Double, y As Double) As Long Declare Function ENsetvertex Lib "epanet2.dll" (ByVal index As Long, ByVal vertex As Long, ByVal x As Double, ByVal y As Double) As Long Declare Function ENsetvertices Lib "epanet2.dll" (ByVal index As Long, xCoords As Any, yCoords As Any, ByVal count As Long) As Long + Declare Function ENgetlinkvalues Lib "epanet2.dll" (ByVal property as Long, values as Any) As Long 'Pump Functions Declare Function ENgetheadcurveindex Lib "epanet2.dll" (ByVal linkIndex As Long, curveIndex As Long) As Long diff --git a/include/epanet2.cs b/include/epanet2.cs index 57668bf..0327c4d 100644 --- a/include/epanet2.cs +++ b/include/epanet2.cs @@ -3,7 +3,7 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; //epanet2.cs[By Oscar Vegas] -//Last updated on 09/28/2023 +//Last updated on 06/23/2024 //Declarations of functions in the EPANET PROGRAMMERs TOOLKIT //(EPANET2.DLL) for use with C# @@ -50,6 +50,9 @@ namespace EpanetCSharpLibrary public const int EN_DEMANDDEFICIT = 27; public const int EN_NODE_INCONTROL = 28; public const int EN_EMITTERFLOW = 29; + public const int EN_LEAKAGEFLOW = 30; + public const int EN_DEMANDFLOW = 31; + public const int EN_FULLDEMAND = 32; public const int EN_DIAMETER = 0; //Link parameters public const int EN_LENGTH = 1; @@ -78,6 +81,9 @@ namespace EpanetCSharpLibrary public const int EN_LINK_INCONTROL = 23; public const int EN_GPV_CURVE = 24; public const int EN_PCV_CURVE = 25; + public const int EN_LEAK_AREA = 26; + public const int EN_LEAK_EXPAN = 27; + public const int EN_LINK_LEAKAGE = 28; public const int EN_DURATION = 0; //Time parameters public const int EN_HYDSTEP = 1; @@ -102,6 +108,7 @@ namespace EpanetCSharpLibrary public const int EN_MASSBALANCE = 4; public const int EN_DEFICIENTNODES = 5; public const int EN_DEMANDREDUCTION = 6; + public const int EN_LEAKAGELOSS = 7; public const int EN_NODE = 0; //Component types public const int EN_LINK = 1; @@ -390,6 +397,9 @@ namespace EpanetCSharpLibrary [DllImport(EPANETDLL, EntryPoint = "ENgetresultindex")] public static extern int ENgetresultindex(int type, int index, ref int value); + [DllImport(EPANETDLL, EntryPoint = "ENtimetonextevent")] + public static extern int ENtimetonextevent(ref int eventType, ref long duration, ref int elementIndex); + //Analysis Options Functions [DllImport(EPANETDLL, EntryPoint = "ENgetoption")] @@ -440,10 +450,10 @@ namespace EpanetCSharpLibrary public static extern int ENgetnodetype(int index, ref int nodeType); [DllImport(EPANETDLL, EntryPoint = "ENgetnodevalue")] - public static extern int ENgetnodevalue(int index, int paramcode, ref float value); + public static extern int ENgetnodevalue(int index, int param, ref float value); [DllImport(EPANETDLL, EntryPoint = "ENsetnodevalue")] - public static extern int ENsetnodevalue(int index, int code, float value); + public static extern int ENsetnodevalue(int index, int param, float value); [DllImport(EPANETDLL, EntryPoint = "ENsetjuncdata")] public static extern int ENsetjuncdata(int index, float elev, float dmnd, string dmndpat); @@ -457,6 +467,8 @@ namespace EpanetCSharpLibrary [DllImport(EPANETDLL, EntryPoint = "ENsetcoord")] public static extern int ENsetcoord(int index, double x, double y); + [DllImport(EPANETDLL, EntryPoint = "ENgetnodevalues")] + public static extern int ENgetnodevalues(int param, ref float values); //Nodal Demand Functions [DllImport(EPANETDLL, EntryPoint = "ENgetdemandmodel")] @@ -525,10 +537,10 @@ namespace EpanetCSharpLibrary public static extern int ENsetlinknodes(int index, int node1, int node2); [DllImport(EPANETDLL, EntryPoint = "ENgetlinkvalue")] - public static extern int ENgetlinkvalue(int index, int code, ref float value); + public static extern int ENgetlinkvalue(int index, int param, ref float value); [DllImport(EPANETDLL, EntryPoint = "ENsetlinkvalue")] - public static extern int ENsetlinkvalue(int index, int code, float value); + public static extern int ENsetlinkvalue(int index, int param, float value); [DllImport(EPANETDLL, EntryPoint = "ENsetpipedata")] public static extern int ENsetpipedata(int index, float length, float diam, float rough, float mloss); @@ -542,6 +554,9 @@ namespace EpanetCSharpLibrary [DllImport(EPANETDLL, EntryPoint = "ENsetvertices")] public static extern int ENsetvertices(int index, ref double[] x, ref double[] y, int count); + [DllImport(EPANETDLL, EntryPoint = "ENgetlinkvalues")] + public static extern int ENgetlinkvalues(int param, ref float values); + //Pump Functions [DllImport(EPANETDLL, EntryPoint = "ENgetheadcurveindex")] diff --git a/include/epanet2.def b/include/epanet2.def index f5372af..d3472c1 100644 --- a/include/epanet2.def +++ b/include/epanet2.def @@ -25,6 +25,7 @@ EXPORTS ENgetbasedemand = _ENgetbasedemand@12 ENgetcomment = _ENgetcomment@12 ENgetcontrol = _ENgetcontrol@24 + ENgetcontrolenabled = _ENgetcontrolenabled@8 ENgetcoord = _ENgetcoord@12 ENgetcount = _ENgetcount@8 ENgetcurve = _ENgetcurve@20 @@ -44,13 +45,14 @@ EXPORTS ENgetlinkid = _ENgetlinkid@8 ENgetlinkindex = _ENgetlinkindex@8 ENgetlinknodes = _ENgetlinknodes@12 - ENsetlinknodes = _ENsetlinknodes@12 ENgetlinktype = _ENgetlinktype@8 ENgetlinkvalue = _ENgetlinkvalue@12 + ENgetlinkvalues = _ENgetlinkvalues@8 ENgetnodeid = _ENgetnodeid@8 ENgetnodeindex = _ENgetnodeindex@8 ENgetnodetype = _ENgetnodetype@8 - ENgetnodevalue = _ENgetnodevalue@12 + ENgetnodevalue = _ENgetnodevalue@12 + ENgetnodevalues = _ENgetnodevalues@8 ENgetnumdemands = _ENgetnumdemands@8 ENgetoption = _ENgetoption@8 ENgetpatternid = _ENgetpatternid@8 @@ -63,6 +65,7 @@ EXPORTS ENgetqualtype = _ENgetqualtype@8 ENgetresultindex = _ENgetresultindex@12 ENgetrule = _ENgetrule@20 + ENgetruleenabled = _ENgetruleenabled@8 ENgetruleID = _ENgetruleID@8 ENgetstatistic = _ENgetstatistic@8 ENgetthenaction = _ENgetthenaction@20 @@ -79,6 +82,7 @@ EXPORTS ENopen = _ENopen@12 ENopenH = _ENopenH@0 ENopenQ = _ENopenQ@0 + ENopenX = _ENopenX@12 ENreport = _ENreport@0 ENresetreport = _ENresetreport@0 ENrunH = _ENrunH@4 @@ -89,6 +93,7 @@ EXPORTS ENsetbasedemand = _ENsetbasedemand@12 ENsetcomment = _ENsetcomment@12 ENsetcontrol = _ENsetcontrol@24 + ENsetcontrolenabled = _ENsetcontrolenabled@8 ENsetcoord = _ENsetcoord@20 ENsetcurve = _ENsetcurve@16 ENsetcurveid = _ENsetcurveid@8 @@ -118,6 +123,7 @@ EXPORTS ENsetpremisevalue = _ENsetpremisevalue@12 ENsetqualtype = _ENsetqualtype@16 ENsetreport = _ENsetreport@4 + ENsetruleenabled = _ENsetruleenabled@8 ENsetrulepriority = _ENsetrulepriority@8 ENsetstatusreport = _ENsetstatusreport@4 ENsettankdata = _ENsettankdata@32 @@ -129,11 +135,6 @@ EXPORTS ENsolveH = _ENsolveH@0 ENsolveQ = _ENsolveQ@0 ENstepQ = _ENstepQ@4 + ENtimetonextevent = _ENtimetonextevent@12 ENusehydfile = _ENusehydfile@4 ENwriteline = _ENwriteline@4 - ENtimetonextevent = _ENtimetonextevent@12 - ENopenX = _ENopenX@12 - ENgetcontrolenabled = _ENgetcontrolenabled@8 - ENsetcontrolenabled = _ENsetcontrolenabled@8 - ENgetruleenabled = _ENgetruleenabled@8 - ENsetruleenabled = _ENsetruleenabled@8 diff --git a/include/epanet2.pas b/include/epanet2.pas index 4ce4a03..6f2e8da 100644 --- a/include/epanet2.pas +++ b/include/epanet2.pas @@ -3,7 +3,7 @@ unit epanet2; { Declarations of imported procedures from the EPANET PROGRAMMERs TOOLKIT } { (EPANET2.DLL) } -{Last updated on 09/28/2023} +{Last updated on 06/06/2024} interface @@ -46,6 +46,9 @@ const EN_DEMANDDEFICIT = 27; EN_NODE_INCONTROL = 28; EN_EMITTERFLOW = 29; + EN_LEAKAGEFLOW = 30; + EN_DEMANDFLOW = 31; + EN_FULLDEMAND = 32; EN_DIAMETER = 0; { Link parameters } EN_LENGTH = 1; @@ -71,8 +74,11 @@ const EN_PUMP_ECOST = 21; EN_PUMP_EPAT = 22; EN_LINK_INCONTROL = 23; - EN_GPV_CURVE = 24; - EN_PCV_CURVE = 25; + EN_GPV_CURVE = 24; + EN_PCV_CURVE = 25; + EN_LEAK_AREA = 26; + EN_LEAK_EXPAN = 27; + EN_LINK_LEAKAGE = 28; EN_DURATION = 0; { Time parameters } EN_HYDSTEP = 1; @@ -98,6 +104,7 @@ const EN_MASSBALANCE = 4; EN_DEFICIENTNODES = 5; EN_DEMANDREDUCTION = 6; + EN_LEAKAGELOSS = 7; EN_NODE = 0; { Component Types } EN_LINK = 1; @@ -275,180 +282,199 @@ const EN_TRUE = 1; { boolean true } +{$MACRO ON} + {$ifdef MSWINDOWS} - EpanetLib = 'epanet2.dll'; + EpanetLib = 'epanet2.dll'; + {$DEFINE cdecl := stdcall} +{$endif} + +{$ifdef UNIX} + {$ifdef DARWIN} + EpanetLib = 'libepanet2.dylib'; + {$linklib libepanet2} + {$else} + EpanetLib = 'libepanet2.so'; + {$endif} +{$endif} + +{$ifdef UNIX} + {$DEFINE TimeType:=Int64} {$else} - EpanetLib = 'libepanet2.so'; + {$DEFINE TimeType:=Integer} {$endif} {Project Functions} - function ENepanet(F1: PAnsiChar; F2: PAnsiChar; F3: PAnsiChar; F4: Pointer): Integer; stdcall; external EpanetLib; - function ENinit(F2: PAnsiChar; F3: PAnsiChar; UnitsType: Integer; HeadlossType: Integer): Integer; stdcall; external EpanetLib; - function ENopen(F1: PAnsiChar; F2: PAnsiChar; F3: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENopenX(F1: PAnsiChar; F2: PAnsiChar; F3: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENgetcount(Code: Integer; var Count: Integer): Integer; stdcall; external EpanetLib; - function ENgettitle(Line1: PAnsiChar; Line2: PAnsiChar; Line3: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsettitle(Line1: PAnsiChar; Line2: PAnsiChar; Line3: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENgetcomment(ObjType: Integer; Index: Integer; Comment: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsetcomment(ObjType: Integer; Index: Integer; Comment: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsaveinpfile(F: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENclose: Integer; stdcall; external EpanetLib; + function ENepanet(F1: PAnsiChar; F2: PAnsiChar; F3: PAnsiChar; F4: Pointer): Integer; cdecl; external EpanetLib; + function ENinit(F2: PAnsiChar; F3: PAnsiChar; UnitsType: Integer; HeadlossType: Integer): Integer; cdecl; external EpanetLib; + function ENopen(F1: PAnsiChar; F2: PAnsiChar; F3: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENopenX(F1: PAnsiChar; F2: PAnsiChar; F3: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENgetcount(Code: Integer; var Count: Integer): Integer; cdecl; external EpanetLib; + function ENgettitle(Line1: PAnsiChar; Line2: PAnsiChar; Line3: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsettitle(Line1: PAnsiChar; Line2: PAnsiChar; Line3: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENgetcomment(ObjType: Integer; Index: Integer; Comment: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsetcomment(ObjType: Integer; Index: Integer; Comment: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsaveinpfile(F: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENclose: Integer; cdecl; external EpanetLib; {Hydraulic Functions} - function ENsolveH: Integer; stdcall; external EpanetLib; - function ENsaveH: Integer; stdcall; external EpanetLib; - function ENopenH: Integer; stdcall; external EpanetLib; - function ENinitH(SaveFlag: Integer): Integer; stdcall; external EpanetLib; - function ENrunH(var T: Integer): Integer; stdcall; external EpanetLib; - function ENnextH(var Tstep: Integer): Integer; stdcall; external EpanetLib; - function ENcloseH: Integer; stdcall; external EpanetLib; - function ENsavehydfile(F: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENusehydfile(F: PAnsiChar): Integer; stdcall; external EpanetLib; + function ENsolveH: Integer; cdecl; external EpanetLib; + function ENsaveH: Integer; cdecl; external EpanetLib; + function ENopenH: Integer; cdecl; external EpanetLib; + function ENinitH(SaveFlag: Integer): Integer; cdecl; external EpanetLib; + function ENrunH(var T: TimeType): Integer; cdecl; external EpanetLib; + function ENnextH(var Tstep: TimeType): Integer; cdecl; external EpanetLib; + function ENcloseH: Integer; cdecl; external EpanetLib; + function ENsavehydfile(F: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENusehydfile(F: PAnsiChar): Integer; cdecl; external EpanetLib; {Quality Functions} - function ENsolveQ: Integer; stdcall; external EpanetLib; - function ENopenQ: Integer; stdcall; external EpanetLib; - function ENinitQ(SaveFlag: Integer): Integer; stdcall; external EpanetLib; - function ENrunQ(var T: Integer): Integer; stdcall; external EpanetLib; - function ENnextQ(var Tstep: Integer): Integer; stdcall; external EpanetLib; - function ENstepQ(var Tleft: Integer): Integer; stdcall; external EpanetLib; - function ENcloseQ: Integer; stdcall; external EpanetLib; + function ENsolveQ: Integer; cdecl; external EpanetLib; + function ENopenQ: Integer; cdecl; external EpanetLib; + function ENinitQ(SaveFlag: Integer): Integer; cdecl; external EpanetLib; + function ENrunQ(var T: TimeType): Integer; cdecl; external EpanetLib; + function ENnextQ(var Tstep: TimeType): Integer; cdecl; external EpanetLib; + function ENstepQ(var Tleft: TimeType): Integer; cdecl; external EpanetLib; + function ENcloseQ: Integer; cdecl; external EpanetLib; {Reporting Functions} - function ENwriteline(S: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENreport: Integer; stdcall; external EpanetLib; - function ENcopyreport(F: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENclearreport: Integer; stdcall; external EpanetLib; - function ENresetreport: Integer; stdcall; external EpanetLib; - function ENsetreport(S: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsetstatusreport(Code: Integer): Integer; stdcall; external EpanetLib; - function ENgetversion(var Version: Integer): Integer; stdcall; external EpanetLib; - function ENgeterror(Errcode: Integer; Errmsg: PAnsiChar; MaxLen: Integer): Integer; stdcall; external EpanetLib; - function ENgetstatistic(StatType: Integer; var Value: Single): Integer; stdcall; external EpanetLib; - function ENgetresultindex(Code: Integer; Index: Integer; var Value: Integer): Integer; stdcall; external EpanetLib; + function ENwriteline(S: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENreport: Integer; cdecl; external EpanetLib; + function ENcopyreport(F: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENclearreport: Integer; cdecl; external EpanetLib; + function ENresetreport: Integer; cdecl; external EpanetLib; + function ENsetreport(S: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsetstatusreport(Code: Integer): Integer; cdecl; external EpanetLib; + function ENgetversion(var Version: Integer): Integer; cdecl; external EpanetLib; + function ENgeterror(Errcode: Integer; Errmsg: PAnsiChar; MaxLen: Integer): Integer; cdecl; external EpanetLib; + function ENgetstatistic(StatType: Integer; var Value: Single): Integer; cdecl; external EpanetLib; + function ENgetresultindex(Code: Integer; Index: Integer; var Value: Integer): Integer; cdecl; external EpanetLib; + function ENtimetonextevent(var EventType: Integer; var Duration: TimeType; var ElementIndex: Integer): Integer; cdecl; external EpanetLib; {Analysis Options Functions} - function ENgetoption(Code: Integer; var Value: Single): Integer; stdcall; external EpanetLib; - function ENsetoption(Code: Integer; Value: Single): Integer; stdcall; external EpanetLib; - function ENgetflowunits(var Code: Integer): Integer; stdcall; external EpanetLib; - function ENsetflowunits(Code: Integer): Integer; stdcall; external EpanetLib; - function ENgettimeparam(Code: Integer; var Value: Integer): Integer; stdcall; external EpanetLib; - function ENsettimeparam(Code: Integer; Value: Integer): Integer; stdcall; external EpanetLib; - function ENgetqualinfo(var QualType: Integer; ChemName: PAnsiChar; ChemUnits: PAnsiChar; var TraceNode: Integer): Integer; stdcall; external EpanetLib; - function ENgetqualtype(var QualCode: Integer; var TraceNode: Integer): Integer; stdcall; external EpanetLib; - function ENsetqualtype(QualCode: Integer; ChemName: PAnsiChar; ChemUnits: PAnsiChar; TraceNodeID: PAnsiChar): Integer; stdcall; external EpanetLib; + function ENgetoption(Code: Integer; var Value: Single): Integer; cdecl; external EpanetLib; + function ENsetoption(Code: Integer; Value: Single): Integer; cdecl; external EpanetLib; + function ENgetflowunits(var Code: Integer): Integer; cdecl; external EpanetLib; + function ENsetflowunits(Code: Integer): Integer; cdecl; external EpanetLib; + function ENgettimeparam(Code: Integer; var Value: TimeType): Integer; cdecl; external EpanetLib; + function ENsettimeparam(Code: Integer; Value: TimeType): Integer; cdecl; external EpanetLib; + function ENgetqualinfo(var QualType: Integer; ChemName: PAnsiChar; ChemUnits: PAnsiChar; var TraceNode: Integer): Integer; cdecl; external EpanetLib; + function ENgetqualtype(var QualCode: Integer; var TraceNode: Integer): Integer; cdecl; external EpanetLib; + function ENsetqualtype(QualCode: Integer; ChemName: PAnsiChar; ChemUnits: PAnsiChar; TraceNodeID: PAnsiChar): Integer; cdecl; external EpanetLib; {Node Functions} - function ENaddnode(ID: PAnsiChar; NodeType: Integer; var Index: Integer): Integer; stdcall; external EpanetLib; - function ENdeletenode(Index: Integer; ActionCode: Integer): Integer; stdcall; external EpanetLib; - function ENgetnodeindex(ID: PAnsiChar; var Index: Integer): Integer; stdcall; external EpanetLib; - function ENgetnodeid(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsetnodeid(Index: Integer; NewID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENgetnodetype(Index: Integer; var Code: Integer): Integer; stdcall; external EpanetLib; - function ENgetnodevalue(Index: Integer; Code: Integer; var Value: Single): Integer; stdcall; external EpanetLib; - function ENsetnodevalue(Index: Integer; Code: Integer; Value: Single): Integer; stdcall; external EpanetLib; - function ENsetjuncdata(Index: Integer; Elev: Single; Dmnd: Single; DmndPat: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsettankdata(Index: Integer; Elev, InitLvl, MinLvl, MaxLvl, Diam, MinVol: Single; VolCurve: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENgetcoord(Index: Integer; var X: Double; var Y: Double): Integer; stdcall; external EpanetLib; - function ENsetcoord(Index: Integer; X: Double; Y: Double): Integer; stdcall; external EpanetLib; + function ENaddnode(ID: PAnsiChar; NodeType: Integer; var Index: Integer): Integer; cdecl; external EpanetLib; + function ENdeletenode(Index: Integer; ActionCode: Integer): Integer; cdecl; external EpanetLib; + function ENgetnodeindex(ID: PAnsiChar; var Index: Integer): Integer; cdecl; external EpanetLib; + function ENgetnodeid(Index: Integer; ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsetnodeid(Index: Integer; NewID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENgetnodetype(Index: Integer; var Code: Integer): Integer; cdecl; external EpanetLib; + function ENgetnodevalue(Index: Integer; Code: Integer; var Value: Single): Integer; cdecl; external EpanetLib; + function ENsetnodevalue(Index: Integer; Code: Integer; Value: Single): Integer; cdecl; external EpanetLib; + function ENsetjuncdata(Index: Integer; Elev: Single; Dmnd: Single; DmndPat: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsettankdata(Index: Integer; Elev, InitLvl, MinLvl, MaxLvl, Diam, MinVol: Single; VolCurve: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENgetcoord(Index: Integer; var X: Double; var Y: Double): Integer; cdecl; external EpanetLib; + function ENsetcoord(Index: Integer; X: Double; Y: Double): Integer; cdecl; external EpanetLib; + function ENgetnodevalues(Code: Integer; var X: array of Single): Integer; cdecl; external EpanetLib; {Demand Functions} - function ENgetdemandmodel(var Model: Integer; var Pmin: Single; var Preq: Single; var Pexp: Single): Integer; stdcall; external EpanetLib; - function ENsetdemandmodel(Model: Integer; Pmin: Single; Preq: Single; Pexp: Single): Integer; stdcall; external EpanetLib; - function ENgetnumdemands(NodeIndex: Integer; var NumDemands: Integer): Integer; stdcall; external EpanetLib; - function ENadddemand(NodeIndex: Integer; BaseDemand: Single; PatName: PAnsiChar; DemandName: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENdeletedemand(NodeIndex: Integer; DemandIndex: Integer): Integer; stdcall; external EpanetLib; - function ENgetdemandindex(NodeIndex: Integer; DemandName: PAnsiChar; var DemandIndex: Integer): Integer; stdcall; external EpanetLib; - function ENgetbasedemand(NodeIndex: Integer; DemandIndex: Integer; var BaseDemand: Single): Integer; stdcall; external EpanetLib; - function ENsetbasedemand(NodeIndex: Integer; DemandIndex: Integer; BaseDemand: Single): Integer; stdcall; external EpanetLib; - function ENgetdemandpattern(NodeIndex: Integer; DemandIndex: Integer; var PatIndex: Integer): Integer; stdcall; external EpanetLib; - function ENsetdemandpattern(NodeIndex: Integer; DemandIndex: Integer; PatIndex: Integer): Integer; stdcall; external EpanetLib; - function ENgetdemandname(NodeIndex: Integer; DemandIndex: Integer; DemandName: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsetdemandname(NodeIndex: Integer; DemandIndex: Integer; DemandName: PAnsiChar): Integer; stdcall; external EpanetLib; + function ENgetdemandmodel(var Model: Integer; var Pmin: Single; var Preq: Single; var Pexp: Single): Integer; cdecl; external EpanetLib; + function ENsetdemandmodel(Model: Integer; Pmin: Single; Preq: Single; Pexp: Single): Integer; cdecl; external EpanetLib; + function ENgetnumdemands(NodeIndex: Integer; var NumDemands: Integer): Integer; cdecl; external EpanetLib; + function ENadddemand(NodeIndex: Integer; BaseDemand: Single; PatName: PAnsiChar; DemandName: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENdeletedemand(NodeIndex: Integer; DemandIndex: Integer): Integer; cdecl; external EpanetLib; + function ENgetdemandindex(NodeIndex: Integer; DemandName: PAnsiChar; var DemandIndex: Integer): Integer; cdecl; external EpanetLib; + function ENgetbasedemand(NodeIndex: Integer; DemandIndex: Integer; var BaseDemand: Single): Integer; cdecl; external EpanetLib; + function ENsetbasedemand(NodeIndex: Integer; DemandIndex: Integer; BaseDemand: Single): Integer; cdecl; external EpanetLib; + function ENgetdemandpattern(NodeIndex: Integer; DemandIndex: Integer; var PatIndex: Integer): Integer; cdecl; external EpanetLib; + function ENsetdemandpattern(NodeIndex: Integer; DemandIndex: Integer; PatIndex: Integer): Integer; cdecl; external EpanetLib; + function ENgetdemandname(NodeIndex: Integer; DemandIndex: Integer; DemandName: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsetdemandname(NodeIndex: Integer; DemandIndex: Integer; DemandName: PAnsiChar): Integer; cdecl; external EpanetLib; {Link Functions} - function ENaddlink(ID: PAnsiChar; LinkType: Integer; FromNode: PAnsiChar; ToNode: PAnsiChar; var Index: Integer): Integer; stdcall; external EpanetLib; - function ENdeletelink(Index: Integer; ActionCode: Integer): Integer; stdcall; external EpanetLib; - function ENgetlinkindex(ID: PAnsiChar; var Index: Integer): Integer; stdcall; external EpanetLib; - function ENgetlinkid(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsetlinkid(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENgetlinktype(Index: Integer; var Code: Integer): Integer; stdcall; external EpanetLib; - function ENsetlinktype(var Index: Integer; LinkType: Integer; ActionCode: Integer): Integer; stdcall; external EpanetLib; - function ENgetlinknodes(Index: Integer; var Node1: Integer; var Node2: Integer): Integer; stdcall; external EpanetLib; - function ENsetlinknodes(Index: Integer; Node1: Integer; Node2: Integer): Integer; stdcall; external EpanetLib; - function ENgetlinkvalue(Index: Integer; Code: Integer; var Value: Single): Integer; stdcall; external EpanetLib; - function ENsetlinkvalue(Index: Integer; Code: Integer; Value: Single): Integer; stdcall; external EpanetLib; - function ENsetpipedata(Index: Integer; Length: Single; Diam: Single; Rough: Single; Mloss:Single): Integer; stdcall; external EpanetLib; + function ENaddlink(ID: PAnsiChar; LinkType: Integer; FromNode: PAnsiChar; ToNode: PAnsiChar; var Index: Integer): Integer; cdecl; external EpanetLib; + function ENdeletelink(Index: Integer; ActionCode: Integer): Integer; cdecl; external EpanetLib; + function ENgetlinkindex(ID: PAnsiChar; var Index: Integer): Integer; cdecl; external EpanetLib; + function ENgetlinkid(Index: Integer; ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsetlinkid(Index: Integer; ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENgetlinktype(Index: Integer; var Code: Integer): Integer; cdecl; external EpanetLib; + function ENsetlinktype(var Index: Integer; LinkType: Integer; ActionCode: Integer): Integer; cdecl; external EpanetLib; + function ENgetlinknodes(Index: Integer; var Node1: Integer; var Node2: Integer): Integer; cdecl; external EpanetLib; + function ENsetlinknodes(Index: Integer; Node1: Integer; Node2: Integer): Integer; cdecl; external EpanetLib; + function ENgetlinkvalue(Index: Integer; Code: Integer; var Value: Single): Integer; cdecl; external EpanetLib; + function ENsetlinkvalue(Index: Integer; Code: Integer; Value: Single): Integer; cdecl; external EpanetLib; + function ENsetpipedata(Index: Integer; Length: Single; Diam: Single; Rough: Single; Mloss:Single): Integer; cdecl; external EpanetLib; + function ENgetlinkvalues(Code: Integer; var X: array of Single): Integer; cdecl; external EpanetLib; - function ENgetvertexcount(Index: Integer; var Count: Integer): Integer; stdcall; external EpanetLib; - function ENgetvertex(Index: Integer; Vertex: Integer; var X: Double; var Y: Double): Integer; stdcall; external EpanetLib; - function ENsetvertex(Index: Integer; Vertex: Integer; X: Double; Y: Double): Integer; stdcall; external EpanetLib; - function ENsetvertices(Index: Integer; var X: Double; var Y: Double; Count: Integer): Integer; stdcall; external EpanetLib; + function ENgetvertexcount(Index: Integer; var Count: Integer): Integer; cdecl; external EpanetLib; + function ENgetvertex(Index: Integer; Vertex: Integer; var X: Double; var Y: Double): Integer; cdecl; external EpanetLib; + function ENsetvertex(Index: Integer; Vertex: Integer; X: Double; Y: Double): Integer; cdecl; external EpanetLib; + function ENsetvertices(Index: Integer; var X: Double; var Y: Double; Count: Integer): Integer; cdecl; external EpanetLib; {Pump Functions} - function ENgetpumptype(LinkIndex: Integer; var PumpType: Integer): Integer; stdcall; external EpanetLib; - function ENgetheadcurveindex(LinkIndex: Integer; var CurveIndex: Integer): Integer; stdcall; external EpanetLib; - function ENsetheadcurveindex(LinkIndex: Integer; CurveIndex: Integer): Integer; stdcall; external EpanetLib; + function ENgetpumptype(LinkIndex: Integer; var PumpType: Integer): Integer; cdecl; external EpanetLib; + function ENgetheadcurveindex(LinkIndex: Integer; var CurveIndex: Integer): Integer; cdecl; external EpanetLib; + function ENsetheadcurveindex(LinkIndex: Integer; CurveIndex: Integer): Integer; cdecl; external EpanetLib; {Pattern Functions} - function ENaddpattern(ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENdeletepattern(Index: Integer): Integer; stdcall; external EpanetLib; - function ENgetpatternindex(ID: PAnsiChar; var Index: Integer): Integer; stdcall; external EpanetLib; - function ENgetpatternid(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsetpatternid(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENgetpatternlen(Index: Integer; var Len: Integer): Integer; stdcall; external EpanetLib; - function ENgetpatternvalue(Index: Integer; Period: Integer; var Value: Single): Integer; stdcall; external EpanetLib; - function ENsetpatternvalue(Index: Integer; Period: Integer; Value: Single): Integer; stdcall; external EpanetLib; - function ENgetaveragepatternvalue(Index: Integer; var Value: Single): Integer; stdcall; external EpanetLib; - function ENsetpattern(Index: Integer; var F: Single; N: Integer): Integer; stdcall; external EpanetLib; + function ENaddpattern(ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENdeletepattern(Index: Integer): Integer; cdecl; external EpanetLib; + function ENgetpatternindex(ID: PAnsiChar; var Index: Integer): Integer; cdecl; external EpanetLib; + function ENgetpatternid(Index: Integer; ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsetpatternid(Index: Integer; ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENgetpatternlen(Index: Integer; var Len: Integer): Integer; cdecl; external EpanetLib; + function ENgetpatternvalue(Index: Integer; Period: Integer; var Value: Single): Integer; cdecl; external EpanetLib; + function ENsetpatternvalue(Index: Integer; Period: Integer; Value: Single): Integer; cdecl; external EpanetLib; + function ENgetaveragepatternvalue(Index: Integer; var Value: Single): Integer; cdecl; external EpanetLib; + function ENsetpattern(Index: Integer; var F: Single; N: Integer): Integer; cdecl; external EpanetLib; {Curve Functions} - function ENaddcurve(ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENdeletecurve(Index: Integer): Integer; stdcall; external EpanetLib; - function ENgetcurveindex(ID: PAnsiChar; var Index: Integer): Integer; stdcall; external EpanetLib; - function ENgetcurveid(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsetcurveid(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENgetcurvelen(Index: Integer; var Len: Integer): Integer; stdcall; external EpanetLib; - function ENgetcurvetype(Index: Integer; var CurveType: Integer): Integer; stdcall; external EpanetLib; - function ENsetcurvetype(Index: Integer; CurveType: Integer): Integer; stdcall; external EpanetLib; - function ENgetcurvevalue(CurveIndex: Integer; PointIndex: Integer; var X: Single; var Y: Single): Integer; stdcall; external EpanetLib; - function ENsetcurvevalue(CurveIndex: Integer; PointIndex: Integer; X: Single; Y: Single): Integer; stdcall; external EpanetLib; - function ENgetcurve(Index: Integer; ID: PAnsiChar; var N: Integer; var X: Single; var Y: Single): Integer; stdcall; external EpanetLib; - function ENsetcurve(Index: Integer; var X: Single; var Y: Single; N: Integer): Integer; stdcall; external EpanetLib; + function ENaddcurve(ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENdeletecurve(Index: Integer): Integer; cdecl; external EpanetLib; + function ENgetcurveindex(ID: PAnsiChar; var Index: Integer): Integer; cdecl; external EpanetLib; + function ENgetcurveid(Index: Integer; ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsetcurveid(Index: Integer; ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENgetcurvelen(Index: Integer; var Len: Integer): Integer; cdecl; external EpanetLib; + function ENgetcurvetype(Index: Integer; var CurveType: Integer): Integer; cdecl; external EpanetLib; + function ENsetcurvetype(Index: Integer; CurveType: Integer): Integer; cdecl; external EpanetLib; + function ENgetcurvevalue(CurveIndex: Integer; PointIndex: Integer; var X: Single; var Y: Single): Integer; cdecl; external EpanetLib; + function ENsetcurvevalue(CurveIndex: Integer; PointIndex: Integer; X: Single; Y: Single): Integer; cdecl; external EpanetLib; + function ENgetcurve(Index: Integer; ID: PAnsiChar; var N: Integer; var X: Single; var Y: Single): Integer; cdecl; external EpanetLib; + function ENsetcurve(Index: Integer; var X: Single; var Y: Single; N: Integer): Integer; cdecl; external EpanetLib; {Control Functions} - function ENaddcontrol(Ctype: Integer; Link: Integer; Setting: Single; Node: Integer; Level: Single; var Index: Integer): Integer; stdcall; external EpanetLib; - function ENdeletecontrol(Index: Integer): Integer; stdcall; external EpanetLib; - function ENgetcontrol(Index: Integer; var Ctype: Integer; var Link: Integer; var Setting: Single; var Node: Integer; var Level: Single): Integer; stdcall; external EpanetLib; - function ENsetcontrol(Index: Integer; Ctype: Integer; Link: Integer; Setting: Single; Node: Integer; Level: Single): Integer; stdcall; external EpanetLib; - function ENgetcontrolenabled(Index: Integer; out_enabled: Integer): Integer; stdcall; external EpanetLib; - function ENsetcontrolenabled(Index: Integer; var enabled: Integer): Integer; stdcall; external EpanetLib; + function ENaddcontrol(Ctype: Integer; Link: Integer; Setting: Single; Node: Integer; Level: Single; var Index: Integer): Integer; cdecl; external EpanetLib; + function ENdeletecontrol(Index: Integer): Integer; cdecl; external EpanetLib; + function ENgetcontrol(Index: Integer; var Ctype: Integer; var Link: Integer; var Setting: Single; var Node: Integer; var Level: Single): Integer; cdecl; external EpanetLib; + function ENsetcontrol(Index: Integer; Ctype: Integer; Link: Integer; Setting: Single; Node: Integer; Level: Single): Integer; cdecl; external EpanetLib; + function ENgetcontrolenabled(Index: Integer; out_enabled: Integer): Integer; cdecl; external EpanetLib; + function ENsetcontrolenabled(Index: Integer; var enabled: Integer): Integer; cdecl; external EpanetLib; {Rule-Based Control Functions} - function ENaddrule(Rule: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENdeleterule(Index: Integer): Integer; stdcall; external EpanetLib; + function ENaddrule(Rule: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENdeleterule(Index: Integer): Integer; cdecl; external EpanetLib; function ENgetrule(Index: Integer; var Npremises: Integer; var NthenActions: Integer; - var NelseActions: Integer; var Priority: Single): Integer; stdcall; external EpanetLib; - function ENgetruleID(Index: Integer; ID: PAnsiChar): Integer; stdcall; external EpanetLib; - function ENsetrulepriority(Index: Integer; Priority: Single): Integer; stdcall; external EpanetLib; + var NelseActions: Integer; var Priority: Single): Integer; cdecl; external EpanetLib; + function ENgetruleID(Index: Integer; ID: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsetrulepriority(Index: Integer; Priority: Single): Integer; cdecl; external EpanetLib; function ENgetpremise(RuleIndex: Integer; PremiseIndex: Integer; var LogOp: Integer; var ObjType: Integer; var ObjIndex: Integer; var Param: Integer; var RelOp: Integer; - var Status: Integer; var Value: Single): Integer; stdcall; external EpanetLib; + var Status: Integer; var Value: Single): Integer; cdecl; external EpanetLib; function ENsetpremise(RuleIndex: Integer; PremiseIndex: Integer; LogOp: Integer; ObjType: Integer; - ObjIndex: Integer; Param: Integer; RelOp: Integer; Status: Integer; Value: Single): Integer; stdcall; external EpanetLib; - function ENsetpremiseindex(RuleIndex: Integer; PremiseIndex: Integer; ObjIndex: Integer): Integer; stdcall; external EpanetLib; - function ENsetpremisestatus(RuleIndex: Integer; PremiseIndex: Integer; Status: Integer): Integer; stdcall; external EpanetLib; - function ENsetpremisevalue(RuleIndex: Integer; PremiseIndex: Integer; Value: Single): Integer; stdcall; external EpanetLib; + ObjIndex: Integer; Param: Integer; RelOp: Integer; Status: Integer; Value: Single): Integer; cdecl; external EpanetLib; + function ENsetpremiseindex(RuleIndex: Integer; PremiseIndex: Integer; ObjIndex: Integer): Integer; cdecl; external EpanetLib; + function ENsetpremisestatus(RuleIndex: Integer; PremiseIndex: Integer; Status: Integer): Integer; cdecl; external EpanetLib; + function ENsetpremisevalue(RuleIndex: Integer; PremiseIndex: Integer; Value: Single): Integer; cdecl; external EpanetLib; function ENgetthenaction(RuleIndex: Integer; ActionIndex: Integer; var LinkIndex: Integer; - var Status: Integer; var Setting: Single): Integer; stdcall; external EpanetLib; + var Status: Integer; var Setting: Single): Integer; cdecl; external EpanetLib; function ENsetthenaction(RuleIndex: Integer; ActionIndex: Integer; LinkIndex: Integer; - Status: Integer; Setting: Single): Integer; stdcall; external EpanetLib; + Status: Integer; Setting: Single): Integer; cdecl; external EpanetLib; function ENgetelseaction(RuleIndex: Integer; ActionIndex: Integer; var LinkIndex: Integer; - var Status: Integer; var Setting: Single): Integer; stdcall; external EpanetLib; + var Status: Integer; var Setting: Single): Integer; cdecl; external EpanetLib; function ENsetelseaction(RuleIndex: Integer; ActionIndex: Integer; LinkIndex: Integer; - Status: Integer; Setting: Single): Integer; stdcall; external EpanetLib; - function ENgetruleenabled(Index: Integer; out_enabled: Integer): Integer; stdcall; external EpanetLib; - function ENsetruleenabled(Index: Integer; var enabled: Integer): Integer; stdcall; external EpanetLib; + Status: Integer; Setting: Single): Integer; cdecl; external EpanetLib; + function ENgetruleenabled(Index: Integer; out_enabled: Integer): Integer; cdecl; external EpanetLib; + function ENsetruleenabled(Index: Integer; var enabled: Integer): Integer; cdecl; external EpanetLib; implementation diff --git a/include/epanet2.vb b/include/epanet2.vb index 73e4651..a7b3179 100644 --- a/include/epanet2.vb +++ b/include/epanet2.vb @@ -4,7 +4,7 @@ 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) for use with VB.Net. -'Last updated on 09/28/2023 +'Last updated on 06/23/2024 Imports System.Runtime.InteropServices Imports System.Text @@ -42,6 +42,9 @@ Public Const EN_CANOVERFLOW = 26 Public Const EN_DEMANDDEFICIT = 27 Public Const EN_NODE_INCONTROL = 28 Public Const EN_EMITTERFLOW = 29 +Public Const EN_LEAKAGEFLOW = 30 +Public Const EN_DEMANDFLOW = 31 +Public Const EN_FULLDEMAND = 32 Public Const EN_DIAMETER = 0 ' Link parameters Public Const EN_LENGTH = 1 @@ -69,6 +72,9 @@ Public Const EN_PUMP_EPAT = 22 Public Const EN_LINK_INCONTROL = 23 Public Const EN_GPV_CURVE = 24 Public Const EN_PCV_CURVE = 25 +Public Const EN_LEAK_AREA = 26 +Public Const EN_LEAK_EXPAN = 27 +Public Const EN_LINK_LEAKAGE = 28 Public Const EN_DURATION = 0 ' Time parameters Public Const EN_HYDSTEP = 1 @@ -93,6 +99,7 @@ Public Const EN_MAXFLOWCHANGE = 3 Public Const EN_MASSBALANCE = 4 Public Const EN_DEFICIENTNODES = 5 Public Const EN_DEMANDREDUCTION = 6 +Public Const EN_LEAKAGELOSS = 7 Public Const EN_NODE = 0 ' Component types Public Const EN_LINK = 1 @@ -309,6 +316,7 @@ Public Const EN_TRUE = 1 ' boolean true Declare Function ENgeterror Lib "epanet2.dll" (ByVal errcode As Int32, ByVal errmsg As String, ByVal maxLen As Int32) As Int32 Declare Function ENgetstatistic Lib "epanet2.dll" (ByVal type_ As Int32, ByRef value As Single) As Int32 Declare Function ENgetresultindex Lib "epanet2.dll" (ByVal type_ As Int32, ByVal index As Int32, ByRef value As Int32) As Int32 + Declare Function ENtimetonextevent Lib "epanet2.dll" (eventType As Int32, duration As Int32, elementIndex As Int32) As Int32 'Analysis Options Functions Declare Function ENgetoption Lib "epanet2.dll" (ByVal option As Int32, value As Single) As Int32 @@ -334,7 +342,8 @@ Public Const EN_TRUE = 1 ' boolean true Declare Function ENsettankdata Lib "epanet2.dll" (ByVal index As Int32, ByVal elev As Single, ByVal initlvl As Single, ByVal minlvl As Single, ByVal maxlvl As Single, ByVal diam As Single, ByVal minvol As Single, ByVal volcurve As String) As Int32 Declare Function ENgetcoord Lib "epanet2.dll" (ByVal index As Int32, x As Double, y As Double) As Int32 Declare Function ENsetcoord Lib "epanet2.dll" (ByVal index As Int32, ByVal x As Double, ByVal y As Double) As Int32 - + Declare Function ENgetnodevalues Lib "epanet2.dll" (ByVal property as Int32, values as Any) As Int32 + 'Nodal Demand Functions Declare Function ENgetdemandmodel Lib "epanet2.dll" (type_ As Int32, pmin As Single, preq As Single, pexp As Single) As Int32 Declare Function ENsetdemandmodel Lib "epanet2.dll" (ByVal type_ As Int32, ByVal pmin As Single, ByVal preq As Single, ByVal pexp As Single) As Int32 @@ -366,6 +375,7 @@ Public Const EN_TRUE = 1 ' boolean true Declare Function ENgetvertex Lib "epanet2.dll" (ByVal index As Int32, ByVal vertex As Int32, x As Double, y As Double) As Int32 Declare Function ENsetvertex Lib "epanet2.dll" (ByVal index As Int32, ByVal vertex As Int32, ByVal x As Double, ByVal y As Double) As Int32 Declare Function ENsetvertices Lib "epanet2.dll" (ByVal index As Int32, xCoords As Any, yCoords As Any, ByVal count As Int32) As Int32 + Declare Function ENgetlinkvalues Lib "epanet2.dll" (ByVal property as Int32, values as Any) As Int32 'Pump Functions Declare Function ENgetheadcurveindex Lib "epanet2.dll" (ByVal linkIndex As Int32, curveIndex As Int32) As Int32 diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index 557f48f..4fc7755 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -65,7 +65,10 @@ typedef enum { EN_CANOVERFLOW = 26, //!< Tank can overflow (= 1) or not (= 0) EN_DEMANDDEFICIT = 27,//!< Amount that full demand is reduced under PDA (read only) EN_NODE_INCONTROL = 28, //!< Is present in any simple or rule-based control (= 1) or not (= 0) - EN_EMITTERFLOW = 29 //!< Current emitter flow (read only) + EN_EMITTERFLOW = 29, //!< Current emitter flow (read only) + EN_LEAKAGEFLOW = 30, //!< Current leakage flow (read only) + EN_DEMANDFLOW = 31, //!< Current consumer demand delivered (read only) + EN_FULLDEMAND = 32 //!< Current consumer demand requested (read only) } EN_NodeProperty; /// Link properties @@ -99,7 +102,10 @@ typedef enum { EN_PUMP_EPAT = 22, //!< Pump energy price time pattern index EN_LINK_INCONTROL = 23, //!< Is present in any simple or rule-based control (= 1) or not (= 0) EN_GPV_CURVE = 24, //!< GPV head loss v. flow curve index - EN_PCV_CURVE = 25 //!< PCV loss coeff. curve index + EN_PCV_CURVE = 25, //!< PCV loss coeff. curve index + EN_LEAK_AREA = 26, //!< Pipe leak area (sq mm per 100 length units) + EN_LEAK_EXPAN = 27, //!< Leak expansion rate (sq mm per unit of pressure head) + EN_LINK_LEAKAGE = 28 //!< Current leakage rate (read only) } EN_LinkProperty; /// Time parameters @@ -152,7 +158,8 @@ typedef enum { EN_MAXFLOWCHANGE = 3, //!< Largest flow change in links EN_MASSBALANCE = 4, //!< Cumulative water quality mass balance ratio EN_DEFICIENTNODES = 5, //!< Number of pressure deficient nodes - EN_DEMANDREDUCTION = 6 //!< % demand reduction at pressure deficient nodes + EN_DEMANDREDUCTION = 6, //!< % demand reduction at pressure deficient nodes + EN_LEAKAGELOSS = 7 //!< % flow lost to system leakage } EN_AnalysisStatistic; /// Types of network objects diff --git a/src/enumstxt.h b/src/enumstxt.h index dbb4c74..65962a6 100755 --- a/src/enumstxt.h +++ b/src/enumstxt.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/05/2023 + Last Updated: 06/24/2024 ****************************************************************************** */ @@ -127,7 +127,7 @@ char *SectTxt[] = {s_TITLE, s_JUNCTIONS, s_RESERVOIRS, s_REACTIONS, s_MIXING, s_REPORT, s_TIMES, s_OPTIONS, s_COORDS, s_VERTICES, s_LABELS, s_BACKDROP, - s_TAGS, s_END, + s_TAGS, s_LEAKAGE, s_END, NULL}; char *Fldname[] = {t_ELEV, t_DEMAND, t_HEAD, diff --git a/src/epanet.c b/src/epanet.c index 991024c..7e68c9d 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 09/28/2023 + Last Updated: 06/26/2024 ****************************************************************************** */ @@ -510,6 +510,10 @@ int DLLEXPORT EN_initH(EN_Project p, int initFlag) return errcode; } } + + // Open pipe leakage modeling system + errcode = openleakage(p); + if (errcode) return errcode; // Initialize hydraulics solver inithyd(p, fflag); @@ -564,7 +568,11 @@ int DLLEXPORT EN_closeH(EN_Project p) */ { if (!p->Openflag) return 102; - if (p->hydraul.OpenHflag) closehyd(p); + if (p->hydraul.OpenHflag) + { + closeleakage(p); + closehyd(p); + } p->hydraul.OpenHflag = FALSE; return 0; } @@ -1044,6 +1052,9 @@ int DLLEXPORT EN_getstatistic(EN_Project p, int type, double *value) case EN_DEMANDREDUCTION: *value = p->hydraul.DemandReduction; break; + case EN_LEAKAGELOSS: + *value = p->hydraul.LeakageLoss; + break; case EN_MASSBALANCE: *value = p->quality.MassBalance.ratio; break; @@ -1864,8 +1875,10 @@ int DLLEXPORT EN_addnode(EN_Project p, const char *id, int nodeType, int *index) hyd->NodeDemand = (double *)realloc(hyd->NodeDemand, size); qual->NodeQual = (double *)realloc(qual->NodeQual, size); hyd->NodeHead = (double *)realloc(hyd->NodeHead, size); - hyd->DemandFlow = (double *)realloc(hyd->DemandFlow, size); + hyd->FullDemand = (double *)realloc(hyd->FullDemand, size); hyd->EmitterFlow = (double *)realloc(hyd->EmitterFlow, size); + hyd->LeakageFlow = (double *)realloc(hyd->LeakageFlow, size); + hyd->DemandFlow = (double *)realloc(hyd->DemandFlow, size); // Actions taken when a new Junction is added if (nodeType == EN_JUNCTION) @@ -2256,7 +2269,7 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val Ucf[VOLUME]; break; - case EN_DEMAND: + case EN_DEMAND: // Consumer Demand + Emitter Flow + Leakage Flow v = hyd->NodeDemand[index] * Ucf[FLOW]; break; @@ -2336,11 +2349,10 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val case EN_DEMANDDEFICIT: if (index > nJuncs) return 0; - // After an analysis, DemandFlow contains node's required demand - // while NodeDemand contains delivered demand + emitter flow - if (hyd->DemandFlow[index] < 0.0) return 0; - v = (hyd->DemandFlow[index] - - (hyd->NodeDemand[index] - hyd->EmitterFlow[index])) * Ucf[FLOW]; + // FullDemand contains node's required consumer demand + // while DemandFlow contains delivered consumer demand + if (hyd->FullDemand[index] <= 0.0) return 0; + v = (hyd->FullDemand[index] - hyd->DemandFlow[index]) * Ucf[FLOW]; break; case EN_NODE_INCONTROL: @@ -2350,6 +2362,18 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val case EN_EMITTERFLOW: v = hyd->EmitterFlow[index] * Ucf[FLOW]; break; + + case EN_LEAKAGEFLOW: + v = hyd->LeakageFlow[index] * Ucf[FLOW]; + break; + + case EN_DEMANDFLOW: // Consumer demand delivered + v = hyd->DemandFlow[index] * Ucf[FLOW]; + break; + + case EN_FULLDEMAND: // Consumer demand requested + v = hyd->FullDemand[index] * Ucf[FLOW]; + break; default: return 251; @@ -3352,6 +3376,8 @@ int DLLEXPORT EN_addlink(EN_Project p, const char *id, int linkType, } link->Kb = 0; link->Kw = 0; + link->LeakArea = 0; + link->LeakExpan = 0; link->R = 0; link->Rc = 0; link->Rpt = 0; @@ -3923,6 +3949,18 @@ int DLLEXPORT EN_getlinkvalue(EN_Project p, int index, int property, double *val v = (double)incontrols(p, LINK, index); break; + case EN_LEAK_AREA: + v = Link[index].LeakArea * Ucf[LENGTH]; + break; + + case EN_LEAK_EXPAN: + v = Link[index].LeakExpan * Ucf[LENGTH]; + break; + + case EN_LINK_LEAKAGE: + v = findlinkleakage(p, index) * Ucf[FLOW]; + break; + default: return 251; } @@ -4163,6 +4201,16 @@ int DLLEXPORT EN_setlinkvalue(EN_Project p, int index, int property, double valu } break; + case EN_LEAK_AREA: // leak area in sq mm per 100 pipe length units + if (value < 0.0) return 211; + Link[index].LeakArea = value / Ucf[LENGTH]; + break; + + case EN_LEAK_EXPAN: // leak area expansion slope (sq mm per unit of head) + if (value < 0.0) return 211; + Link[index].LeakExpan = value / Ucf[LENGTH]; + break; + default: return 251; } diff --git a/src/flowbalance.c b/src/flowbalance.c new file mode 100644 index 0000000..2c0efa6 --- /dev/null +++ b/src/flowbalance.c @@ -0,0 +1,191 @@ +/* + ****************************************************************************** + Project: OWA EPANET + Version: 2.3 + Module: flowbalance.c + Description: computes components of network's flow balance + Authors: see AUTHORS + Copyright: see AUTHORS + License: see LICENSE + Last Updated: 06/26/2024 + ****************************************************************************** +*/ + +#include "types.h" + +// Exported functions (declared in funcs.h) +//void startflowbalance(Project *); +//void updateflowbalance(Project *, long); +//void endflowbalance(Project *); + +void startflowbalance(Project *pr) +/* +**------------------------------------------------------------------- +** Input: none +** Output: none +** Purpose: initializes components of the network's flow balance. +**------------------------------------------------------------------- +*/ +{ + Hydraul *hyd = &pr->hydraul; + hyd->FlowBalance.totalInflow = 0.0; + hyd->FlowBalance.totalOutflow = 0.0; + hyd->FlowBalance.consumerDemand = 0.0; + hyd->FlowBalance.emitterDemand = 0.0; + hyd->FlowBalance.leakageDemand = 0.0; + hyd->FlowBalance.deficitDemand = 0.0; + hyd->FlowBalance.storageDemand = 0.0; + hyd->FlowBalance.ratio = 0.0; +} + +void updateflowbalance(Project *pr, long hstep) +/* +**------------------------------------------------------------------- +** Input: hstep = time step (sec) +** Output: none +** Purpose: updates components of the system flow balance. +**------------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + Times *time = &pr->times; + + int i, j; + double v, dt, deficit, fullDemand; + SflowBalance flowBalance; + + // Determine current time interval in seconds + if (time->Dur == 0) dt = 1.0; + else if (time->Htime < time->Dur) + { + dt = (double) hstep; + } + else return; + + // Initialize local flow balance + flowBalance.totalInflow = 0.0; + flowBalance.totalOutflow = 0.0; + flowBalance.consumerDemand = 0.0; + flowBalance.emitterDemand = 0.0; + flowBalance.leakageDemand = 0.0; + flowBalance.deficitDemand = 0.0; + flowBalance.storageDemand = 0.0; + fullDemand = 0.0; + + // Initialize demand deficiency & leakage loss + hyd->DeficientNodes = 0; + hyd->DemandReduction = 0.0; + hyd->LeakageLoss = 0.0; + + // Examine each junction node + for (i = 1; i <= net->Njuncs; i++) + { + // Accumulate consumer demand flow + v = hyd->DemandFlow[i]; + if (v < 0.0) + flowBalance.totalInflow += (-v); + else + { + fullDemand += hyd->FullDemand[i]; + flowBalance.consumerDemand += v; + flowBalance.totalOutflow += v; + } + + // Accumulate emitter and leakage flow + v = hyd->EmitterFlow[i]; + flowBalance.emitterDemand += v; + flowBalance.totalOutflow += v; + v = hyd->LeakageFlow[i]; + flowBalance.leakageDemand += v; + flowBalance.totalOutflow += v; + + // Accumulate demand deficit flow + if (hyd->DemandModel == PDA && hyd->FullDemand[i] > 0.0) + { + deficit = hyd->FullDemand[i] - hyd->DemandFlow[i]; + if (deficit > TINY) + { + hyd->DeficientNodes++; + flowBalance.deficitDemand += deficit; + } + } + } + + // Examine each tank/reservoir node + for (j = 1; j <= net->Ntanks; j++) + { + i = net->Tank[j].Node; + v = hyd->NodeDemand[i]; + + // For a snapshot analysis or a reservoir node + if (time->Dur == 0 || net->Tank[j].A == 0.0) + { + if (v >= 0.0) + flowBalance.totalOutflow += v; + else + flowBalance.totalInflow += (-v); + } + + // For tank under extended period analysis + else + flowBalance.storageDemand += v; + } + + // Find % demand reduction & % leakage for current period + if (fullDemand > 0.0) + hyd->DemandReduction = flowBalance.deficitDemand / fullDemand * 100.0; + if (flowBalance.totalInflow > 0.0) + hyd->LeakageLoss = flowBalance.leakageDemand / flowBalance.totalInflow * 100.0; + + // Update flow balance for entire run + hyd->FlowBalance.totalInflow += flowBalance.totalInflow * dt; + hyd->FlowBalance.totalOutflow += flowBalance.totalOutflow * dt; + hyd->FlowBalance.consumerDemand += flowBalance.consumerDemand * dt; + hyd->FlowBalance.emitterDemand += flowBalance.emitterDemand * dt; + hyd->FlowBalance.leakageDemand += flowBalance.leakageDemand * dt; + hyd->FlowBalance.deficitDemand += flowBalance.deficitDemand * dt; + hyd->FlowBalance.storageDemand += flowBalance.storageDemand * dt; +} + +void endflowbalance(Project *pr) +/* +**------------------------------------------------------------------- +** Input: none +** Output: none +** Purpose: finalizes components of the system flow balance. +**------------------------------------------------------------------- +*/ +{ + Hydraul *hyd = &pr->hydraul; + Times *time = &pr->times; + + double seconds, qin, qout, qstor, r; + + if (time->Htime > 0) + seconds = time->Htime; + else + seconds = 1.0; + hyd->FlowBalance.totalInflow /= seconds; + hyd->FlowBalance.totalOutflow /= seconds; + hyd->FlowBalance.consumerDemand /= seconds; + hyd->FlowBalance.emitterDemand /= seconds; + hyd->FlowBalance.leakageDemand /= seconds; + hyd->FlowBalance.deficitDemand /= seconds; + hyd->FlowBalance.storageDemand /= seconds; + + qin = hyd->FlowBalance.totalInflow; + qout = hyd->FlowBalance.totalOutflow; + qstor = hyd->FlowBalance.storageDemand; + if (qstor > 0.0) + qout += qstor; + else + qin -= qstor; + if (qin == qout) + r = 1.0; + else if (qin > 0.0) + r = qout / qin; + else + r = 0.0; + hyd->FlowBalance.ratio = r; +} diff --git a/src/funcs.h b/src/funcs.h index 8910c36..87a6be2 100755 --- a/src/funcs.h +++ b/src/funcs.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 09/28/2023 + Last Updated: 06/26/2024 ****************************************************************************** */ #ifndef FUNCS_H @@ -100,6 +100,7 @@ int controldata(Project *); int energydata(Project *); int sourcedata(Project *); int emitterdata(Project *); +int leakagedata(Project *); int qualdata(Project *); int reactdata(Project *); int mixingdata(Project *); @@ -142,6 +143,7 @@ void writecontrolaction(Project *, int, int); void writeruleaction(Project *, int, char *); int writehydwarn(Project *, int,double); void writehyderr(Project *, int); +void writeflowbalance(Project *); void writemassbalance(Project *); void writetime(Project *, char *); char *clocktime(char *, long); @@ -195,4 +197,19 @@ int savefinaloutput(Project *); int saveinpfile(Project *, const char *); +// ------- LEAKAGE.C -------------------- + +int openleakage(Project *); +void closeleakage(Project *); +double findlinkleakage(Project *, int); +void leakagecoeffs(Project *); +double leakageflowchange(Project *, int); +int leakagehasconverged(Project *); + +// ------- FLOWBALANCE.C----------------- + +void startflowbalance(Project *); +void updateflowbalance(Project *, long); +void endflowbalance(Project *); + #endif diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index c00d2f9..5be8c40 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 03/29/2023 + Last Updated: 06/15/2024 ****************************************************************************** */ @@ -310,6 +310,7 @@ void matrixcoeffs(Project *pr) linkcoeffs(pr); emittercoeffs(pr); demandcoeffs(pr); + if (hyd->HasLeakage) leakagecoeffs(pr); // Update nodal flow balances with demands and add onto r.h.s. coeffs. nodecoeffs(pr); @@ -606,7 +607,7 @@ void demandheadloss(Project *pr, int i, double dp, double n, Hydraul *hyd = &pr->hydraul; double d = hyd->DemandFlow[i]; - double dfull = hyd->NodeDemand[i]; + double dfull = hyd->FullDemand[i]; double r = d / dfull; // Evaluate inverted demand function diff --git a/src/hydraul.c b/src/hydraul.c index 3976921..ae40ad6 100755 --- a/src/hydraul.c +++ b/src/hydraul.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 09/28/2023 + Last Updated: 06/26/2024 ****************************************************************************** */ @@ -63,7 +63,7 @@ int openhyd(Project *pr) // Allocate memory for hydraulic variables ERRCODE(allocmatrix(pr)); - + // Check for unconnected nodes ERRCODE(unlinked(pr)); @@ -107,8 +107,10 @@ void inithyd(Project *pr, int initflag) hyd->OldStatus[net->Nlinks+i] = TEMPCLOSED; } - // Initialize emitter flows + // Initialize node outflows + memset(hyd->DemandFlow,0,(net->Nnodes+1)*sizeof(double)); memset(hyd->EmitterFlow,0,(net->Nnodes+1)*sizeof(double)); + memset(hyd->LeakageFlow,0,(net->Nnodes+1)*sizeof(double)); for (i = 1; i <= net->Nnodes; i++) { net->Node[i].ResultIndex = i; @@ -161,6 +163,9 @@ void inithyd(Project *pr, int initflag) pump->Energy.CurrentPower = 0.0; pump->Energy.CurrentEffic = 0.0; } + + // Initialize flow balance + startflowbalance(pr); // Re-position hydraulics file if (pr->outfile.Saveflag) @@ -253,6 +258,9 @@ int nexthyd(Project *pr, long *tstep) // Accumulate pumping energy if (time->Dur == 0) addenergy(pr,0); else if (time->Htime < time->Dur) addenergy(pr,hydstep); + + // Update flow balance + updateflowbalance(pr, hydstep); // More time remains - update current time if (time->Htime < time->Dur) @@ -267,6 +275,8 @@ int nexthyd(Project *pr, long *tstep) // No more time remains - force completion of analysis else { + endflowbalance(pr); + if (pr->report.Statflag) writeflowbalance(pr); time->Htime++; if (pr->quality.OpenQflag) time->Qtime++; } @@ -495,7 +505,7 @@ void demands(Project *pr) if (djunc > 0.0) hyd->Dsystem += djunc; sum += djunc; } - hyd->NodeDemand[i] = sum; + hyd->FullDemand[i] = sum; // Initialize pressure dependent demand hyd->DemandFlow[i] = sum; @@ -1147,4 +1157,3 @@ void resetpumpflow(Project *pr, int i) if (pump->Ptype == CONST_HP) pr->hydraul.LinkFlow[i] = pump->Q0; } - diff --git a/src/hydsolver.c b/src/hydsolver.c index 25c6752..d88823f 100644 --- a/src/hydsolver.c +++ b/src/hydsolver.c @@ -8,7 +8,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/14/2022 + Last Updated: 06/15/2024 ****************************************************************************** */ @@ -47,6 +47,7 @@ static double newflows(Project *, Hydbalance *); static void newlinkflows(Project *, Hydbalance *, double *, double *); static void newemitterflows(Project *, Hydbalance *, double *, double *); static void newdemandflows(Project *, Hydbalance *, double *, double *); +static void newleakageflows(Project *, Hydbalance *, double *, double *); static void checkhydbalance(Project *, Hydbalance *); static int hasconverged(Project *, double *, Hydbalance *); @@ -93,7 +94,6 @@ int hydsolve(Project *pr, int *iter, double *relerr) int valveChange; // Valve status change flag int statChange; // Non-valve status change flag Hydbalance hydbal; // Hydraulic balance errors - double fullDemand; // Full demand for a node (cfs) // Initialize status checking & relaxation factor nextcheck = hyd->CheckFreq; @@ -195,12 +195,12 @@ int hydsolve(Project *pr, int *iter, double *relerr) errcode = 110; } - // Store actual junction outflow in NodeDemand & full demand in DemandFlow + // Save total outflow (NodeDemand) at each junction for (i = 1; i <= net->Njuncs; i++) { - fullDemand = hyd->NodeDemand[i]; - hyd->NodeDemand[i] = hyd->DemandFlow[i] + hyd->EmitterFlow[i]; - hyd->DemandFlow[i] = fullDemand; + hyd->NodeDemand[i] = hyd->DemandFlow[i] + + hyd->EmitterFlow[i] + + hyd->LeakageFlow[i]; } // Save convergence info @@ -381,6 +381,7 @@ double newflows(Project *pr, Hydbalance *hbal) newlinkflows(pr, hbal, &qsum, &dqsum); newemitterflows(pr, hbal, &qsum, &dqsum); newdemandflows(pr, hbal, &qsum, &dqsum); + if (hyd->HasLeakage) newleakageflows(pr, hbal, &qsum, &dqsum); // Return ratio of total flow corrections to total flow if (qsum > hyd->Hacc) return (dqsum / qsum); @@ -514,6 +515,45 @@ void newemitterflows(Project *pr, Hydbalance *hbal, double *qsum, } +void newleakageflows(Project *pr, Hydbalance *hbal, double *qsum, + double *dqsum) +/* +**---------------------------------------------------------------- +** Input: hbal = ptr. to hydraulic balance information +** qsum = sum of current system flows +** dqsum = sum of system flow changes +** Output: updates hbal, qsum and dqsum +** Purpose: updates nodal leakage flows after new nodal heads computed +**---------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + + int i; + double dq; + + for (i = 1; i <= net->Njuncs; i++) + { + // Update leakage flow at node i + dq = leakageflowchange(pr, i); + if (dq == 0.0) continue; + + // Update system flow summation + *qsum += ABS(hyd->LeakageFlow[i]); + *dqsum += ABS(dq); + + // Update identity of element with max. flow change + if (ABS(dq) > hbal->maxflowchange) + { + hbal->maxflowchange = ABS(dq); + hbal->maxflownode = i; + hbal->maxflowlink = -1; + } + } +} + + void newdemandflows(Project *pr, Hydbalance *hbal, double *qsum, double *dqsum) /* **---------------------------------------------------------------- @@ -546,7 +586,7 @@ void newdemandflows(Project *pr, Hydbalance *hbal, double *qsum, double *dqsum) for (i = 1; i <= net->Njuncs; i++) { // Skip junctions with no positive demand - if (hyd->NodeDemand[i] <= 0.0) continue; + if (hyd->FullDemand[i] <= 0.0) continue; // Find change in demand flow (see hydcoeffs.c) demandheadloss(pr, i, dp, n, &hloss, &hgrad); @@ -555,8 +595,8 @@ void newdemandflows(Project *pr, Hydbalance *hbal, double *qsum, double *dqsum) dq *= hyd->RelaxFactor; // Prevent a flow change greater than full demand - if (fabs(dq) > 0.4 * hyd->NodeDemand[i]) - dq = 0.4 * SGN(dq) * hyd->NodeDemand[i]; + if (fabs(dq) > 0.4 * hyd->FullDemand[i]) + dq = 0.4 * SGN(dq) * hyd->FullDemand[i]; hyd->DemandFlow[i] -= dq; // Update system flow summation @@ -641,11 +681,15 @@ int hasconverged(Project *pr, double *relerr, Hydbalance *hbal) if (hyd->FlowChangeLimit > 0.0 && hbal->maxflowchange > hyd->FlowChangeLimit) return 0; + // Check for node leakage convergence + if (hyd->HasLeakage && !leakagehasconverged(pr)) return 0; + // Check for pressure driven analysis convergence if (hyd->DemandModel == PDA) return pdaconverged(pr); return 1; } + int pdaconverged(Project *pr) /* **-------------------------------------------------------------- @@ -659,47 +703,32 @@ int pdaconverged(Project *pr) Hydraul *hyd = &pr->hydraul; const double QTOL = 0.0001; // 0.0001 cfs ~= 0.005 gpm ~= 0.2 lpm) - int i, converged = 1; - double totalDemand = 0.0, totalReduction = 0.0; + int i; double dp = hyd->Preq - hyd->Pmin; double p, q, r; - hyd->DeficientNodes = 0; - hyd->DemandReduction = 0.0; - - // Add up number of junctions with demand deficits + // Examine each network junction for (i = 1; i <= pr->network.Njuncs; i++) { // Skip nodes whose required demand is non-positive - if (hyd->NodeDemand[i] <= 0.0) continue; + if (hyd->FullDemand[i] <= 0.0) continue; // Evaluate demand equation at current pressure solution p = hyd->NodeHead[i] - pr->network.Node[i].El; if (p <= hyd->Pmin) q = 0.0; else if (p >= hyd->Preq) - q = hyd->NodeDemand[i]; + q = hyd->FullDemand[i]; else { r = (p - hyd->Pmin) / dp; - q = hyd->NodeDemand[i] * pow(r, hyd->Pexp); + q = hyd->FullDemand[i] * pow(r, hyd->Pexp); } // Check if demand has not converged - if (fabs(q - hyd->DemandFlow[i]) > QTOL) - converged = 0; - - // Accumulate total required demand and demand deficit - if (hyd->DemandFlow[i] + QTOL < hyd->NodeDemand[i]) - { - hyd->DeficientNodes++; - totalDemand += hyd->NodeDemand[i]; - totalReduction += hyd->NodeDemand[i] - hyd->DemandFlow[i]; - } - } - if (totalDemand > 0.0) - hyd->DemandReduction = totalReduction / totalDemand * 100.0; - return converged; + if (fabs(q - hyd->DemandFlow[i]) > QTOL) return 0; + } + return 1; } diff --git a/src/inpfile.c b/src/inpfile.c index ec786b2..9945a2a 100644 --- a/src/inpfile.c +++ b/src/inpfile.c @@ -7,7 +7,7 @@ Description: saves network data to an EPANET formatted text file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 05/11/2024 +Last Updated: 06/18/2024 ****************************************************************************** */ @@ -369,6 +369,19 @@ int saveinpfile(Project *pr, const char *fname) fprintf(f, "\n %-31s\t%-14.6f", node->ID, ke); } + // Write [LEAKAGE] section + fprintf(f, "\n\n"); + fprintf(f, s_LEAKAGE); + fprintf(f, "\n;;%-31s\t%-14s\t%-14s", + "Pipe", "Leak Area", "Leak Expansion"); + for (i = 1; i <= net->Nlinks; i++) + { + link = &net->Link[i]; + if (link->LeakArea == 0.0 && link->LeakExpan == 0.0) continue; + fprintf(f, "\n %-31s %14.6f %14.6f", link->ID, + link->LeakArea * pr->Ucf[LENGTH], link->LeakExpan * pr->Ucf[LENGTH]); + } + // Write [STATUS] section fprintf(f, "\n\n"); fprintf(f, s_STATUS); @@ -584,7 +597,7 @@ int saveinpfile(Project *pr, const char *fname) fprintf(f, "\n\n"); fprintf(f, s_REACTIONS); - fprintf(f, "\n;;%-9s\t%-31s\t%-12s", "Type", "Pipe/Tank", "Coefficient"); + fprintf(f, "\n;%-9s\t%-31s\t%-12s", "Type", "Pipe/Tank", "Coefficient"); // Pipe-specific parameters for (i = 1; i <= net->Nlinks; i++) diff --git a/src/input1.c b/src/input1.c index ee40d1e..1074dec 100644 --- a/src/input1.c +++ b/src/input1.c @@ -7,7 +7,7 @@ Description: retrieves network data from an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 09/28/2023 +Last Updated: 06/15/2024 ****************************************************************************** */ @@ -593,6 +593,10 @@ void convertunits(Project *pr) // Convert units on reaction coeffs. link->Kb /= SECperDAY; link->Kw /= SECperDAY; + + // Convert leakage parameters + link->LeakArea /= pr->Ucf[LENGTH]; + link->LeakExpan /= pr->Ucf[LENGTH]; } else if (link->Type == PUMP) diff --git a/src/input2.c b/src/input2.c index c5af2ba..f1ce8bf 100644 --- a/src/input2.c +++ b/src/input2.c @@ -310,6 +310,7 @@ int newline(Project *pr, int sect, char *line) else return 0; case _SOURCES: return (sourcedata(pr)); case _EMITTERS: return (emitterdata(pr)); + case _LEAKAGE: return (leakagedata(pr)); case _QUALITY: return (qualdata(pr)); case _STATUS: return (statusdata(pr)); case _ROUGHNESS: return (0); diff --git a/src/input3.c b/src/input3.c index 1d4f03a..296e752 100644 --- a/src/input3.c +++ b/src/input3.c @@ -387,6 +387,8 @@ int pipedata(Project *pr) link->Km = 0.0; link->Kb = MISSING; link->Kw = MISSING; + link->LeakArea = 0.0; + link->LeakExpan = 0.0; link->Type = PIPE; link->Status = OPEN; link->Rpt = 0; @@ -494,6 +496,8 @@ int pumpdata(Project *pr) link->Km = 0.0; link->Kb = 0.0; link->Kw = 0.0; + link->LeakArea = 0.0; + link->LeakExpan = 0.0; link->Type = PUMP; link->Status = OPEN; link->Rpt = 0; @@ -613,6 +617,8 @@ int valvedata(Project *pr) link->Km = 0.0; link->Kb = 0.0; link->Kw = 0.0; + link->LeakArea = 0.0; + link->LeakExpan = 0.0; link->Type = type; link->Status = ACTIVE; link->Rpt = 0; @@ -1118,6 +1124,41 @@ int emitterdata(Project *pr) return 0; } +int leakagedata(Project *pr) +/* +**-------------------------------------------------------------- +** Input: none +** Output: returns error code +** Purpose: processes link leakage data +** Format: +** [LEAKAGE] +** link C1 C2 +**-------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Parser *parser = &pr->parser; + + int j, // Link index + n; // # data items + double c1, c2; // Flow coeff. + + // Check that link exists & is a pipe + n = parser->Ntokens; + if (n < 3) return 201; + if ((j = findlink(net, parser->Tok[0])) == 0) return setError(parser, 0, 203); + if (net->Link[j].Type > PIPE) return 0; + + // Parse leakage coeffs. + if (!getfloat(parser->Tok[1], &c1)) return setError(parser, 1, 202); + if (c1 < 0.0) return setError(parser, 1, 209); + if (!getfloat(parser->Tok[2], &c2)) return setError(parser, 2, 202); + if (c2 < 0.0) return setError(parser, 1, 209); + net->Link[j].LeakArea = c1; + net->Link[j].LeakExpan = c2; + return 0; +} + int qualdata(Project *pr) /* **-------------------------------------------------------------- diff --git a/src/leakage.c b/src/leakage.c new file mode 100644 index 0000000..cb5cad7 --- /dev/null +++ b/src/leakage.c @@ -0,0 +1,531 @@ +/* + ****************************************************************************** + Project: OWA EPANET + Version: 2.3 + Module: leakage.c + Description: models additional nodal demands due to pipe leaks. + Authors: see AUTHORS + Copyright: see AUTHORS + License: see LICENSE + Last Updated: 06/14/2024 + ****************************************************************************** +*/ +/* +This module uses the FAVAD (Fixed and Variable Discharge) equation to model +leaky pipes: + + Q = Co * L * (Ao + m * H) * sqrt(H) + +where Q = leak flow rate, Co = an orifice coefficient (= 0.6*sqrt(2g)), +L = pipe length, Ao = initial area of leak per unit of pipe length, +m = change in leak area per unit of pressure head, and H = pressure head. + +The inverted form of this equation is used to model the leakage demand from +a pipe's end node using a pair of equivalent emitters as follows: + + H = Cfa * Qfa^2 + H = Cva * Qva^(2/3) + +where Qfa = fixed area leakage rate, Qva = variable area leakage rate, +Cfa = 1 / SUM(Co*(L/2)*Ao)^2, Cva = 1 / SUM(Co*(L/2)*m)^2/3, and +SUM(x) is the summation of x over all pipes connected to the node. + +In implementing this model, the pipe property "LeakArea" represents Ao in +sq. mm per 100 units of pipe length and "LeakExpan" represents m in sq. mm +per unit of pressure head. + +*/ +#include +#include + +#include "types.h" +#include "funcs.h" + +// Exported functions (declared in funcs.h) +//int openleakage(Project *); +//void closeleakage(Project *); +//double findlinkleakage(Project *, int); +//void leakagecoeffs(Project *); +//double leakageflowchange(Project *, int); +//int leakagehasconverged(Project *); + +// Local functions +static int check_for_leakage(Project *pr); +static int create_leakage_objects(Project *pr); +static void convert_pipe_to_node_leakage(Project *pr); +static void init_node_leakage(Project *pr); +static int leakage_headloss(Project* pr, int i, double *hfa, + double *gfa, double *hva, double *gva); +static void eval_node_leakage(double RQtol, double q, double c, + double n, double *h, double *g); +static void add_lower_barrier(double q, double* h, double* g); + + +int openleakage(Project *pr) +/*------------------------------------------------------------- +** Input: none +** Output: returns an error code +** Purpose: opens the pipe leakage modeling system +**------------------------------------------------------------- +*/ +{ + Hydraul *hyd = &pr->hydraul; + + int err; + + // Check if project includes leakage + closeleakage(pr); + hyd->HasLeakage = check_for_leakage(pr); + if (!hyd->HasLeakage) return 0; + + // Allocate memory for leakage data objects + err = create_leakage_objects(pr); + if (err > 0) return err; + + // Convert pipe leakage coeffs. to node coeffs. + convert_pipe_to_node_leakage(pr); + init_node_leakage(pr); + return 0; +} + + +int check_for_leakage(Project *pr) +/*------------------------------------------------------------- +** Input: none +** Output: returns TRUE if any pipes can leak, FALSE otherwise +** Purpose: checks if any pipes can leak. +**------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + int i; + Slink *link; + + for (i = 1; i <= net->Nlinks; i++) + { + // Only pipes have leakage + link = &net->Link[i]; + if (link->Type > PIPE) continue; + if (link->LeakArea > 0.0 || link->LeakExpan > 0.0) return TRUE; + } + return FALSE; +} + + +int create_leakage_objects(Project *pr) +/*------------------------------------------------------------- +** Input: none +** Output: returns an error code +** Purpose: allocates an array of Leakage objects. +**------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + int i; + + hyd->Leakage = (Sleakage *)calloc(net->Njuncs + 1, sizeof(Sleakage)); + if (hyd->Leakage == NULL) return 101; + for (i = 1; i <= net->Njuncs; i++) + { + hyd->Leakage[i].cfa = 0.0; + hyd->Leakage[i].cva = 0.0; + hyd->Leakage[i].qfa = 0.0; + hyd->Leakage[i].qva = 0.0; + } + return 0; +} + +void convert_pipe_to_node_leakage(Project *pr) +/*------------------------------------------------------------- +** Input: none +** Output: none +** Purpose: converts pipe leakage parameters into node leakage +** coefficents. +**------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + + int i; + double c_area, c_expan, c_orif, len; + Slink *link; + Snode *node1; + Snode *node2; + + // Examine each link + c_orif = 4.8149866 * 1.e-6; + for (i = 1; i <= net->Nlinks; i++) + { + // Only pipes have leakage + link = &net->Link[i]; + if (link->Type > PIPE) continue; + + // Ignore leakage in a pipe connecting two tanks or + // reservoirs (since those nodes don't have demands) + node1 = &net->Node[link->N1]; + node2 = &net->Node[link->N2]; + if (node1->Type != JUNCTION && node2->Type != JUNCTION) continue; + + // Get pipe's fixed and variable area leak coeffs. + if (link->LeakArea == 0.0 && link->LeakExpan == 0.0) continue; + c_area = c_orif * link->LeakArea / SQR(MperFT); + c_expan = c_orif * link->LeakExpan; + + // Adjust for number of 100-ft pipe sections + len = link->Len * pr->Ucf[LENGTH] / 100.; + if (node1->Type == JUNCTION && node2->Type == JUNCTION) + { + len *= 0.5; + } + c_area *= len; + c_expan *= len; + + // Add these coeffs. to pipe's end nodes + if (node1->Type == JUNCTION) + { + hyd->Leakage[link->N1].cfa += c_area; + hyd->Leakage[link->N1].cva += c_expan; + } + if (node2->Type == JUNCTION) + { + hyd->Leakage[link->N2].cfa += c_area; + hyd->Leakage[link->N2].cva += c_expan; + } + } +} + +void init_node_leakage(Project *pr) +/*------------------------------------------------------------- +** Input: none +** Output: none +** Purpose: initializes node leakage coeffs. and flows. +**------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + + int i; + double c_area, c_expan; + + for (i = 1; i <= net->Njuncs; i++) + { + // Coeff. for fixed area leakage + c_area = hyd->Leakage[i].cfa; + if (c_area > 0.0) + hyd->Leakage[i].cfa = 1.0 / (c_area * c_area); + else + hyd->Leakage[i].cfa = 0.0; + + // Coeff. for variable area leakage + c_expan = hyd->Leakage[i].cva; + if (c_expan > 0.0) + hyd->Leakage[i].cva = 1.0 / pow(c_expan, 2./3.); + else + hyd->Leakage[i].cva = 0.0; + + // Initialize leakage flow to a non-zero value (as required by + // the hydraulic solver) + if (hyd->Leakage[i].cfa > 0.0) + hyd->Leakage[i].qfa = 0.001; + if (hyd->Leakage[i].cva > 0.0) + hyd->Leakage[i].qva = 0.001; + } +} + +void closeleakage(Project *pr) +/*------------------------------------------------------------- +** Input: none +** Output: none +** Purpose: frees memory for nodal leakage objects. +**------------------------------------------------------------- +*/ +{ + Hydraul *hyd = &pr->hydraul; + if (hyd->Leakage) free(hyd->Leakage); + hyd->Leakage = NULL; + hyd->HasLeakage = FALSE; +} + +double findlinkleakage(Project *pr, int i) +/*------------------------------------------------------------- +** Input: i = link index +** Output: returns link leakage flow (cfs) +** Purpose: computes leakage flow from link i at current +** hydraulic solution. +**------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + Smatrix *sm = &hyd->smatrix; + Slink *link = &net->Link[i]; + + int n1, n2; + double h1, h2, hsqrt, a, m, c, len, q1, q2; + + // Only pipes can leak + link = &net->Link[i]; + if (link->Type > PIPE) return 0.0; + + // No leakage if area & expansion are 0 + if (link->LeakArea == 0.0 && link->LeakExpan == 0.0) return 0.0; + + // No leakage if link's end nodes are both fixed grade + n1 = link->N1; + n2 = link->N2; + if (n1 > net->Njuncs && n2 > net->Njuncs) return 0.0; + + // Pressure head of end nodes + h1 = hyd->NodeHead[n1] - net->Node[n1].El; + h1 = MAX(h1, 0.0); + h2 = hyd->NodeHead[n2] - net->Node[n2].El; + h2 = MAX(h2, 0.0); + + // Pipe leak parameters converted to feet + a = link->LeakArea / SQR(MperFT); + m = link->LeakExpan; + len = link->Len * pr->Ucf[LENGTH] / 100.; // # 100 ft pipe lengths + c = 4.8149866 * len / 2.0 * 1.e-6; + + // Leakage from 1st half of pipe connected to node n1 + q1 = 0.0; + if (n1 <= net->Njuncs) + { + hsqrt = sqrt(h1); + q1 = c * (a + m * h1) * hsqrt; + } + + // Leakage from 2nd half of pipe connected to node n2 + q2 = 0.0; + if (n2 <= net->Njuncs) + { + hsqrt = sqrt(h2); + q2 = c * (a + m * h2) * hsqrt; + } + + // Adjust leakage flows to account for one node being fixed grade + if (q2 == 0.0) q1 *= 2.0; + if (q1 == 0.0) q2 *= 2.0; + return q1 + q2; +} + +void leakagecoeffs(Project *pr) +/* +**-------------------------------------------------------------- +** Input: none +** Output: none +** Purpose: computes coeffs. of the linearized hydraulic eqns. +** contributed by node leakages. +**-------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + Smatrix *sm = &hyd->smatrix; + + int i, row; + double hfa, // head loss producing current fixed area leakage + gfa, // gradient of fixed area head loss + hva, // head loss producing current variable area leakage + gva; // gradient of variable area head loss + + Snode* node; + + for (i = 1; i <= net->Njuncs; i++) + { + // Skip junctions that don't leak + node = &net->Node[i]; + if (!leakage_headloss(pr, i, &hfa, &gfa, &hva, &gva)) continue; + + // Addition to matrix diagonal & r.h.s + row = sm->Row[i]; + if (gfa > 0.0) + { + sm->Aii[row] += 1.0 / gfa; + sm->F[row] += (hfa + node->El) / gfa; + } + if (gva > 0.0) + { + sm->Aii[row] += 1.0 / gva; + sm->F[row] += (hva + node->El) / gva; + } + + // Update node's flow excess (inflow - outflow) + hyd->Xflow[i] -= (hyd->Leakage[i].qfa + hyd->Leakage[i].qva); + } +} + +double leakageflowchange(Project *pr, int i) +/* +**-------------------------------------------------------------- +** Input: i = node index +** Output: returns change in leakage flow rate +** Purpose: finds new leakage flow rate at a node after new +** heads are computed by the hydraulic solver. +**-------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + + double hfa, gfa, hva, gva, // same as defined in leakage_solvercoeffs() + dh, dqfa, dqva; + + // Find the head loss and gradient of the inverted leakage + // equation for both fixed and variable area leakage at the + // current leakage flow rates + if (!leakage_headloss(pr, i, &hfa, &gfa, &hva, &gva)) return 0.0; + + // Pressure head using latest head solution + dh = hyd->NodeHead[i] - net->Node[i].El; + + // GGA flow update formula for fixed area leakage + dqfa = 0.0; + if (gfa > 0.0) + { + dqfa = (hfa - dh) / gfa * hyd->RelaxFactor; + hyd->Leakage[i].qfa -= dqfa; + } + + // GGA flow update formula for variable area leakage + dqva = 0.0; + if (gva > 0.0) + { + dqva = (hva - dh) / gva * hyd->RelaxFactor; + hyd->Leakage[i].qva -= dqva; + } + + // New leakage flow at the node + hyd->LeakageFlow[i] = hyd->Leakage[i].qfa + hyd->Leakage[i].qva; + return dqfa + dqva; +} + +int leakagehasconverged(Project *pr) +/* +**-------------------------------------------------------------- +** Input: none +** Output: returns TRUE if leakage calculations converged, +** FALSE if not +** Purpose: checks if leakage calculations have converged. +**-------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Hydraul *hyd = &pr->hydraul; + int i; + double h, qref, qtest; + const double ABSTOL = 0.0001; // 0.0001 cfs ~= 0.005 gpm ~= 0.2 lpm) + const double RELTOL = 0.001; + + for (i = 1; i <= net->Njuncs; i++) + { + // Skip junctions that don't leak + if (hyd->Leakage[i].cfa == 0 && hyd->Leakage[i].cva == 0) continue; + + // Evaluate node's pressure head + h = hyd->NodeHead[i] - net->Node[i].El; + + // Directly compute a reference leakage at this pressure head + qref = 0.0; + // Contribution from pipes with fixed area leaks + if (hyd->Leakage[i].cfa > 0.0) + qref = sqrt(h / hyd->Leakage[i].cfa); + // Contribution from pipes with variable area leaks + if (hyd->Leakage[i].cva > 0.0) + qref += pow((h / hyd->Leakage[i].cva), 1.5); + + // Compare reference leakage to solution leakage + qtest = hyd->Leakage[i].qfa + hyd->Leakage[i].qva; + if (fabs(qref - qtest) > ABSTOL + RELTOL * qref) return FALSE; + } + return TRUE; +} + +int leakage_headloss(Project* pr, int i, double *hfa, double *gfa, + double *hva, double *gva) +/* +**-------------------------------------------------------------- +** Input: i = node index +** Output: hfa = fixed area leak head loss (ft) +** gfa = gradient of fixed area head loss (ft/cfs) +** hva = variable area leak head loss (ft) +** gva = gradient of variable area head loss (ft/cfs) +** returns TRUE if node has leakage, FALSE otherwise +** Purpose: finds head loss and its gradient for a node's +** leakage as a function of leakage flow. +**-------------------------------------------------------------- +*/ +{ + Hydraul *hyd = &pr->hydraul; + if (hyd->Leakage[i].cfa == 0.0 && hyd->Leakage[i].cva == 0.0) return FALSE; + if (hyd->Leakage[i].cfa == 0.0) + { + *hfa = 0.0; + *gfa = 0.0; + } + else + eval_node_leakage(hyd->RQtol, hyd->Leakage[i].qfa, hyd->Leakage[i].cfa, + 0.5, hfa, gfa); + if (hyd->Leakage[i].cva == 0.0) + { + *hva = 0.0; + *gva = 0.0; + } + else + eval_node_leakage(hyd->RQtol, hyd->Leakage[i].qva, hyd->Leakage[i].cva, + 1.5, hva, gva); + return TRUE; +} + +void eval_node_leakage(double RQtol, double q, double c, double n, + double *h, double *g) +/* +**-------------------------------------------------------------- +** Input: RQtol = low gradient tolerance (ft/cfs) +** q = leakage flow rate (cfs) +** c = leakage head loss coefficient +** n = leakage head loss exponent +** Output: h = leakage head loss (ft) +** g = gradient of leakage head loss (ft/cfs) +** Purpose: evaluates inverted form of leakage equation to +** compute head loss and its gradient as a function +** flow. +**-------------------------------------------------------------- +*/ +{ + n = 1.0 / n; + *g = n * c * pow(fabs(q), n - 1.0); + + // Use linear head loss function for small gradient + if (*g < RQtol) + { + *g = RQtol / n; + *h = (*g) * q; + } + + // Otherwise use normal leakage head loss function + else *h = (*g) * q / n; + + // Prevent leakage from going negative + add_lower_barrier(q, h, g); +} + +void add_lower_barrier(double q, double* h, double* g) +/* +**-------------------------------------------------------------------- +** Input: q = current flow rate +** Output: h = head loss value +** g = head loss gradient value +** Purpose: adds a head loss barrier to prevent flow from falling +** below 0. +**-------------------------------------------------------------------- +*/ +{ + double a = 1.e9 * q; + double b = sqrt(a*a + 1.e-6); + *h += (a - b) / 2.; + *g += (1.e9 / 2.) * ( 1.0 - a / b); +} diff --git a/src/project.c b/src/project.c index 2104d06..80c7697 100644 --- a/src/project.c +++ b/src/project.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 09/28/2023 + Last Updated: 06/24/2024 ****************************************************************************** */ @@ -328,8 +328,11 @@ void initpointers(Project *pr) pr->hydraul.P = NULL; pr->hydraul.Y = NULL; pr->hydraul.Xflow = NULL; + pr->hydraul.FullDemand = NULL; pr->hydraul.DemandFlow = NULL; pr->hydraul.EmitterFlow = NULL; + pr->hydraul.LeakageFlow = NULL; + pr->hydraul.Leakage = NULL; pr->quality.NodeQual = NULL; pr->quality.PipeRateCoeff = NULL; @@ -392,14 +395,18 @@ int allocdata(Project *pr) pr->hydraul.NodeDemand = (double *)calloc(n, sizeof(double)); pr->hydraul.NodeHead = (double *)calloc(n, sizeof(double)); pr->quality.NodeQual = (double *)calloc(n, sizeof(double)); + pr->hydraul.FullDemand = (double *)calloc(n, sizeof(double)); pr->hydraul.DemandFlow = (double *)calloc(n, sizeof(double)); pr->hydraul.EmitterFlow = (double *)calloc(n, sizeof(double)); + pr->hydraul.LeakageFlow = (double *)calloc(n, sizeof(double)); ERRCODE(MEMCHECK(pr->network.Node)); ERRCODE(MEMCHECK(pr->hydraul.NodeDemand)); ERRCODE(MEMCHECK(pr->hydraul.NodeHead)); ERRCODE(MEMCHECK(pr->quality.NodeQual)); + ERRCODE(MEMCHECK(pr->hydraul.FullDemand)); ERRCODE(MEMCHECK(pr->hydraul.DemandFlow)); ERRCODE(MEMCHECK(pr->hydraul.EmitterFlow)); + ERRCODE(MEMCHECK(pr->hydraul.LeakageFlow)); } // Allocate memory for network links @@ -471,8 +478,10 @@ void freedata(Project *pr) free(pr->hydraul.LinkFlow); free(pr->hydraul.LinkSetting); free(pr->hydraul.LinkStatus); + free(pr->hydraul.FullDemand); free(pr->hydraul.DemandFlow); free(pr->hydraul.EmitterFlow); + free(pr->hydraul.LeakageFlow); free(pr->quality.NodeQual); // Free memory used for nodal adjacency lists diff --git a/src/report.c b/src/report.c index ffdc2d2..25bb137 100644 --- a/src/report.c +++ b/src/report.c @@ -422,6 +422,44 @@ void writehydstat(Project *pr, int iter, double relerr) writeline(pr, " "); } +void writeflowbalance(Project *pr) +/* +**------------------------------------------------------------- +** Input: none +** Output: none +** Purpose: writes hydraulic flow balance ratio to report file. +**------------------------------------------------------------- +*/ +{ + Hydraul *hyd = &pr->hydraul; + Report *rpt = &pr->report; + char s1[MAXMSG+1]; + double ucf = pr->Ucf[FLOW]; + + snprintf(s1, MAXMSG, "Hydraulic Flow Balance (%s)", rpt->Field[DEMAND].Units); + writeline(pr, s1); + snprintf(s1, MAXMSG, "================================"); + writeline(pr, s1); + snprintf(s1, MAXMSG, "Total Inflow: %12.3f", hyd->FlowBalance.totalInflow*ucf); + writeline(pr, s1); + snprintf(s1, MAXMSG, "Consumer Demand: %12.3f", hyd->FlowBalance.consumerDemand*ucf); + writeline(pr, s1); + snprintf(s1, MAXMSG, "Demand Deficit: %12.3f", hyd->FlowBalance.deficitDemand*ucf); + writeline(pr, s1); + snprintf(s1, MAXMSG, "Emitter Flow: %12.3f", hyd->FlowBalance.emitterDemand*ucf); + writeline(pr, s1); + snprintf(s1, MAXMSG, "Leakage Flow: %12.3f", hyd->FlowBalance.leakageDemand*ucf); + writeline(pr, s1); + snprintf(s1, MAXMSG, "Total Outflow: %12.3f", hyd->FlowBalance.totalOutflow*ucf); + writeline(pr, s1); + snprintf(s1, MAXMSG, "Storage Flow: %12.3f", hyd->FlowBalance.storageDemand*ucf); + writeline(pr, s1); + snprintf(s1, MAXMSG, "Flow Ratio: %12.3f", hyd->FlowBalance.ratio); + writeline(pr, s1); + snprintf(s1, MAXMSG, "================================\n"); + writeline(pr, s1); +} + void writemassbalance(Project *pr) /* **------------------------------------------------------------- diff --git a/src/text.h b/src/text.h index 1a78573..84b05db 100755 --- a/src/text.h +++ b/src/text.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 05/11/2024 + Last Updated: 06/15/2024 ****************************************************************************** */ @@ -151,6 +151,9 @@ #define w_REQUIRED "REQ" #define w_EXPONENT "EXP" +#define w_AREA "AREA" +#define w_EXPAN "EXPAN" + #define w_SECONDS "SEC" #define w_MINUTES "MIN" #define w_HOURS "HOU" @@ -208,6 +211,7 @@ #define s_DEMANDS "[DEMANDS]" #define s_SOURCES "[SOURCES]" #define s_EMITTERS "[EMITTERS]" +#define s_LEAKAGE "[LEAKAGE]" #define s_PATTERNS "[PATTERNS]" #define s_CURVES "[CURVES]" #define s_QUALITY "[QUALITY]" diff --git a/src/types.h b/src/types.h index ff7c359..30fd64e 100755 --- a/src/types.h +++ b/src/types.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 07/17/2023 + Last Updated: 06/15/2024 ****************************************************************************** */ @@ -294,7 +294,7 @@ typedef enum { _VALVES, _CONTROLS, _RULES, _DEMANDS, _SOURCES, _EMITTERS, _PATTERNS, _CURVES, _QUALITY, _STATUS, _ROUGHNESS, _ENERGY, _REACTIONS, _MIXING, _REPORT, _TIMES, _OPTIONS, - _COORDS, _VERTICES, _LABELS, _BACKDROP, _TAGS, _END + _COORDS, _VERTICES, _LABELS, _BACKDROP, _TAGS, _LEAKAGE, _END } SectionType; typedef enum { @@ -413,6 +413,8 @@ typedef struct // Link Object double Kw; // wall react. coef. double R; // flow resistance double Rc; // reaction coeff. + double LeakArea; // leak area (sq mm per 100 pipe length units + double LeakExpan; // leak expansion (sq mm per unit of head) LinkType Type; // link type StatusType Status; // initial status Pvertices Vertices; // internal vertex coordinates @@ -549,6 +551,26 @@ typedef struct // Mass Balance Components double ratio; // ratio of mass added to mass lost } SmassBalance; +typedef struct +{ + double totalInflow; + double totalOutflow; + double consumerDemand; + double emitterDemand; + double leakageDemand; + double deficitDemand; + double storageDemand; + double ratio; +} SflowBalance; + +typedef struct // Node Leakage Object +{ + double qfa; // fixed area leakage flow + double qva; // variable area leakage flow + double cfa; // fixed area leakage coeff. + double cva; // variable area leakage coeff. +} Sleakage; + /* ------------------------------------------------------ Wrapper Data Structures @@ -712,9 +734,11 @@ typedef struct { double *NodeHead, // Node hydraulic heads - *NodeDemand, // Node demand + emitter flows - *DemandFlow, // Work array of demand flows - *EmitterFlow, // Emitter outflows + *NodeDemand, // Node total demand (consumer + emitter + leakage) + *FullDemand, // Required consumer demand + *DemandFlow, // Demand flow from nodes + *EmitterFlow, // Emitter flow from nodes + *LeakageFlow, // Leakage flow from nodes *LinkFlow, // Link flows *LinkSetting, // Link settings Htol, // Hydraulic head tolerance @@ -741,6 +765,7 @@ typedef struct { MaxHeadError, // Max. error for link head loss MaxFlowChange, // Max. change in link flow DemandReduction, // % demand reduction at pressure deficient nodes + LeakageLoss, // % system leakage loss RelaxFactor, // Relaxation factor for flow updating *P, // Inverse of head loss derivatives *Y, // Flow correction factors @@ -759,12 +784,18 @@ typedef struct { MaxCheck, // Hydraulic trials limit on status checks OpenHflag, // Hydraulic system opened flag Haltflag, // Flag to halt simulation - DeficientNodes; // Number of pressure deficient nodes + DeficientNodes, // Number of pressure deficient nodes + HasLeakage; // TRUE if project has non-zero leakage parameters + + Sleakage *Leakage; // Array of node leakage parameters StatusType *LinkStatus, // Link status *OldStatus; // Previous link/tank status + SflowBalance + FlowBalance; // Flow balance components + Smatrix smatrix; // Sparse matrix storage } Hydraul; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d90167f..744a58a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -41,6 +41,7 @@ set(toolkit_test_srcs test_pda.cpp test_valve.cpp test_units.cpp + test_leakage.cpp ) add_executable(test_toolkit ${toolkit_test_srcs}) diff --git a/tests/test_leakage.cpp b/tests/test_leakage.cpp new file mode 100644 index 0000000..4a1c716 --- /dev/null +++ b/tests/test_leakage.cpp @@ -0,0 +1,93 @@ +/* + ****************************************************************************** + Project: OWA EPANET + Version: 2.3 + Module: test_leakage.cpp + Description: Tests EPANET toolkit api functions + Authors: see AUTHORS + Copyright: see AUTHORS + License: see LICENSE + Last Updated: 06/26/2024 + ****************************************************************************** +*/ + +/* + Tests Pipe Leakage Feature +*/ + +#include + +#include "test_toolkit.hpp" + +BOOST_AUTO_TEST_SUITE (test_leakage) + +BOOST_AUTO_TEST_CASE(test_leakage_model) + +//#include +//#include +//#include "epanet2_2.h" + +//int main() +{ + int error = 0; + int Pipe21, Junc21, Junc22; + double pipe21Leak, junc21Leak, junc22Leak; + EN_Project ph = NULL; + + error = EN_createproject(&ph); + BOOST_REQUIRE(error == 0); + error = EN_open(ph, DATA_PATH_NET1, DATA_PATH_RPT, ""); +// error = EN_open(ph, "Net1.inp", "Net1.rpt", ""); + BOOST_REQUIRE(error == 0); + + // single period analysis + error = EN_settimeparam(ph, EN_DURATION, 0); + BOOST_REQUIRE(error == 0); + + // Get index of Pipe 21 + error = EN_getlinkindex(ph, "21", &Pipe21); + BOOST_REQUIRE(error == 0); + + // Set Pipe21 leak area to 1.0 sq mm per 100 ft of pipe + // and its expansion rate to 0.1 sq mm per ft of head + error = EN_setlinkvalue(ph, Pipe21, EN_LEAK_AREA, 1.0); + BOOST_REQUIRE(error == 0); + error = EN_setlinkvalue(ph, Pipe21, EN_LEAK_EXPAN, 0.1); + BOOST_REQUIRE(error == 0); + + // Solve for hydraulics + error = EN_solveH(ph); + BOOST_REQUIRE(error == 0); + + // Compute Pipe 21 leakage flow using the FAVAD formula + // Note: we can't just sum the leak rates at both end nodes + // together since in general the nodes can have leakage + // contributed by other connecting pipes. + error = EN_getlinkvalue(ph, Pipe21, EN_LINK_LEAKAGE, &pipe21Leak); + BOOST_REQUIRE(error == 0); +// printf("\n Pipe leakage flow: %.4f", pipe21Leak); + + // Retrieve leakage flow at end nodes + // Note: In this case all of the leakage at these nodes is from Pipe 21. + error = EN_getnodeindex(ph, "21", &Junc21); + BOOST_REQUIRE(error == 0); + error = EN_getnodeindex(ph, "22", &Junc22); + BOOST_REQUIRE(error == 0); + error = EN_getnodevalue(ph, Junc21, EN_LEAKAGEFLOW, &junc21Leak); + BOOST_REQUIRE(error == 0); + error = EN_getnodevalue(ph, Junc22, EN_LEAKAGEFLOW, &junc22Leak); + BOOST_REQUIRE(error == 0); + + // Check that the sum of the node leakages equals the pipe leakage + //printf("\n Node leakage flow: %.4f\n", junc21Leak + junc22Leak); + BOOST_REQUIRE(abs(pipe21Leak - (junc21Leak+junc22Leak)) < 0.01); + +// Clean up + error = EN_close(ph); + BOOST_REQUIRE(error == 0); + error = EN_deleteproject(ph); + BOOST_REQUIRE(error == 0); +// return 0; +} + +BOOST_AUTO_TEST_SUITE_END() From 30a3fcb4b981d0a776123da028fe1f314bbd321f Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 26 Jun 2024 11:47:35 -0400 Subject: [PATCH 174/233] debug test_pda.cpp --- tests/test_pda.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/test_pda.cpp b/tests/test_pda.cpp index 6091def..7e951c0 100644 --- a/tests/test_pda.cpp +++ b/tests/test_pda.cpp @@ -79,6 +79,9 @@ BOOST_AUTO_TEST_CASE(test_pda_model) error = EN_getnodeindex(ph, (char *)"21", &index); BOOST_REQUIRE(error == 0); error = EN_getnodevalue(ph, index, EN_DEMANDDEFICIT, &reduction); + + printf("\nreduction = %f", reduction); + BOOST_REQUIRE(error == 0); BOOST_REQUIRE(abs(reduction - 413.67) < 0.01); From 68b73a14f1a20daa292da8d40554ef2c40b74baf Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 26 Jun 2024 17:50:24 -0400 Subject: [PATCH 175/233] Fixes for PDA --- src/flowbalance.c | 25 ++++++++++--------------- src/hydsolver.c | 26 +++++++++++++++++++++----- tests/test_pda.cpp | 3 --- 3 files changed, 31 insertions(+), 23 deletions(-) diff --git a/src/flowbalance.c b/src/flowbalance.c index 2c0efa6..aea6f19 100644 --- a/src/flowbalance.c +++ b/src/flowbalance.c @@ -73,9 +73,7 @@ void updateflowbalance(Project *pr, long hstep) flowBalance.storageDemand = 0.0; fullDemand = 0.0; - // Initialize demand deficiency & leakage loss - hyd->DeficientNodes = 0; - hyd->DemandReduction = 0.0; + // Initialize leakage loss hyd->LeakageLoss = 0.0; // Examine each junction node @@ -104,11 +102,8 @@ void updateflowbalance(Project *pr, long hstep) if (hyd->DemandModel == PDA && hyd->FullDemand[i] > 0.0) { deficit = hyd->FullDemand[i] - hyd->DemandFlow[i]; - if (deficit > TINY) - { - hyd->DeficientNodes++; + if (deficit > 0.0) flowBalance.deficitDemand += deficit; - } } } @@ -118,8 +113,8 @@ void updateflowbalance(Project *pr, long hstep) i = net->Tank[j].Node; v = hyd->NodeDemand[i]; - // For a snapshot analysis or a reservoir node - if (time->Dur == 0 || net->Tank[j].A == 0.0) + // For a reservoir node + if (net->Tank[j].A == 0.0) { if (v >= 0.0) flowBalance.totalOutflow += v; @@ -127,16 +122,16 @@ void updateflowbalance(Project *pr, long hstep) flowBalance.totalInflow += (-v); } - // For tank under extended period analysis + // For tank else flowBalance.storageDemand += v; } - // Find % demand reduction & % leakage for current period - if (fullDemand > 0.0) - hyd->DemandReduction = flowBalance.deficitDemand / fullDemand * 100.0; - if (flowBalance.totalInflow > 0.0) - hyd->LeakageLoss = flowBalance.leakageDemand / flowBalance.totalInflow * 100.0; + // Find % leakage for current period + v = flowBalance.totalInflow; + if (flowBalance.storageDemand < 0.0) v += (-flowBalance.storageDemand); + if (v > 0.0) + hyd->LeakageLoss = flowBalance.leakageDemand / v * 100.0; // Update flow balance for entire run hyd->FlowBalance.totalInflow += flowBalance.totalInflow * dt; diff --git a/src/hydsolver.c b/src/hydsolver.c index d88823f..5d76bc6 100644 --- a/src/hydsolver.c +++ b/src/hydsolver.c @@ -8,7 +8,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 06/15/2024 + Last Updated: 06/26/2024 ****************************************************************************** */ @@ -703,10 +703,15 @@ int pdaconverged(Project *pr) Hydraul *hyd = &pr->hydraul; const double QTOL = 0.0001; // 0.0001 cfs ~= 0.005 gpm ~= 0.2 lpm) - int i; + int i, converged = 1; + + double totalDemand = 0.0, totalReduction = 0.0; double dp = hyd->Preq - hyd->Pmin; double p, q, r; - + + hyd->DeficientNodes = 0; + hyd->DemandReduction = 0.0; + // Examine each network junction for (i = 1; i <= pr->network.Njuncs; i++) { @@ -726,9 +731,20 @@ int pdaconverged(Project *pr) } // Check if demand has not converged - if (fabs(q - hyd->DemandFlow[i]) > QTOL) return 0; + if (fabs(q - hyd->DemandFlow[i]) > QTOL) + converged = 0; + + // Accumulate demand deficient node count and demand deficit + if (hyd->DemandFlow[i] + QTOL < hyd->FullDemand[i]) + { + hyd->DeficientNodes++; + totalDemand += hyd->FullDemand[i]; + totalReduction += hyd->FullDemand[i] - hyd->DemandFlow[i]; + } } - return 1; + if (totalDemand > 0.0) + hyd->DemandReduction = totalReduction / totalDemand * 100.0; + return converged; } diff --git a/tests/test_pda.cpp b/tests/test_pda.cpp index 7e951c0..6091def 100644 --- a/tests/test_pda.cpp +++ b/tests/test_pda.cpp @@ -79,9 +79,6 @@ BOOST_AUTO_TEST_CASE(test_pda_model) error = EN_getnodeindex(ph, (char *)"21", &index); BOOST_REQUIRE(error == 0); error = EN_getnodevalue(ph, index, EN_DEMANDDEFICIT, &reduction); - - printf("\nreduction = %f", reduction); - BOOST_REQUIRE(error == 0); BOOST_REQUIRE(abs(reduction - 413.67) < 0.01); From 6089b93a51223dc8458e68355b5ba97913595b14 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 2 Jul 2024 20:19:45 -0400 Subject: [PATCH 176/233] Fix refactoring error in hydcoeffs.c --- src/hydcoeffs.c | 2 +- src/leakage.c | 75 +++++++++++++++++++++++++++---------------------- 2 files changed, 42 insertions(+), 35 deletions(-) diff --git a/src/hydcoeffs.c b/src/hydcoeffs.c index 5be8c40..670ff1b 100644 --- a/src/hydcoeffs.c +++ b/src/hydcoeffs.c @@ -575,7 +575,7 @@ void demandcoeffs(Project *pr) for (i = 1; i <= net->Njuncs; i++) { // Skip junctions with non-positive demands - if (hyd->NodeDemand[i] <= 0.0) continue; + if (hyd->FullDemand[i] <= 0.0) continue; // Find head loss for demand outflow at node's elevation demandheadloss(pr, i, dp, n, &hloss, &hgrad); diff --git a/src/leakage.c b/src/leakage.c index cb5cad7..a395053 100644 --- a/src/leakage.c +++ b/src/leakage.c @@ -16,7 +16,7 @@ leaky pipes: Q = Co * L * (Ao + m * H) * sqrt(H) -where Q = leak flow rate, Co = an orifice coefficient (= 0.6*sqrt(2g)), +where Q = pipe leak flow rate, Co = an orifice coefficient (= 0.6*sqrt(2g)), L = pipe length, Ao = initial area of leak per unit of pipe length, m = change in leak area per unit of pressure head, and H = pressure head. @@ -26,7 +26,7 @@ a pipe's end node using a pair of equivalent emitters as follows: H = Cfa * Qfa^2 H = Cva * Qva^(2/3) -where Qfa = fixed area leakage rate, Qva = variable area leakage rate, +where Qfa = fixed area node leakage rate, Qva = variable area node leakage rate, Cfa = 1 / SUM(Co*(L/2)*Ao)^2, Cva = 1 / SUM(Co*(L/2)*m)^2/3, and SUM(x) is the summation of x over all pipes connected to the node. @@ -56,9 +56,9 @@ static void convert_pipe_to_node_leakage(Project *pr); static void init_node_leakage(Project *pr); static int leakage_headloss(Project* pr, int i, double *hfa, double *gfa, double *hva, double *gva); -static void eval_node_leakage(double RQtol, double q, double c, - double n, double *h, double *g); -static void add_lower_barrier(double q, double* h, double* g); +static void eval_leak_headloss(double RQtol, double q, double c, + double n, double *hloss, double *hgrad); +static void add_lower_barrier(double q, double *hloss, double *hgrad); int openleakage(Project *pr) @@ -116,7 +116,7 @@ int create_leakage_objects(Project *pr) /*------------------------------------------------------------- ** Input: none ** Output: returns an error code -** Purpose: allocates an array of Leakage objects. +** Purpose: allocates an array of node leakage objects. **------------------------------------------------------------- */ { @@ -153,9 +153,11 @@ void convert_pipe_to_node_leakage(Project *pr) Slink *link; Snode *node1; Snode *node2; + + // Orifice coeff. with conversion from sq. mm to sq. m + c_orif = 4.8149866 * 1.e-6; // Examine each link - c_orif = 4.8149866 * 1.e-6; for (i = 1; i <= net->Nlinks; i++) { // Only pipes have leakage @@ -371,8 +373,8 @@ double leakageflowchange(Project *pr, int i) Network *net = &pr->network; Hydraul *hyd = &pr->hydraul; - double hfa, gfa, hva, gva, // same as defined in leakage_solvercoeffs() - dh, dqfa, dqva; + double hfa, gfa, hva, gva; // same as defined in leakage_solvercoeffs() + double h, dqfa, dqva; // pressure head, change in leakage flows // Find the head loss and gradient of the inverted leakage // equation for both fixed and variable area leakage at the @@ -380,13 +382,13 @@ double leakageflowchange(Project *pr, int i) if (!leakage_headloss(pr, i, &hfa, &gfa, &hva, &gva)) return 0.0; // Pressure head using latest head solution - dh = hyd->NodeHead[i] - net->Node[i].El; + h = hyd->NodeHead[i] - net->Node[i].El; // GGA flow update formula for fixed area leakage dqfa = 0.0; if (gfa > 0.0) { - dqfa = (hfa - dh) / gfa * hyd->RelaxFactor; + dqfa = (hfa - h) / gfa * hyd->RelaxFactor; hyd->Leakage[i].qfa -= dqfa; } @@ -394,7 +396,7 @@ double leakageflowchange(Project *pr, int i) dqva = 0.0; if (gva > 0.0) { - dqva = (hva - dh) / gva * hyd->RelaxFactor; + dqva = (hva - h) / gva * hyd->RelaxFactor; hyd->Leakage[i].qva -= dqva; } @@ -415,10 +417,10 @@ int leakagehasconverged(Project *pr) { Network *net = &pr->network; Hydraul *hyd = &pr->hydraul; + int i; double h, qref, qtest; - const double ABSTOL = 0.0001; // 0.0001 cfs ~= 0.005 gpm ~= 0.2 lpm) - const double RELTOL = 0.001; + const double QTOL = 0.0001; // 0.0001 cfs ~= 0.005 gpm ~= 0.2 lpm) for (i = 1; i <= net->Njuncs; i++) { @@ -439,7 +441,7 @@ int leakagehasconverged(Project *pr) // Compare reference leakage to solution leakage qtest = hyd->Leakage[i].qfa + hyd->Leakage[i].qva; - if (fabs(qref - qtest) > ABSTOL + RELTOL * qref) return FALSE; + if (fabs(qref - qtest) > QTOL) return FALSE; } return TRUE; } @@ -460,6 +462,7 @@ int leakage_headloss(Project* pr, int i, double *hfa, double *gfa, */ { Hydraul *hyd = &pr->hydraul; + if (hyd->Leakage[i].cfa == 0.0 && hyd->Leakage[i].cva == 0.0) return FALSE; if (hyd->Leakage[i].cfa == 0.0) { @@ -467,58 +470,62 @@ int leakage_headloss(Project* pr, int i, double *hfa, double *gfa, *gfa = 0.0; } else - eval_node_leakage(hyd->RQtol, hyd->Leakage[i].qfa, hyd->Leakage[i].cfa, - 0.5, hfa, gfa); + eval_leak_headloss(hyd->RQtol, hyd->Leakage[i].qfa, hyd->Leakage[i].cfa, + 0.5, hfa, gfa); if (hyd->Leakage[i].cva == 0.0) { *hva = 0.0; *gva = 0.0; } else - eval_node_leakage(hyd->RQtol, hyd->Leakage[i].qva, hyd->Leakage[i].cva, - 1.5, hva, gva); + eval_leak_headloss(hyd->RQtol, hyd->Leakage[i].qva, hyd->Leakage[i].cva, + 1.5, hva, gva); return TRUE; } -void eval_node_leakage(double RQtol, double q, double c, double n, - double *h, double *g) +void eval_leak_headloss(double RQtol, double q, double c, double n, + double *hloss, double *hgrad) /* **-------------------------------------------------------------- ** Input: RQtol = low gradient tolerance (ft/cfs) ** q = leakage flow rate (cfs) ** c = leakage head loss coefficient ** n = leakage head loss exponent -** Output: h = leakage head loss (ft) -** g = gradient of leakage head loss (ft/cfs) +** Output: hloss = leakage head loss (ft) +** hgrad = gradient of leakage head loss (ft/cfs) ** Purpose: evaluates inverted form of leakage equation to ** compute head loss and its gradient as a function ** flow. +** +** Note: Inverted leakage equation is: +** hloss = c * q ^ (1/n) **-------------------------------------------------------------- */ { n = 1.0 / n; - *g = n * c * pow(fabs(q), n - 1.0); + *hgrad = n * c * pow(fabs(q), n - 1.0); // Use linear head loss function for small gradient - if (*g < RQtol) +/* if (*hgrad < RQtol) { - *g = RQtol / n; - *h = (*g) * q; + *hgrad = RQtol / n; + *hloss = (*hgrad) * q; } // Otherwise use normal leakage head loss function - else *h = (*g) * q / n; + else */ + *hloss = (*hgrad) * q / n; // Prevent leakage from going negative - add_lower_barrier(q, h, g); + add_lower_barrier(q, hloss, hgrad); } -void add_lower_barrier(double q, double* h, double* g) +void add_lower_barrier(double q, double* hloss, double* hgrad) /* **-------------------------------------------------------------------- ** Input: q = current flow rate -** Output: h = head loss value -** g = head loss gradient value +** Output: hloss = head loss value +** hgrad = head loss gradient value ** Purpose: adds a head loss barrier to prevent flow from falling ** below 0. **-------------------------------------------------------------------- @@ -526,6 +533,6 @@ void add_lower_barrier(double q, double* h, double* g) { double a = 1.e9 * q; double b = sqrt(a*a + 1.e-6); - *h += (a - b) / 2.; - *g += (1.e9 / 2.) * ( 1.0 - a / b); + *hloss += (a - b) / 2.; + *hgrad += (1.e9 / 2.) * ( 1.0 - a / b); } From 47e345120780a1bd08cc3fe7e24b2c855658a16d Mon Sep 17 00:00:00 2001 From: Elad Salomons Date: Sat, 13 Jul 2024 08:58:28 +0300 Subject: [PATCH 177/233] Update Makefile.bat Update the old build script to support the new leak model files. --- win_build/Makefile.bat | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/win_build/Makefile.bat b/win_build/Makefile.bat index 5f804a7..3000890 100644 --- a/win_build/Makefile.bat +++ b/win_build/Makefile.bat @@ -23,9 +23,9 @@ Find /i "x86" < checkOS.tmp > StringCheck.tmp If %ERRORLEVEL% == 1 ( CALL "%SDK_PATH%bin\"SetEnv.cmd /x64 /release rem : create epanet2.dll - cl -o epanet2.dll epanet.c epanet2.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c project.c quality.c qualroute.c qualreact.c report.c rules.c smatrix.c genmmd.c validate.c /O2 /Depanet2_EXPORTS /I ..\include /I ..\run /link /DLL + cl -o epanet2.dll epanet.c epanet2.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c project.c quality.c qualroute.c qualreact.c report.c rules.c smatrix.c genmmd.c validate.c leakage.c flowbalance.c /O2 /Depanet2_EXPORTS /I ..\include /I ..\run /link /DLL rem : create runepanet.exe - cl -o runepanet.exe epanet.c epanet2.c ..\run\main.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c project.c quality.c qualroute.c qualreact.c report.c rules.c smatrix.c genmmd.c validate.c /O2 /Depanet2_EXPORTS /I ..\include /I ..\run /I ..\src /link + cl -o runepanet.exe epanet.c epanet2.c ..\run\main.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c project.c quality.c qualroute.c qualreact.c report.c rules.c smatrix.c genmmd.c validate.c leakage.c flowbalance.c /O2 /Depanet2_EXPORTS /I ..\include /I ..\run /I ..\src /link md "%Build_PATH%"\64bit move /y "%SRC_PATH%"\*.dll "%Build_PATH%"\64bit move /y "%SRC_PATH%"\*.exe "%Build_PATH%"\64bit @@ -37,9 +37,9 @@ rem : 32 bit with DEF CALL "%SDK_PATH%bin\"SetEnv.cmd /x86 /release echo "32 bit with epanet2.def mapping" rem : create epanet2.dll -cl -o epanet2.dll epanet.c epanet2.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c project.c quality.c qualroute.c qualreact.c report.c rules.c smatrix.c genmmd.c validate.c /O2 /Depanet2_EXPORTS /I ..\include /I ..\run /link /DLL /def:..\include\epanet2.def /MAP +cl -o epanet2.dll epanet.c epanet2.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c project.c quality.c qualroute.c qualreact.c report.c rules.c smatrix.c genmmd.c validate.c leakage.c flowbalance.c /O2 /Depanet2_EXPORTS /I ..\include /I ..\run /link /DLL /def:..\include\epanet2.def /MAP rem : create runepanet.exe -cl -o runepanet.exe epanet.c epanet2.c ..\run\main.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c project.c quality.c qualroute.c qualreact.c report.c rules.c smatrix.c genmmd.c validate.c /O2 /Depanet2_EXPORTS /I ..\include /I ..\run /I ..\src /link +cl -o runepanet.exe epanet.c epanet2.c ..\run\main.c hash.c hydraul.c hydcoeffs.c hydstatus.c hydsolver.c inpfile.c input1.c input2.c input3.c mempool.c output.c project.c quality.c qualroute.c qualreact.c report.c rules.c smatrix.c genmmd.c validate.c leakage.c flowbalance.c /O2 /Depanet2_EXPORTS /I ..\include /I ..\run /I ..\src /link md "%Build_PATH%"\32bit move /y "%SRC_PATH%"\*.dll "%Build_PATH%"\32bit move /y "%SRC_PATH%"\*.exe "%Build_PATH%"\32bit From cbf543f1b5292779b70ae5062d6c3b5e90927982 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Fri, 19 Jul 2024 11:04:19 -0400 Subject: [PATCH 178/233] Code cleanup --- src/leakage.c | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/src/leakage.c b/src/leakage.c index a395053..be1dbc5 100644 --- a/src/leakage.c +++ b/src/leakage.c @@ -56,7 +56,7 @@ static void convert_pipe_to_node_leakage(Project *pr); static void init_node_leakage(Project *pr); static int leakage_headloss(Project* pr, int i, double *hfa, double *gfa, double *hva, double *gva); -static void eval_leak_headloss(double RQtol, double q, double c, +static void eval_leak_headloss(double q, double c, double n, double *hloss, double *hgrad); static void add_lower_barrier(double q, double *hloss, double *hgrad); @@ -470,7 +470,7 @@ int leakage_headloss(Project* pr, int i, double *hfa, double *gfa, *gfa = 0.0; } else - eval_leak_headloss(hyd->RQtol, hyd->Leakage[i].qfa, hyd->Leakage[i].cfa, + eval_leak_headloss(hyd->Leakage[i].qfa, hyd->Leakage[i].cfa, 0.5, hfa, gfa); if (hyd->Leakage[i].cva == 0.0) { @@ -478,17 +478,16 @@ int leakage_headloss(Project* pr, int i, double *hfa, double *gfa, *gva = 0.0; } else - eval_leak_headloss(hyd->RQtol, hyd->Leakage[i].qva, hyd->Leakage[i].cva, + eval_leak_headloss(hyd->Leakage[i].qva, hyd->Leakage[i].cva, 1.5, hva, gva); return TRUE; } -void eval_leak_headloss(double RQtol, double q, double c, double n, +void eval_leak_headloss(double q, double c, double n, double *hloss, double *hgrad) /* **-------------------------------------------------------------- -** Input: RQtol = low gradient tolerance (ft/cfs) -** q = leakage flow rate (cfs) +** Input: q = leakage flow rate (cfs) ** c = leakage head loss coefficient ** n = leakage head loss exponent ** Output: hloss = leakage head loss (ft) @@ -504,17 +503,7 @@ void eval_leak_headloss(double RQtol, double q, double c, double n, { n = 1.0 / n; *hgrad = n * c * pow(fabs(q), n - 1.0); - - // Use linear head loss function for small gradient -/* if (*hgrad < RQtol) - { - *hgrad = RQtol / n; - *hloss = (*hgrad) * q; - } - - // Otherwise use normal leakage head loss function - else */ - *hloss = (*hgrad) * q / n; + *hloss = (*hgrad) * q / n; // Prevent leakage from going negative add_lower_barrier(q, hloss, hgrad); From 53350880c9c1c14f251eb2a2af2606fae79e0054 Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Wed, 31 Jul 2024 19:48:19 +0300 Subject: [PATCH 179/233] Add EN_loadpatternfile, ENloadpatternfile --- include/epanet2.h | 4 ++- include/epanet2_2.h | 9 +++++++ src/epanet.c | 63 +++++++++++++++++++++++++++++++++++++++++++++ src/epanet2.c | 5 ++++ 4 files changed, 80 insertions(+), 1 deletion(-) diff --git a/include/epanet2.h b/include/epanet2.h index 18a7345..fc99a06 100644 --- a/include/epanet2.h +++ b/include/epanet2.h @@ -328,7 +328,7 @@ extern "C" { ********************************************************************/ int DLLEXPORT ENaddpattern(const char *id); - + int DLLEXPORT ENdeletepattern(int index); int DLLEXPORT ENgetpatternindex(const char *id, int *index); @@ -346,6 +346,8 @@ extern "C" { int DLLEXPORT ENgetaveragepatternvalue(int index, EN_API_FLOAT_TYPE *value); int DLLEXPORT ENsetpattern(int index, EN_API_FLOAT_TYPE *values, int len); + + int DLLEXPORT ENloadpatternfile(const char *filename, const char *id); /******************************************************************** diff --git a/include/epanet2_2.h b/include/epanet2_2.h index 1094280..81f2f9f 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -1478,6 +1478,15 @@ typedef struct Project *EN_Project; use @ref EN_setpatternvalue to revise pattern factors one at a time. */ int DLLEXPORT EN_setpattern(EN_Project ph, int index, double *values, int len); + + /** + @brief Loads time patterns from a file into a project under a specific pattern ID. + @param ph an EPANET project handle. + @param filename the name of the file containing pattern data. + @param id the ID name of the new pattern to load. + @return an error code. + */ + int DLLEXPORT EN_loadpatternfile(EN_Project p, const char *filename, const char *id); /******************************************************************** diff --git a/src/epanet.c b/src/epanet.c index 7e68c9d..493f16c 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -4514,6 +4514,69 @@ int DLLEXPORT EN_addpattern(EN_Project p, const char *id) return 0; } +int DLLEXPORT EN_loadpatternfile(EN_Project p, const char *filename, const char *id) +/*---------------------------------------------------------------- +** Input: filename = name of the file containing pattern data +** id = ID for the new pattern +** Output: none +** Returns: error code +** Purpose: loads time patterns from a file into a project under a specific pattern ID +**---------------------------------------------------------------- +*/ +{ + FILE *file; + char line[1024]; + int err = 0; + int i; + double value; + Spattern *pat; + + if (!p->Openflag) return 102; + + file = fopen(filename, "r"); + if (file == NULL) return 102; // Update with new error code + + // Add the new pattern + if ((err = EN_addpattern(p, id)) != 0) { + fclose(file); + return err; + } + + // Get the index of the newly added pattern + if ((err = EN_getpatternindex(p, id, &i)) != 0) { + fclose(file); + return err; + } + + pat = &p->network.Pattern[i]; + // Free the initial allocation + free(pat->F); + pat->F = NULL; + pat->Length = 0; + + // Read pattern values + while (fgets(line, sizeof(line), file) != NULL) { + // Skip comments and empty lines + if (line[0] == ';' || line[0] == '\n') continue; + + // Convert line to a double value + value = atof(line); + if (value == 0 && line[0] != '0') continue; // Skip invalid lines + + pat->Length++; + pat->F = (double *)realloc(pat->F, pat->Length * sizeof(double)); + // Abort if memory allocation error + if (pat->F == NULL) { + fclose(file); + return 101; + } + pat->F[pat->Length - 1] = value; + } + + fclose(file); + return 0; +} + int DLLEXPORT EN_deletepattern(EN_Project p, int index) /*---------------------------------------------------------------- ** Input: index = index of the pattern to delete diff --git a/src/epanet2.c b/src/epanet2.c index c3c8fa2..435a571 100644 --- a/src/epanet2.c +++ b/src/epanet2.c @@ -676,6 +676,11 @@ int DLLEXPORT ENsetpattern(int index, EN_API_FLOAT_TYPE *values, int len) return errcode; } +int DLLEXPORT ENloadpatternfile(const char *filename, const char *id) +{ + return EN_loadpatternfile(_defaultProject, filename, id); +} + /******************************************************************** Data Curve Functions From 03e889d6751351cff44703fe19c20935c5bc5b2a Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Thu, 1 Aug 2024 08:58:13 +0300 Subject: [PATCH 180/233] Update epanet.c Co-Authored-By: Lew Rossman --- src/epanet.c | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 493f16c..ff56e20 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -4525,16 +4525,18 @@ int DLLEXPORT EN_loadpatternfile(EN_Project p, const char *filename, const char */ { FILE *file; - char line[1024]; + char line[MAXLINE+1]; int err = 0; int i; + int len = 0; double value; - Spattern *pat; + double *values = NULL; + int CHUNK = 50; if (!p->Openflag) return 102; file = fopen(filename, "r"); - if (file == NULL) return 102; // Update with new error code + if (file == NULL) return 302; // Add the new pattern if ((err = EN_addpattern(p, id)) != 0) { @@ -4548,33 +4550,31 @@ int DLLEXPORT EN_loadpatternfile(EN_Project p, const char *filename, const char return err; } - pat = &p->network.Pattern[i]; - // Free the initial allocation - free(pat->F); - pat->F = NULL; - pat->Length = 0; - // Read pattern values while (fgets(line, sizeof(line), file) != NULL) { - // Skip comments and empty lines - if (line[0] == ';' || line[0] == '\n') continue; + + // Skip lines that don't contain valid numbers + if (!getfloat(line, &value) continue; + + // Resize multiplier array if it's full + if (len % CHUNK == 0) { + values = (double *) realloc(values, (len + CHUNK) * sizeof(double)); - // Convert line to a double value - value = atof(line); - if (value == 0 && line[0] != '0') continue; // Skip invalid lines - - pat->Length++; - pat->F = (double *)realloc(pat->F, pat->Length * sizeof(double)); - // Abort if memory allocation error - if (pat->F == NULL) { - fclose(file); - return 101; + // Abort if memory allocation error + if (values == NULL) { + fclose(file); + return 101; + } } - pat->F[pat->Length - 1] = value; + values[len] = value; + len++; } - fclose(file); - return 0; + + // Transfer multipliers to pattern + err = EN_setpattern(p, i, values, len); + free(values); + return err; } int DLLEXPORT EN_deletepattern(EN_Project p, int index) From 17b14e2178605b4916dffc9e507249f01566a8fa Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Thu, 1 Aug 2024 09:06:04 +0300 Subject: [PATCH 181/233] fix missing ')' --- src/epanet.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/epanet.c b/src/epanet.c index ff56e20..52c5a5a 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -4554,7 +4554,7 @@ int DLLEXPORT EN_loadpatternfile(EN_Project p, const char *filename, const char while (fgets(line, sizeof(line), file) != NULL) { // Skip lines that don't contain valid numbers - if (!getfloat(line, &value) continue; + if (!getfloat(line, &value)) continue; // Resize multiplier array if it's full if (len % CHUNK == 0) { From b16dacb87e348b8ebe2ee3547bd4ce04373b2fc6 Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Thu, 1 Aug 2024 17:06:32 +0300 Subject: [PATCH 182/233] Add a new pattern or use an existing pattern - EN_loadpatternfile Co-Authored-By: Lew Rossman --- src/epanet.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/epanet.c b/src/epanet.c index 52c5a5a..16e7bf6 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -4538,16 +4538,14 @@ int DLLEXPORT EN_loadpatternfile(EN_Project p, const char *filename, const char file = fopen(filename, "r"); if (file == NULL) return 302; - // Add the new pattern - if ((err = EN_addpattern(p, id)) != 0) { - fclose(file); - return err; - } - - // Get the index of the newly added pattern - if ((err = EN_getpatternindex(p, id, &i)) != 0) { - fclose(file); - return err; + // Add a new pattern or use an existing pattern. + err = EN_getpatternindex(p, id, &i); + if (err == 205) { + if ((err = EN_addpattern(p, id)) != 0) { + fclose(file); + return err; + } + i = p->network.Npats; } // Read pattern values From 3604f3f69312aa7591356bc047ebf0cffec4bfc4 Mon Sep 17 00:00:00 2001 From: "Marios S. Kyriakou" Date: Thu, 1 Aug 2024 22:45:42 +0300 Subject: [PATCH 183/233] fix Co-Authored-By: Lew Rossman --- src/epanet.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/epanet.c b/src/epanet.c index 16e7bf6..71cad74 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -4526,6 +4526,7 @@ int DLLEXPORT EN_loadpatternfile(EN_Project p, const char *filename, const char { FILE *file; char line[MAXLINE+1]; + char *tok; int err = 0; int i; int len = 0; @@ -4552,7 +4553,9 @@ int DLLEXPORT EN_loadpatternfile(EN_Project p, const char *filename, const char while (fgets(line, sizeof(line), file) != NULL) { // Skip lines that don't contain valid numbers - if (!getfloat(line, &value)) continue; + tok = strtok(line, SEPSTR); + if (tok == NULL) continue; + if (!getfloat(tok, &value)) continue; // Resize multiplier array if it's full if (len % CHUNK == 0) { From 626b93a10f781bfd9f5fefb1ce07493d7329e18e Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Mon, 16 Dec 2024 23:30:32 -0500 Subject: [PATCH 184/233] Corrections to 2-compartment tank mixing Fixes volume remaining in mixing zone when there is net outflow from a 2-compartment tank. --- src/qualreact.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/qualreact.c b/src/qualreact.c index f739273..b8067a4 100644 --- a/src/qualreact.c +++ b/src/qualreact.c @@ -7,7 +7,7 @@ Description: computes water quality reactions within pipes and tanks Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 03/12/2024 +Last Updated: 12/16/2024 ****************************************************************************** */ @@ -566,10 +566,10 @@ void tankmix2(Project *pr, int i, double vin, double win, double vnet) // Update segment volumes if (vt > 0.0) { - mixzone->v = vmz; if (vnet > 0.0) { - stagzone->v += vt; + mixzone->v = vmz; + stagzone->v += vt; // Account for mass lost in overflow from stagnant zone vsz = (tank->Vmax) - vmz; @@ -579,14 +579,18 @@ void tankmix2(Project *pr, int i, double vin, double win, double vnet) stagzone->v = vsz; } } - else stagzone->v = MAX(0.0, ((stagzone->v) - vt)); + else + { + stagzone->v = MAX(0.0, ((stagzone->v) - vt)); + mixzone->v = vmz + vt + vnet; + } } else { mixzone->v += vnet; mixzone->v = MIN(mixzone->v, vmz); mixzone->v = MAX(0.0, mixzone->v); - stagzone->v = 0.0; + if (vmz - mixzone->v > 0.0) stagzone->v = 0.0; } // Use quality of mixing zone to represent quality of From 65594132ce022db2be2d32e9bf663c214a585484 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sat, 8 Feb 2025 10:11:13 -0500 Subject: [PATCH 185/233] Close scratch hydraulics file between runs --- src/project.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/project.c b/src/project.c index 80c7697..5e71204 100644 --- a/src/project.c +++ b/src/project.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 06/24/2024 + Last Updated: 02/08/2025 ****************************************************************************** */ @@ -168,10 +168,9 @@ int openhydfile(Project *pr) INT4 version; int errcode = 0; - // If HydFile currently open, then close it if its not a scratch file + // If HydFile currently open, then close it if (pr->outfile.HydFile != NULL) { - if (pr->outfile.Hydflag == SCRATCH) return 0; fclose(pr->outfile.HydFile); pr->outfile.HydFile = NULL; } From 70d5483361312799114225bb1846dc0b863da698 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 11 Feb 2025 15:38:30 -0500 Subject: [PATCH 186/233] Add read/write of disabled controls to input file --- src/inpfile.c | 6 +++++- src/input3.c | 22 +++++++++++++++------- src/rules.c | 17 ++++++++++++++--- src/text.h | 3 ++- 4 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/inpfile.c b/src/inpfile.c index 9945a2a..b91e666 100644 --- a/src/inpfile.c +++ b/src/inpfile.c @@ -7,7 +7,7 @@ Description: saves network data to an EPANET formatted text file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 06/18/2024 +Last Updated: 02/11/2025 ****************************************************************************** */ @@ -519,7 +519,10 @@ int saveinpfile(Project *pr, const char *fname) fprintf(f, "\n%s AT %s %s", s, ControlTxt[TIMEOFDAY], clocktime(rpt->Atime, control->Time)); break; + + default: continue; } + if (control->isEnabled == FALSE) fprintf(f, " DISABLED"); } // Write [RULES] section @@ -529,6 +532,7 @@ int saveinpfile(Project *pr, const char *fname) { fprintf(f, "\nRULE %s", pr->network.Rule[i].label); writerule(pr, f, i); // see RULES.C + if (pr->network.Rule[i].isEnabled == FALSE) fprintf(f, "\nDISABLED"); fprintf(f, "\n"); } diff --git a/src/input3.c b/src/input3.c index 296e752..3d1a89c 100644 --- a/src/input3.c +++ b/src/input3.c @@ -7,7 +7,7 @@ Description: parses network data from a line of an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 05/11/2024 +Last Updated: 02/11/2025 ****************************************************************************** */ @@ -920,10 +920,10 @@ int controldata(Project *pr) ** Purpose: processes simple controls ** Formats: ** [CONTROLS] -** LINK linkID setting IF NODE nodeID {BELOW/ABOVE} level -** LINK linkID setting AT TIME value (units) -** LINK linkID setting AT CLOCKTIME value (units) -** (0) (1) (2) (3) (4) (5) (6) (7) +** LINK linkID setting IF NODE nodeID {BELOW/ABOVE} level (DISABLED) +** LINK linkID setting AT TIME value (units) (DISABLED) +** LINK linkID setting AT CLOCKTIME value (units) (DISABLED) +** (0) (1) (2) (3) (4) (5) (6) (7) (8) **-------------------------------------------------------------- */ { @@ -932,7 +932,8 @@ int controldata(Project *pr) int i = 0, // Node index k, // Link index - n; // # data items + n, // # data items + isEnabled = TRUE; // Control enabled double setting = MISSING, // Link setting time = 0.0, // Simulation time level = 0.0; // Pressure or tank level @@ -944,6 +945,13 @@ int controldata(Project *pr) // Check for sufficient number of input tokens n = parser->Ntokens; if (n < 6) return 201; + + // Check if last token is "DISABLED" + if (match(parser->Tok[n-1], w_DISABLED)) + { + isEnabled = FALSE; + n = n - 1; + } // Check that controlled link exists k = findlink(net, parser->Tok[1]); @@ -1020,7 +1028,7 @@ int controldata(Project *pr) control->Time = (long)(3600.0 * time); if (ctltype == TIMEOFDAY) control->Time %= SECperDAY; control->Grade = level; - control->isEnabled = TRUE; + control->isEnabled = isEnabled; return 0; } diff --git a/src/rules.c b/src/rules.c index cf43365..1b009ad 100644 --- a/src/rules.c +++ b/src/rules.c @@ -1,13 +1,13 @@ /* ****************************************************************************** Project: OWA EPANET - Version: 2.2 + Version: 2.3 Module: rules.c Description: implements rule-based controls Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 05/15/2019 + Last Updated: 02/11/2025 ****************************************************************************** */ @@ -32,10 +32,11 @@ enum Rulewords { r_THEN, r_ELSE, r_PRIORITY, + r_DISABLED, r_ERROR }; char *Ruleword[] = {w_RULE, w_IF, w_AND, w_OR, - w_THEN, w_ELSE, w_PRIORITY, NULL}; + w_THEN, w_ELSE, w_PRIORITY, w_DISABLED, NULL}; enum Varwords { r_DEMAND, @@ -273,6 +274,16 @@ int ruledata(Project *pr) err = newpriority(pr); break; + case r_DISABLED: + if (rules->RuleState != r_THEN && rules->RuleState != r_ELSE && + rules->RuleState != r_PRIORITY) + { + err = 221; + break; + } + net->Rule[net->Nrules].isEnabled = FALSE; + break; + default: err = 201; } diff --git a/src/text.h b/src/text.h index 84b05db..087977e 100755 --- a/src/text.h +++ b/src/text.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 06/15/2024 + Last Updated: 02/11/2025 ****************************************************************************** */ @@ -196,6 +196,7 @@ #define w_THEN "THEN" #define w_ELSE "ELSE" #define w_PRIORITY "PRIO" +#define w_DISABLED "DISABLED" // ------ Input File Section Names ------------------------ From a5bce31b13ea21f7794e2f34d97a40e2158ff843 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Mon, 17 Feb 2025 08:44:28 -0500 Subject: [PATCH 187/233] Fix Trace Node bug when new junction added --- src/epanet.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/epanet.c b/src/epanet.c index 71cad74..38dee56 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1790,6 +1790,7 @@ int DLLEXPORT EN_setqualtype(EN_Project p, int qualType, const char *chemName, qual->Ctol *= Ucf[QUALITY]; if (qual->Qualflag == CHEM) // Chemical analysis { + qual->TraceNode = 0; strncpy(qual->ChemName, chemName, MAXID); strncpy(qual->ChemUnits, chemUnits, MAXID); strncpy(rpt->Field[QUALITY].Units, qual->ChemUnits, MAXID); @@ -1807,10 +1808,16 @@ int DLLEXPORT EN_setqualtype(EN_Project p, int qualType, const char *chemName, } if (qual->Qualflag == AGE) // Water age analysis { + qual->TraceNode = 0; strncpy(qual->ChemName, w_AGE, MAXID); strncpy(qual->ChemUnits, u_HOURS, MAXID); strcpy(rpt->Field[QUALITY].Units, u_HOURS); } + if (qual->Qualflag == NONE) + { + qual->TraceNode = 0; + strcpy(qual->ChemName, ""); + } // When changing from CHEM to AGE or TRACE, nodes initial quality // values must be returned to their original ones @@ -1916,6 +1923,8 @@ int DLLEXPORT EN_addnode(EN_Project p, const char *id, int nodeType, int *index) } // adjust indices of tanks/reservoirs in Rule premises (see RULES.C) adjusttankrules(p, 1); + // adjust index of trace node + if (qual->TraceNode > net->Njuncs - 1) qual->TraceNode += 1; } // Actions taken when a new Tank/Reservoir is added From 054ebf36b5a8f1804c037862990b5f36f5efa634 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Mon, 17 Feb 2025 09:23:35 -0500 Subject: [PATCH 188/233] Adjust Trace Node index when node deleted --- src/epanet.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/epanet.c b/src/epanet.c index 38dee56..cccd107 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1996,6 +1996,7 @@ int DLLEXPORT EN_deletenode(EN_Project p, int index, int actionCode) */ { Network *net = &p->network; + Quality *qual = &p->quality; int i, nodeType, tankindex; Snode *node; @@ -2041,6 +2042,9 @@ int DLLEXPORT EN_deletenode(EN_Project p, int index, int actionCode) // ... update node's entry in the hash table hashtable_update(net->NodeHashTable, net->Node[i].ID, i); } + + // Adjust index of water quality trace node + if (qual->TraceNode > index) qual->TraceNode -= 1; // If deleted node is a tank, remove it from the Tank array if (nodeType != EN_JUNCTION) From 7a1673994ccdae9fac9b29b1bcccaebd77b3baba Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 19 Feb 2025 09:49:09 -0500 Subject: [PATCH 189/233] Set/Get node & link tags added --- include/epanet2.bas | 7 +++-- include/epanet2.cs | 16 +++++++++- include/epanet2.def | 5 +++- include/epanet2.h | 12 +++++--- include/epanet2.pas | 8 +++-- include/epanet2.vb | 7 ++++- include/epanet2_2.h | 25 ++++++++++++++-- include/epanet2_enums.h | 2 +- src/epanet.c | 46 ++++++++++++++++++---------- src/epanet2.c | 13 ++++++-- src/funcs.h | 7 +++-- src/inpfile.c | 33 +++++++++++++-------- src/input2.c | 3 +- src/input3.c | 39 ++++++++++++++++++++++-- src/mempool.c | 2 +- src/project.c | 66 +++++++++++++++++++++++++++++++++++++++-- src/quality.c | 5 ++-- src/qualroute.c | 6 ++-- src/report.c | 6 ++-- src/types.h | 5 +++- 20 files changed, 252 insertions(+), 61 deletions(-) diff --git a/include/epanet2.bas b/include/epanet2.bas index 6ddb0ad..2f4eb5f 100644 --- a/include/epanet2.bas +++ b/include/epanet2.bas @@ -5,7 +5,7 @@ Attribute VB_Name = "Module1" 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) -'Last updated on 06/23/2024 +'Last updated on 02/14/2025 ' These are codes used by the DLL functions Public Const EN_ELEVATION = 0 ' Node parameters @@ -297,8 +297,8 @@ Public Const EN_TRUE = 1 ' boolean true Declare Function ENclose Lib "epanet2.dll" () As Long Declare Function ENgetcomment Lib "epanet2.dll" (ByVal ObjectType As Long, ByVal index As Long, ByVal comment As String) As Long Declare Function ENsetcomment Lib "epanet2.dll" (ByVal ObjectType As Long, ByVal index As Long, ByVal comment As String) As Long - - + Declare Function ENgettag Lib "epanet2.dll" (ByVal ObjectType As Long, ByVal index As Long, ByVal tag As String) As Long + Declare Function ENsettag Lib "epanet2.dll" (ByVal ObjectType As Long, ByVal index As Long, ByVal tag As String) As Long 'Hydraulic Analysis Functions Declare Function ENsolveH Lib "epanet2.dll" () As Long Declare Function ENsaveH Lib "epanet2.dll" () As Long @@ -408,6 +408,7 @@ Public Const EN_TRUE = 1 ' boolean true Declare Function ENsetpatternvalue Lib "epanet2.dll" (ByVal index As Long, ByVal period As Long, ByVal value As Single) As Long Declare Function ENgetaveragepatternvalue Lib "epanet2.dll" (ByVal index As Long, value As Single) As Long Declare Function ENsetpattern Lib "epanet2.dll" (ByVal index As Long, values As Any, ByVal len_ As Long) As Long + Declare Function ENloadpatternfile Lib "epanet2.dll" (ByVal filename As String, ByVal id As String) As Long 'Data Curve Functions Declare Function ENaddcurve Lib "epanet2.dll" (ByVal id As String) As Long diff --git a/include/epanet2.cs b/include/epanet2.cs index 0327c4d..7d1a12d 100644 --- a/include/epanet2.cs +++ b/include/epanet2.cs @@ -3,7 +3,7 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; //epanet2.cs[By Oscar Vegas] -//Last updated on 06/23/2024 +//Last updated on 02/14/2025 //Declarations of functions in the EPANET PROGRAMMERs TOOLKIT //(EPANET2.DLL) for use with C# @@ -303,7 +303,18 @@ namespace EpanetCSharpLibrary [DllImport(EPANETDLL, EntryPoint = "ENsettitle")] public static extern int ENsettitle(string titleline1, string titleline2, string titleline3); + + [DllImport(EPANETDLL, EntryPoint = "ENgetcomment")] + public static extern int ENgetcomment(int type, int index, string comment); + [DllImport(EPANETDLL, EntryPoint = "ENsetcomment")] + public static extern int ENsetcomment(int type, int index, string comment); + + [DllImport(EPANETDLL, EntryPoint = "ENgettag")] + public static extern int ENgettag(int type, int index, string tag); + + [DllImport(EPANETDLL, EntryPoint = "ENsettag")] + public static extern int ENsettag(int type, int index, string tag); [DllImport(EPANETDLL, EntryPoint = "ENsaveinpfile")] public static extern int ENsaveinpfile(string filename); @@ -600,6 +611,9 @@ namespace EpanetCSharpLibrary [DllImport(EPANETDLL, EntryPoint = "ENsetpattern")] public static extern int ENsetpattern(int index, ref float[] values, int len); + [DllImport(EPANETDLL, EntryPoint = "ENloadpatternfile")] + public static extern int ENdeletepattern(string filename, string id); + //Data Curve Functions [DllImport(EPANETDLL, EntryPoint = "ENaddcurve")] diff --git a/include/epanet2.def b/include/epanet2.def index d3472c1..12c4bd7 100644 --- a/include/epanet2.def +++ b/include/epanet2.def @@ -68,6 +68,7 @@ EXPORTS ENgetruleenabled = _ENgetruleenabled@8 ENgetruleID = _ENgetruleID@8 ENgetstatistic = _ENgetstatistic@8 + ENgettag = _ENgettag@12 ENgetthenaction = _ENgetthenaction@20 ENgettimeparam = _ENgettimeparam@8 ENgettitle = _ENgettitle@12 @@ -76,7 +77,8 @@ EXPORTS ENgetvertexcount = _ENgetvertexcount@8 ENinit = _ENinit@16 ENinitH = _ENinitH@4 - ENinitQ = _ENinitQ@4 + ENinitQ = _ENinitQ@4 + ENloadpatternfile = _ENloadpatternfile@8 ENnextH = _ENnextH@4 ENnextQ = _ENnextQ@4 ENopen = _ENopen@12 @@ -126,6 +128,7 @@ EXPORTS ENsetruleenabled = _ENsetruleenabled@8 ENsetrulepriority = _ENsetrulepriority@8 ENsetstatusreport = _ENsetstatusreport@4 + ENsettag = _ENsettag@12 ENsettankdata = _ENsettankdata@32 ENsetthenaction = _ENsetthenaction@20 ENsettimeparam = _ENsettimeparam@8 diff --git a/include/epanet2.h b/include/epanet2.h index fc99a06..7022c34 100644 --- a/include/epanet2.h +++ b/include/epanet2.h @@ -1,13 +1,13 @@ /* ****************************************************************************** Project: OWA EPANET - Version: 2.2 + Version: 2.3 Module: epanet2.h Description: declarations of the legacy style EPANET 2 API functions Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 09/28/2023 + Last Updated: 02/14/2025 ****************************************************************************** */ @@ -84,6 +84,10 @@ extern "C" { int DLLEXPORT ENsetcomment(int object, int index, const char *comment); + int DLLEXPORT ENgettag(int object, int index, char *tag); + + int DLLEXPORT ENsettag(int object, int index, const char *tag); + int DLLEXPORT ENgetcount(int object, int *count); int DLLEXPORT ENsaveinpfile(const char *filename); @@ -328,7 +332,7 @@ extern "C" { ********************************************************************/ int DLLEXPORT ENaddpattern(const char *id); - + int DLLEXPORT ENdeletepattern(int index); int DLLEXPORT ENgetpatternindex(const char *id, int *index); @@ -346,7 +350,7 @@ extern "C" { int DLLEXPORT ENgetaveragepatternvalue(int index, EN_API_FLOAT_TYPE *value); int DLLEXPORT ENsetpattern(int index, EN_API_FLOAT_TYPE *values, int len); - + int DLLEXPORT ENloadpatternfile(const char *filename, const char *id); /******************************************************************** diff --git a/include/epanet2.pas b/include/epanet2.pas index 6f2e8da..a66a0bd 100644 --- a/include/epanet2.pas +++ b/include/epanet2.pas @@ -3,7 +3,7 @@ unit epanet2; { Declarations of imported procedures from the EPANET PROGRAMMERs TOOLKIT } { (EPANET2.DLL) } -{Last updated on 06/06/2024} +{Last updated on 02/14/2025} interface @@ -314,6 +314,8 @@ const function ENsettitle(Line1: PAnsiChar; Line2: PAnsiChar; Line3: PAnsiChar): Integer; cdecl; external EpanetLib; function ENgetcomment(ObjType: Integer; Index: Integer; Comment: PAnsiChar): Integer; cdecl; external EpanetLib; function ENsetcomment(ObjType: Integer; Index: Integer; Comment: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENgettag(ObjType: Integer; Index: Integer; Tag: PAnsiChar): Integer; cdecl; external EpanetLib; + function ENsettag(ObjType: Integer; Index: Integer; Tag: PAnsiChar): Integer; cdecl; external EpanetLib; function ENsaveinpfile(F: PAnsiChar): Integer; cdecl; external EpanetLib; function ENclose: Integer; cdecl; external EpanetLib; @@ -473,8 +475,8 @@ const var Status: Integer; var Setting: Single): Integer; cdecl; external EpanetLib; function ENsetelseaction(RuleIndex: Integer; ActionIndex: Integer; LinkIndex: Integer; Status: Integer; Setting: Single): Integer; cdecl; external EpanetLib; - function ENgetruleenabled(Index: Integer; out_enabled: Integer): Integer; cdecl; external EpanetLib; - function ENsetruleenabled(Index: Integer; var enabled: Integer): Integer; cdecl; external EpanetLib; + function ENgetruleenabled(Index: Integer; var enabled: Integer): Integer; cdecl; external EpanetLib; + function ENsetruleenabled(Index: Integer; enabled: Integer): Integer; cdecl; external EpanetLib; implementation diff --git a/include/epanet2.vb b/include/epanet2.vb index a7b3179..a73f28c 100644 --- a/include/epanet2.vb +++ b/include/epanet2.vb @@ -4,7 +4,7 @@ 'Declarations of functions in the EPANET PROGRAMMERs TOOLKIT '(EPANET2.DLL) for use with VB.Net. -'Last updated on 06/23/2024 +'Last updated on 02/14/2025 Imports System.Runtime.InteropServices Imports System.Text @@ -281,6 +281,10 @@ Public Const EN_TRUE = 1 ' boolean true Declare Function ENopenX Lib "epanet2.dll" (ByVal inpFile As String, ByVal rptFile As String, ByVal outFile As String) As Int32 Declare Function ENgettitle Lib "epanet2.dll" (ByVal titleline1 As String, ByVal titleline2 As String, ByVal titleline3 As String) As Int32 Declare Function ENsettitle Lib "epanet2.dll" (ByVal titleline1 As String, ByVal titleline2 As String, ByVal titleline3 As String) As Int32 + Declare Function ENgetcomment Lib "epanet2.dll" (ByVal type_ As Int32, ByVal index As Int32, ByVal comment As String) As Int32 + Declare Function ENsetcomment Lib "epanet2.dll" (ByVal type_ As Int32, ByVal index As Int32, ByVal comment As String) As Int32 + Declare Function ENgettag Lib "epanet2.dll" (ByVal type_ As Int32, ByVal index As Int32, ByVal tag As String) As Int32 + Declare Function ENsettag Lib "epanet2.dll" (ByVal type_ As Int32, ByVal index As Int32, ByVal tag As String) As Int32 Declare Function ENsaveinpfile Lib "epanet2.dll" (ByVal filename As String) As Int32 Declare Function ENclose Lib "epanet2.dll" () As Int32 @@ -393,6 +397,7 @@ Public Const EN_TRUE = 1 ' boolean true Declare Function ENsetpatternvalue Lib "epanet2.dll" (ByVal index As Int32, ByVal period As Int32, ByVal value As Single) As Int32 Declare Function ENgetaveragepatternvalue Lib "epanet2.dll" (ByVal index As Int32, value As Single) As Int32 Declare Function ENsetpattern Lib "epanet2.dll" (ByVal index As Int32, values As Any, ByVal len_ As Int32) As Int32 + Declare Function ENloadpatternfile Lib "epanet2.dll" (ByVal filename As String, ByVal id As String) As Int32 'Data Curve Functions Declare Function ENaddcurve Lib "epanet2.dll" (ByVal id As String) As Int32 diff --git a/include/epanet2_2.h b/include/epanet2_2.h index 81f2f9f..287c9c6 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -5,13 +5,13 @@ /* ****************************************************************************** Project: OWA EPANET - Version: 2.2 + Version: 2.3 Module: epanet2.h Description: API function declarations Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 09/28/2023 + Last Updated: 02/14/2025 ****************************************************************************** */ @@ -184,6 +184,27 @@ typedef struct Project *EN_Project; int DLLEXPORT EN_setcomment(EN_Project ph, int object, int index, const char *comment); + /** + @brief Retrieves a tag string assigned to a Node or Link. + @param ph an EPANET project handle. + @param object a type of object (either EN_NODE or EN_LINK) + @param index the object's index starting from 1 + @param[out] out_tag the tag string assigned to the object + @return an error code + */ + int DLLEXPORT EN_gettag(EN_Project ph, int object, int index, char *out_tag); + + /** + @brief Assigns a tag string to a Node or Link. + @param ph an EPANET project handle. + @param object a type of object (either EN_NODE or EN_LINK) + @param index the object's index starting from 1 + @param tag the tag string assigned to the object + @return an error code + */ + int DLLEXPORT EN_settag(EN_Project ph, int object, int index, + const char *tag); + /** @brief Retrieves the number of objects of a given type in a project. @param ph an EPANET project handle. diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index 4fc7755..fdfd2cd 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -9,7 +9,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 07/17/2023 + Last Updated: 02/14/2025 ****************************************************************************** */ diff --git a/src/epanet.c b/src/epanet.c index cccd107..3b6a0d7 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 06/26/2024 + Last Updated: 02/14/2025 ****************************************************************************** */ @@ -203,7 +203,6 @@ int DLLEXPORT EN_openX(EN_Project p, const char *inpFile, return openproject(p, inpFile, rptFile, outFile, TRUE); } - int DLLEXPORT EN_gettitle(EN_Project p, char *line1, char *line2, char *line3) /*---------------------------------------------------------------- ** Input: None @@ -263,6 +262,32 @@ int DLLEXPORT EN_setcomment(EN_Project p, int object, int index, return setcomment(&p->network, object, index, comment); } +int DLLEXPORT EN_gettag(EN_Project p, int object, int index, char *tag) +/*---------------------------------------------------------------- +** Input: object = either EN_NODE or EN_LINK +** index = the object's index +** Output: tag = the tag string assigned to the object +** Returns: error code +** Purpose: Retrieves an object's tag string +**---------------------------------------------------------------- +*/ +{ + return gettag(&p->network, object, index, tag); +} + +int DLLEXPORT EN_settag(EN_Project p, int object, int index, + const char *tag) +/*---------------------------------------------------------------- +** Input: object = either EN_NODE or EN_LINK +** index = the object's index +** tag = a descriptive comment to assign +** Returns: error code +** Purpose: Assigns a tag string to an object +**---------------------------------------------------------------- +*/ +{ + return settag(&p->network, object, index, tag); +} int DLLEXPORT EN_getcount(EN_Project p, int object, int *count) /*---------------------------------------------------------------- ** Input: object = type of object to count (see EN_CountType) @@ -1790,7 +1815,6 @@ int DLLEXPORT EN_setqualtype(EN_Project p, int qualType, const char *chemName, qual->Ctol *= Ucf[QUALITY]; if (qual->Qualflag == CHEM) // Chemical analysis { - qual->TraceNode = 0; strncpy(qual->ChemName, chemName, MAXID); strncpy(qual->ChemUnits, chemUnits, MAXID); strncpy(rpt->Field[QUALITY].Units, qual->ChemUnits, MAXID); @@ -1808,16 +1832,10 @@ int DLLEXPORT EN_setqualtype(EN_Project p, int qualType, const char *chemName, } if (qual->Qualflag == AGE) // Water age analysis { - qual->TraceNode = 0; strncpy(qual->ChemName, w_AGE, MAXID); strncpy(qual->ChemUnits, u_HOURS, MAXID); strcpy(rpt->Field[QUALITY].Units, u_HOURS); } - if (qual->Qualflag == NONE) - { - qual->TraceNode = 0; - strcpy(qual->ChemName, ""); - } // When changing from CHEM to AGE or TRACE, nodes initial quality // values must be returned to their original ones @@ -1923,8 +1941,6 @@ int DLLEXPORT EN_addnode(EN_Project p, const char *id, int nodeType, int *index) } // adjust indices of tanks/reservoirs in Rule premises (see RULES.C) adjusttankrules(p, 1); - // adjust index of trace node - if (qual->TraceNode > net->Njuncs - 1) qual->TraceNode += 1; } // Actions taken when a new Tank/Reservoir is added @@ -1974,6 +1990,7 @@ int DLLEXPORT EN_addnode(EN_Project p, const char *id, int nodeType, int *index) node->X = MISSING; node->Y = MISSING; node->Comment = NULL; + node->Tag = NULL; // Insert new node into hash table hashtable_insert(net->NodeHashTable, node->ID, nIdx); @@ -1996,7 +2013,6 @@ int DLLEXPORT EN_deletenode(EN_Project p, int index, int actionCode) */ { Network *net = &p->network; - Quality *qual = &p->quality; int i, nodeType, tankindex; Snode *node; @@ -2034,6 +2050,7 @@ int DLLEXPORT EN_deletenode(EN_Project p, int index, int actionCode) freedemands(node); free(node->S); free(node->Comment); + free(node->Tag); // Shift position of higher entries in Node & Coord arrays down one for (i = index; i <= net->Nnodes - 1; i++) @@ -2042,9 +2059,6 @@ int DLLEXPORT EN_deletenode(EN_Project p, int index, int actionCode) // ... update node's entry in the hash table hashtable_update(net->NodeHashTable, net->Node[i].ID, i); } - - // Adjust index of water quality trace node - if (qual->TraceNode > index) qual->TraceNode -= 1; // If deleted node is a tank, remove it from the Tank array if (nodeType != EN_JUNCTION) @@ -3396,6 +3410,7 @@ int DLLEXPORT EN_addlink(EN_Project p, const char *id, int linkType, link->Rpt = 0; link->ResultIndex = 0; link->Comment = NULL; + link->Tag = NULL; link->Vertices = NULL; hashtable_insert(net->LinkHashTable, link->ID, n); @@ -3448,6 +3463,7 @@ int DLLEXPORT EN_deletelink(EN_Project p, int index, int actionCode) // Remove link's comment and vertices free(link->Comment); + free(link->Tag); freelinkvertices(link); // Shift position of higher entries in Link array down one diff --git a/src/epanet2.c b/src/epanet2.c index 435a571..2bbc75f 100644 --- a/src/epanet2.c +++ b/src/epanet2.c @@ -1,13 +1,13 @@ /* ****************************************************************************** Project: OWA EPANET - Version: 2.2 + Version: 2.3 Module: epanet2.c Description: implementation of the legacy EPANET API functions Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 09/28/2023 + Last Updated: 02/14/2025 ****************************************************************************** */ @@ -127,6 +127,15 @@ int DLLEXPORT ENsetcomment(int object, int index, const char *comment) return EN_setcomment(_defaultProject, object, index, comment); } +int DLLEXPORT ENgettag(int object, int index, char *tag) +{ + return EN_gettag(_defaultProject, object, index, tag); +} + +int DLLEXPORT ENsettag(int object, int index, const char *tag) +{ + return EN_settag(_defaultProject, object, index, tag); +} int DLLEXPORT ENgetcount(int object, int *count) { return EN_getcount(_defaultProject, object, count); diff --git a/src/funcs.h b/src/funcs.h index 87a6be2..2fae94b 100755 --- a/src/funcs.h +++ b/src/funcs.h @@ -1,13 +1,13 @@ /* ****************************************************************************** Project: OWA EPANET - Version: 2.2 + Version: 2.3 Module: funcs.h Description: prototypes of external functions called by various modules Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 06/26/2024 + Last Updated: 02/14/2025 ****************************************************************************** */ #ifndef FUNCS_H @@ -54,6 +54,8 @@ int setcontrol(Project *, int, int, double, int, double, Scontrol *); int getcomment(Network *, int, int, char *); int setcomment(Network *, int, int, const char *); +int gettag(Network *, int, int, char *); +int settag(Network *, int, int, const char *); int namevalid(const char *); void getTmpName(char *); @@ -109,6 +111,7 @@ int reportdata(Project *); int timedata(Project *); int optiondata(Project *); int vertexdata(Project *); +int tagdata(Project *); // ------- RULES.C ------------------ diff --git a/src/inpfile.c b/src/inpfile.c index b91e666..da69fd0 100644 --- a/src/inpfile.c +++ b/src/inpfile.c @@ -7,7 +7,7 @@ Description: saves network data to an EPANET formatted text file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 02/11/2025 +Last Updated: 02/14/2025 ****************************************************************************** */ @@ -44,7 +44,6 @@ void saveauxdata(Project *pr, FILE *f) { int sect, newsect; char *tok; - char write; char line[MAXLINE + 1]; char s[MAXLINE + 1]; FILE *InFile = pr->parser.InFile; @@ -79,7 +78,6 @@ void saveauxdata(Project *pr, FILE *f) { case _LABELS: case _BACKDROP: - case _TAGS: fprintf(f, "\n%s", line); } } @@ -88,22 +86,15 @@ void saveauxdata(Project *pr, FILE *f) // Write line of auxilary data to file else { - write = FALSE; switch (sect) { - case _TAGS: - if (*tok == ';' || - (match("NODE", tok) && findnode(&pr->network, strtok(NULL, SEPSTR))) || - (match("LINK", tok) && findlink(&pr->network, strtok(NULL, SEPSTR)))) - write = TRUE; - break; case _LABELS: case _BACKDROP: - write = TRUE; break; + fprintf(f, "%s", line); + break; default: break; } - if (write) fprintf(f, "%s", line); } } fclose(InFile); @@ -834,7 +825,23 @@ int saveinpfile(Project *pr, const char *fname) } else fprintf(f, "\n %-20sNO",field->Name); } - + + // Write [TAGS] section + fprintf(f, "\n\n"); + fprintf(f, s_TAGS); + fprintf(f, "\n;;%-8s\t%-31s\t%s", "Object", "ID", "Tag"); + for (i = 1; i <= net->Nnodes; i++) + { + node = &net->Node[i]; + if (node->Tag == NULL || strlen(node->Tag) == 0) continue; + fprintf(f, "\n %-8s\t%-31s\t%s", "NODE", node->ID, node->Tag); + } + for (i = 1; i <= net->Nlinks; i++) + { + link = &net->Link[i]; + if (link->Tag == NULL || strlen(link->Tag) == 0) continue; + fprintf(f, "\n %-8s\t%-31s\t%s", "LINK", link->ID, link->Tag); + } // Write [COORDINATES] section fprintf(f, "\n\n"); fprintf(f, s_COORDS); diff --git a/src/input2.c b/src/input2.c index f1ce8bf..9303840 100644 --- a/src/input2.c +++ b/src/input2.c @@ -7,7 +7,7 @@ Description: reads and interprets network data from an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 09/28/2023 +Last Updated: 02/14/2025 ****************************************************************************** */ @@ -320,6 +320,7 @@ int newline(Project *pr, int sect, char *line) case _REPORT: return (reportdata(pr)); case _TIMES: return (timedata(pr)); case _OPTIONS: return (optiondata(pr)); + case _TAGS: return (tagdata(pr)); case _COORDS: return (coordata(pr)); case _VERTICES: return (vertexdata(pr)); diff --git a/src/input3.c b/src/input3.c index 3d1a89c..281c09b 100644 --- a/src/input3.c +++ b/src/input3.c @@ -7,7 +7,7 @@ Description: parses network data from a line of an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 02/11/2025 +Last Updated: 02/14/2025 ****************************************************************************** */ @@ -2023,7 +2023,7 @@ int optionchoice(Project *pr, int n) int optionvalue(Project *pr, int n) /* **------------------------------------------------------------- -** Input: *line = line read from input file +** Input: n = index of last input token ** Output: returns error code ** Purpose: processes numerical value [OPTIONS] data ** Formats: @@ -2170,7 +2170,42 @@ int optionvalue(Project *pr, int n) return 0; } +int tagdata(Project *pr) +/* +**------------------------------------------------------------- +** Input: none +** Output: returns error code +** Purpose: processes [TAGS] data +** Formats: +** NODE id tag +** LINK id tag +**-------------------------------------------------------------- +*/ +{ + Network *net = &pr->network; + Parser *parser = &pr->parser; + int j, n; + + // Check for sufficient data + n = parser->Ntokens; + if (n < 3) return 201; + + // First keyword is NODE + if (match(parser->Tok[0], w_NODE)) + { + if ((j = findnode(net, parser->Tok[1])) == 0) return setError(parser, 0, 203); + xstrcpy(&net->Node[j].Tag, parser->Tok[2], MAXMSG); + } + + // First keyword is LINK + else if (match(parser->Tok[0], w_LINK)) + { + if ((j = findlink(net, parser->Tok[1])) == 0) return setError(parser, 0, 203); + xstrcpy(&net->Link[j].Tag, parser->Tok[2], MAXMSG); + } + return 0; +} void changestatus(Network *net, int j, StatusType status, double y) /* **-------------------------------------------------------------- diff --git a/src/mempool.c b/src/mempool.c index 81087eb..f95ac29 100755 --- a/src/mempool.c +++ b/src/mempool.c @@ -9,7 +9,7 @@ License: see LICENSE Last Updated: 08/02/2023 - This module is based code by Steve Hill in Graphics Gems III, + This module is based on code by Steve Hill in Graphics Gems III, David Kirk (ed.), Academic Press, Boston, MA, 1992 ****************************************************************************** */ diff --git a/src/project.c b/src/project.c index 5e71204..217e633 100644 --- a/src/project.c +++ b/src/project.c @@ -1,13 +1,13 @@ /* ****************************************************************************** Project: OWA EPANET - Version: 2.2 + Version: 2.3 Module: project.c Description: project data management routines Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/08/2025 + Last Updated: 02/14/2025 ****************************************************************************** */ @@ -448,11 +448,13 @@ int allocdata(Project *pr) pr->network.Node[n].D = NULL; // node demand pr->network.Node[n].S = NULL; // node source pr->network.Node[n].Comment = NULL; + pr->network.Node[n].Tag = NULL; } for (n = 0; n <= pr->parser.MaxLinks; n++) { pr->network.Link[n].Vertices = NULL; pr->network.Link[n].Comment = NULL; + pr->network.Link[n].Tag = NULL; } } @@ -495,6 +497,7 @@ void freedata(Project *pr) freedemands(&(pr->network.Node[j])); free(pr->network.Node[j].S); free(pr->network.Node[j].Comment); + free(pr->network.Node[j].Tag); } free(pr->network.Node); } @@ -506,6 +509,7 @@ void freedata(Project *pr) { freelinkvertices(&pr->network.Link[j]); free(pr->network.Link[j].Comment); + free(pr->network.Link[j].Tag); } } free(pr->network.Link); @@ -1357,6 +1361,64 @@ int setcomment(Network *network, int object, int index, const char *newcomment) network->Curve[index].Comment = xstrcpy(&comment, newcomment, MAXMSG); return 0; + +int gettag(Network *network, int object, int index, char *tag) +//---------------------------------------------------------------- +// Input: object = a type of network object +// index = index of the specified object +// tag = the object's tag string +// Output: error code +// Purpose: gets the tag string assigned to an object. +//---------------------------------------------------------------- +{ + char *currenttag; + + // Get pointer to specified object's tag + switch (object) + { + case NODE: + if (index < 1 || index > network->Nnodes) return 251; + currenttag = network->Node[index].Tag; + break; + case LINK: + if (index < 1 || index > network->Nlinks) return 251; + currenttag = network->Link[index].Tag; + break; + default: + strcpy(tag, ""); + return 251; + } + // Copy the object's tag to the returned string + if (currenttag) strcpy(tag, currenttag); + else tag[0] = '\0'; + return 0; +} + +int settag(Network *network, int object, int index, const char *newtag) +//---------------------------------------------------------------- +// Input: object = a type of network object +// index = index of the specified object +// newtag = new tag string +// Output: error code +// Purpose: sets the tag string of an object. +//---------------------------------------------------------------- +{ + char *tag; + + switch (object) + { + case NODE: + if (index < 1 || index > network->Nnodes) return 251; + tag = network->Node[index].Tag; + network->Node[index].Tag = xstrcpy(&tag, newtag, MAXMSG); + return 0; + + case LINK: + if (index < 1 || index > network->Nlinks) return 251; + tag = network->Link[index].Tag; + network->Link[index].Tag = xstrcpy(&tag, newtag, MAXMSG); + return 0; + default: return 251; } } diff --git a/src/quality.c b/src/quality.c index 0739c15..79642a9 100644 --- a/src/quality.c +++ b/src/quality.c @@ -1,13 +1,13 @@ /* ****************************************************************************** Project: OWA EPANET -Version: 2.2 +Version: 2.3 Module: quality.c Description: implements EPANET's water quality engine Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 02/03/2020 +Last Updated: 02/14/2025 ****************************************************************************** */ @@ -183,6 +183,7 @@ int initqual(Project *pr) qual->MassBalance.reacted = 0.0; qual->MassBalance.final = 0.0; qual->MassBalance.ratio = 0.0; + qual->MassBalance.segCount = 0; return errcode; } diff --git a/src/qualroute.c b/src/qualroute.c index 144be67..30294f5 100644 --- a/src/qualroute.c +++ b/src/qualroute.c @@ -1,13 +1,13 @@ /* ****************************************************************************** Project: OWA EPANET -Version: 2.2 +Version: 2.3 Module: qualroute.c Description: computes water quality transport over a single time step Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 08/02/2023 +Last Updated: 02/14/2025 ****************************************************************************** */ @@ -183,6 +183,7 @@ void evalnodeinflow(Project *pr, int k, long tstep, double *volin, // ... recycle the used up segment seg->prev = qual->FreeSeg; qual->FreeSeg = seg; + qual->MassBalance.segCount--; } // ... otherwise just reduce this segment's volume @@ -691,4 +692,5 @@ void addseg(Project *pr, int k, double v, double c) if (qual->FirstSeg[k] == NULL) qual->FirstSeg[k] = seg; if (qual->LastSeg[k] != NULL) qual->LastSeg[k]->prev = seg; qual->LastSeg[k] = seg; + qual->MassBalance.segCount++; } diff --git a/src/report.c b/src/report.c index 25bb137..676b7d1 100644 --- a/src/report.c +++ b/src/report.c @@ -1,13 +1,13 @@ /* ****************************************************************************** Project: OWA EPANET - Version: 2.2 + Version: 2.3 Module: report.c Description: procedures for writing formatted text to a report file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 07/22/2019 + Last Updated: 02/14/2025 ****************************************************************************** */ @@ -501,6 +501,8 @@ void writemassbalance(Project *pr) writeline(pr, s1); snprintf(s1, MAXMSG, "Mass Ratio: %-.5f", qual->MassBalance.ratio); writeline(pr, s1); + snprintf(s1, MAXMSG, "Total Segments: %d", qual->MassBalance.segCount); + writeline(pr, s1); snprintf(s1, MAXMSG, "================================\n"); writeline(pr, s1); } diff --git a/src/types.h b/src/types.h index 30fd64e..53b97b1 100755 --- a/src/types.h +++ b/src/types.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 06/15/2024 + Last Updated: 02/14/2025 ****************************************************************************** */ @@ -398,6 +398,7 @@ typedef struct // Node Object int ResultIndex; // saved result index NodeType Type; // node type char *Comment; // node comment + char *Tag; // optional category tag } Snode; typedef struct // Link Object @@ -421,6 +422,7 @@ typedef struct // Link Object int Rpt; // reporting flag int ResultIndex; // saved result index char *Comment; // link comment + char *Tag; // optional category tag } Slink; typedef struct // Tank Object @@ -549,6 +551,7 @@ typedef struct // Mass Balance Components double reacted; // mass reacted in system double final; // final mass in system double ratio; // ratio of mass added to mass lost + int segCount; // total number of pipe segments used } SmassBalance; typedef struct From bb543a08dc481c50bb349c1c90fd3923e4d31eb9 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 19 Feb 2025 09:58:19 -0500 Subject: [PATCH 190/233] Unit test for get/set tags --- ReleaseNotes2_3.md | 170 ++++++++++++++++++++++++++++++-------------- tests/test_node.cpp | 39 +++++++++- 2 files changed, 153 insertions(+), 56 deletions(-) diff --git a/ReleaseNotes2_3.md b/ReleaseNotes2_3.md index e561ee8..9b8ab16 100644 --- a/ReleaseNotes2_3.md +++ b/ReleaseNotes2_3.md @@ -3,70 +3,132 @@ This document describes the changes and updates that have been made in version 2.3 of EPANET. - - The check for at least two nodes, one tank/reservoir and no unconnected junction nodes was moved from `EN_open` to `EN_openH` and `EN_openQ` so that partial network data files could be opened by the toolkit. - +### New Features + - A `EN_setcurvetype` function was added to allow API clients to set a curve's type (e.g., `EN_PUMP_CURVE,` `EN_VOLUME_CURVE,` etc.). + - A `EN_setvertex` function was added to allow API clients to change the coordinates of a single link vertex. - - The indices of a General Purpose Valve (GPV) and a Positional Control Valve (PCV) were added to the list of editable Link Properties using the symbolic constant names `EN_GPV_CURVE` and `EN_PCV_CURVE`, respectively. - - The `EN_getlinkvalue` and `EN_setlinkvalue` functions were updated to get and set the values of `EN_GPV_CURVE` and `EN_PCV_CURVE`. - - Negative pressure values for `EN_SETTING` are now permitted in the `EN_setlinkvalue` function. - - The `EN_STARTTIME` parameter was added into the `EN_settimeparam` function. - - A `EN_DEMANDPATTERN` parameter was added as the index of the default time pattern used by demands with no specific pattern assigned. It can be set or retrieved with the `EN_setoption` and `EN_getoption` functions, respectively, and is saved to the file when the `EN_saveinpfile` function is called. - - The `EN_getaveragepatternvalue` function will now accept a pattern index of zero which represents the constant pattern assigned to junction demands by default. - - The adjustment of a tank's minimum volume (`Vmin`) when its parameters are changed using `EN_setnodevalue` or `EN_settankdata` has been corrected. - - A pump whose status is set to CLOSED in the input file now also has its speed setting set to zero which allows a simple pressure control to activate the pump correctly. - - A failure to raise an error condition for a non-positive pipe roughness in the input file has been fixed. - - The calculation of head loss gradient for low flow conditions was corrected. - - Improved updating and convergence tests were added to pressure-dependent demand analysis. - - Improved checks to prevent outflow from empty tanks or inflow to full (non-overflow) tanks, including the case where a link is connected to a pair of tanks, were added. - - The CI regression test protocol was modified by: - - changing the absolute tolerance used to compare the closeness of test results to benchmark values from 0 to 0.0001 - - dropping the "correct decimal digits" test - - dropping the check for identical status report content since it prevents accepting code changes that produce more accurate solutions in fewer iterations. - - A possible loss of network connectivity when evaluating a Pressure Sustaining Valve was prevented. - - Having the implied loss coefficient for an active Flow Control Valve be less than its fully opened value was prevented. - - A new type of valve, a Positional Control Valve (PCV), was added. It uses a valve characteristic curve to relate its loss coefficient to a percentage open setting (parameter - `EN_PCV`). - - `EN_VALVE_CURVE` can now be used with the `EN_getcurvetype` and `EN_setcurvetype` to get or set the valve position curve. - - A new set of functions has been added to get information about upcoming time step events. Users will now see what type of event is going to cause the end of a time step to occur. See `EN_timetonextevent`. - - A new set of functions has been added to allow users to set a reporting callback function. The user-supplied function will receive all output normally directed to the report file. - - A `EN_EMITBACKFLOW` option was added that either allows emitters to have reverse flow through them (the default) or not. - - An incorrect tank elevation value set using `EN_settankdata` with SI units has been fixed. - - The `EN_INITSETTING` option in function `EN_getlinkvalue` will now return `EN_MISSING` for a valve whose initial status is fixed to `EN_OPEN` or `EN_CLOSED`. - - The functions `EN_getnodevalue` and `EN_getlinkvalue` now include the options `EN_NODE_INCONTROL` and `EN_LINK_INCONTROL` to determine whether a node or link appears in any simple or rule-based control. - - An error is no longer raised when a minor loss coefficient of zero is assigned in `EN_setlinkvalue(ph, index, EN_MINORLOSS, 0)`. - - The incorrect display of unconnected nodes has been fixed. - - A header file for binding C# to the Toolkit has been added. - - A new error code `263 - node is not a tank` is returned when `EN_settankdata` or `EN_setnodevalue` attempts to set a tank-only parameter for a non-tank node. - - The function `EN_saveinpfile` was corrected for simple controls on GPV's by saving their status instead of the index of their head loss curve. - - Support was added for Conan dependency manager. - - The internal Qualflag variable is now adjusted when an EPANET input file has a QUALITY option not equal to NONE and a simulation duration of zero. - - Support was added for cubic meters per second (`EN_CMS`) flow units. - - An EPANET input file with simple timer control that has more than 9 input tokens no longer results in an incorrect hour setting. - - Errors in node and link vertex coordinates are now ignored when reading an EPANET input file. - - Only non-zero demands are now included in the `[DEMANDS]` section of the input file produced by `EN_saveinpfile`. - - `EN_SET_CLOSED` and `EN_SET_OPEN` constants were added that can be used with `EN_setcontrol` to fix the status of pipes and valves to completely closed or completely open. - - `EN_EMITTERFLOW` can now be used with `EN_getnodevalue` to retrieve a node's emitter flow rate. - - `EN_STATUS_REPORT` can now be used with `EN_getoption` and `EN_setoption` to get or set the type of status report that EPANET will generate (`EN_NO_REPORT`, `EN_NORMAL_REPORT` or `EN_FULL_REPORT`). - - A possible parser error that could result in a Trace Node ID in an input file not being recognized was fixed. - - Additional API functions for enabling/disabling controls and rules were added (`EN_getcontrolenabled`, `EN_setcontrolenabled`, `EN_getruleenabled`, `EN_setruleenabled`). - - Updated the internal function `getclosedlink` in report.c to use a loop instead of recursion to prevent a stack overflow during the analysis of very large disconnections. -- Setting the demand multiplier within the `[DEMANDS]` section of INP has been depreciated, please use `DEMAND MULTIPLIER` inside `[OPTIONS]` instead. -- `EN_PRESS_UNITS` can now be used with `EN_getoption` and `EN_setoption` to get or set the pressure unit used in EPANET. -- Continuous barrier functions were added to constrain emitter flows to allowable values. -- The `EN_openX` function has been added to enable the opening of input files with formatting errors through the API. This allows users to continue using toolkit functions even when such errors are present. -- The `EN_getnodesvalues` and `EN_getlinksvalues` were added to retrieve a property value for all nodes or links in the network. -- Fixed a bug in EN_setnodevalue with EN_EMITTER option that could cause NaN results. + - Support has been added for FAVAD (Fixed And Variable Area Discharge) modeling of pipe leaks: - A new `[LEAKAGE]` section has been added to the input file format where each line contains the ID name of a pipe, its leak area in sq. mm per 100 length units, and its leak expansion rate in sq. mm per unit of pressure head. - `EN_LEAK_AREA` and `EN_LEAK_EXPAN` can be used with the functions `EN_getlinkvalue` and `EN_setlinkvalue` to retrieve and assign values for a pipe's leak area and expansion properties. - `EN_LINK_LEAKAGE` can be used with `EN_getlinkvalue` to retrieve a pipe's leakage rate at a given point in time. - `EN_LEAKAGEFLOW` can be used with `EN_getnodevalue` to retrieve the leakage demand generated at a node from all its connecting pipes at a given point in time. - `EN_LEAKAGELOSS` can be used with `EN_getstatistic` to retrieve the the total leakage loss in the system at a given point in time as a percentage of total flow entering the system. -- A new Flow Balance Report has been added to end of a simulation run's Status Report that lists the various components of the system's total inflow and outflow over the simulation period. It also displays the ratio of outflow to inflow as a check on flow continuity. -- The following constants can be used with EN_getnodevalue to retrieve the components of a node's total demand at a given point in time: + + - Support has been added for reading the `[TAGS]` section of an EPANET input file. In addition: + - A newly added `EN_settag` function will assign a Tag to a node or link. + - A newly added `EN_gettag` function will retrieve a node or link's Tag. + - The exisitng `EN_saveinpfile` will include saving all node and link tags to file. + - A new Flow Balance Report has been added to end of a simulation run's Status Report that lists the various components of the system's total inflow and outflow over the simulation period. It also displays the ratio of outflow to inflow as a check on flow continuity. + + - A new type of valve, a Positional Control Valve (PCV), was added. It uses a valve characteristic curve to relate its loss coefficient to a percentage open setting (parameter - `EN_PCV`). + + - `EN_VALVE_CURVE` can now be used with the `EN_getcurvetype` and `EN_setcurvetype` to get or set the valve position curve. + + - A new set of functions has been added to get information about upcoming time step events. Users will now see what type of event is going to cause the end of a time step to occur. See `EN_timetonextevent`. + + - A new set of functions has been added to allow users to set a reporting callback function. The user-supplied function will receive all output normally directed to the report file. + + - A `EN_EMITBACKFLOW` option was added that either allows emitters to have reverse flow through them (the default) or not. + + - The functions `EN_getnodevalue` and `EN_getlinkvalue` now include the options `EN_NODE_INCONTROL` and `EN_LINK_INCONTROL` to determine whether a node or link appears in any simple or rule-based control. + + - `EN_SET_CLOSED` and `EN_SET_OPEN` constants were added that can be used with `EN_setcontrol` to fix the status of pipes and valves to completely closed or completely open. + + - `EN_STATUS_REPORT` can now be used with `EN_getoption` and `EN_setoption` to get or set the type of status report that EPANET will generate (`EN_NO_REPORT`, `EN_NORMAL_REPORT` or `EN_FULL_REPORT`). + + - `EN_PRESS_UNITS` can now be used with `EN_getoption` and `EN_setoption` to get or set the pressure unit used in EPANET. + + - The following constants can be used with EN_getnodevalue to retrieve the components of a node's total demand at a given point in time: - `EN_FULLDEMAND` - the consumer demand requested - `EN_DEMANDFLOW` - the consumer demand delivered - `EN_DEMANDDEFICIT` - the difference between the consumer demand requested and delivered - `EN_EMITTERFLOW` - the node's emitter flow - `EN_LEAKAGEFLOW` - the node's leakage flow - - `EN_DEMAND` - the sum of the node's consumer demand, emitter flow, and leakage flow \ No newline at end of file + - `EN_DEMAND` - the sum of the node's consumer demand, emitter flow, and leakage flow + + - Additional API functions for enabling/disabling controls and rules were added (`EN_getcontrolenabled`, `EN_setcontrolenabled`, `EN_getruleenabled`, `EN_setruleenabled`). A new keyword `DISABLED` is added to the end of a control or rule statement in an EPANET input file to indicate that the control is disabled. + + - The `EN_openX` function has been added to enable the opening of input files with formatting errors through the API. This allows users to continue using toolkit functions even when such errors are present. + + - The `EN_getnodesvalues` and `EN_getlinksvalues` were added to retrieve a property value for all nodes or links in the network. + + - Support was added for cubic meters per second (`EN_CMS`) flow units. + + - A header file for binding C# to the Toolkit has been added. + + - Support was added for Conan dependency manager. + +### Feature Updates + + - The check for at least two nodes, one tank/reservoir and no unconnected junction nodes was moved from `EN_open` to `EN_openH` and `EN_openQ` so that partial network data files could be opened by the toolkit. + + - The indices of a General Purpose Valve (GPV) and a Positional Control Valve (PCV) were added to the list of editable Link Properties using the symbolic constant names `EN_GPV_CURVE` and `EN_PCV_CURVE`, respectively. + + - The `EN_getlinkvalue` and `EN_setlinkvalue` functions were updated to get and set the values of `EN_GPV_CURVE` and `EN_PCV_CURVE`. + + - Negative pressure values for `EN_SETTING` are now permitted in the `EN_setlinkvalue` function. + + - The `EN_STARTTIME` parameter was added into the `EN_settimeparam` function. + + - A `EN_DEMANDPATTERN` parameter was added as the index of the default time pattern used by demands with no specific pattern assigned. It can be set or retrieved with the `EN_setoption` and `EN_getoption` functions, respectively, and is saved to the file when the `EN_saveinpfile` function is called. + + - The `EN_getaveragepatternvalue` function will now accept a pattern index of zero which represents the constant pattern assigned to junction demands by default. + + - Improved updating and convergence tests were added to pressure-dependent demand analysis. + + - Improved checks to prevent outflow from empty tanks or inflow to full (non-overflow) tanks, including the case where a link is connected to a pair of tanks, were added. + + - The `EN_INITSETTING` option in function `EN_getlinkvalue` will now return `EN_MISSING` for a valve whose initial status is fixed to `EN_OPEN` or `EN_CLOSED`. + + - A new error code `263 - node is not a tank` is returned when `EN_settankdata` or `EN_setnodevalue` attempts to set a tank-only parameter for a non-tank node. + + - Errors in node and link vertex coordinates are now ignored when reading an EPANET input file. + + - Only non-zero demands are now included in the `[DEMANDS]` section of the input file produced by `EN_saveinpfile`. + + - Setting the demand multiplier within the `[DEMANDS]` section of INP has been depreciated, please use `DEMAND MULTIPLIER` inside `[OPTIONS]` instead. + + - Continuous barrier functions were added to constrain emitter flows to allowable values. + + - The CI regression test protocol was modified by: + - changing the absolute tolerance used to compare the closeness of test results to benchmark values from 0 to 0.0001 + - dropping the "correct decimal digits" test + - dropping the check for identical status report content since it prevents accepting code changes that produce more accurate solutions in fewer iterations. + +### Bug Fixes + + - The adjustment of a tank's minimum volume (`Vmin`) when its parameters are changed using `EN_setnodevalue` or `EN_settankdata` has been corrected. + + - A pump whose status is set to CLOSED in the input file now also has its speed setting set to zero which allows a simple pressure control to activate the pump correctly. + + - A failure to raise an error condition for a non-positive pipe roughness in the input file has been fixed. + + - The calculation of head loss gradient for low flow conditions was corrected. + + - A possible loss of network connectivity when evaluating a Pressure Sustaining Valve was prevented. + + - Having the implied loss coefficient for an active Flow Control Valve be less than its fully opened value was prevented. + + - An incorrect tank elevation value set using `EN_settankdata` with SI units has been fixed. + + - An error is no longer raised when a minor loss coefficient of zero is assigned in `EN_setlinkvalue(ph, index, EN_MINORLOSS, 0)`. + + - The incorrect display of unconnected nodes has been fixed. + + - The function `EN_saveinpfile` was corrected for simple controls on GPV's by saving their status instead of the index of their head loss curve. + + - The internal Qualflag variable is now adjusted when an EPANET input file has a QUALITY option not equal to NONE and a simulation duration of zero. + + - An EPANET input file with simple timer control that has more than 9 input tokens no longer results in an incorrect hour setting. + + - A possible parser error that could result in a Trace Node ID in an input file not being recognized was fixed. + + - Updated the internal function `getclosedlink` in report.c to use a loop instead of recursion to prevent a stack overflow during the analysis of very large disconnections. + + - Fixed a bug in EN_setnodevalue with EN_EMITTER option that could cause NaN results. + + - A failure to close a temporary hydraulics file between successive simulations of an opened project was fixed. + + - Corrupting the index of a water quality Trace Node when adding or deleting a node was fixed. diff --git a/tests/test_node.cpp b/tests/test_node.cpp index 5bcf8cf..d717e14 100644 --- a/tests/test_node.cpp +++ b/tests/test_node.cpp @@ -1,13 +1,13 @@ /* ****************************************************************************** Project: OWA EPANET - Version: 2.2 + Version: 2.3 Module: test_node.cpp Description: Tests EPANET toolkit api functions Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 03/21/2019 + Last Updated: 02/14/2025 ****************************************************************************** */ @@ -255,17 +255,22 @@ BOOST_FIXTURE_TEST_CASE(test_node_comments, FixtureOpenClose) { int index; char comment[EN_MAXMSG + 1]; + char tag[EN_MAXMSG + 1]; // Add comments to selected objects error = EN_getnodeindex(ph, (char *)"11", &index); BOOST_REQUIRE(error == 0); error = EN_setcomment(ph, EN_NODE, index, (char *)"J11"); BOOST_REQUIRE(error == 0); + error = EN_settag(ph, EN_NODE, index, (char *)"J11_Tag"); + BOOST_REQUIRE(error == 0); error = EN_getnodeindex(ph, (char *)"23", &index); BOOST_REQUIRE(error == 0); error = EN_setcomment(ph, EN_NODE, index, (char *)"Junc23"); BOOST_REQUIRE(error == 0); + error = EN_settag(ph, EN_NODE, index, (char *)"Junc23_Tag"); + BOOST_REQUIRE(error == 0); // Check comments error = EN_getnodeindex(ph, (char *)"11", &index); @@ -273,18 +278,25 @@ BOOST_FIXTURE_TEST_CASE(test_node_comments, FixtureOpenClose) error = EN_getcomment(ph, EN_NODE, index, comment); BOOST_REQUIRE(error == 0); BOOST_CHECK(check_string(comment, (char *)"J11")); + error = EN_gettag(ph, EN_NODE, index, tag); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(check_string(tag, (char *)"J11_Tag")); error = EN_getnodeindex(ph, (char *)"23", &index); BOOST_REQUIRE(error == 0); error = EN_getcomment(ph, EN_NODE, index, comment); BOOST_REQUIRE(error == 0); BOOST_CHECK(check_string(comment, (char *)"Junc23")); + error = EN_gettag(ph, EN_NODE, index, tag); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(check_string(tag, (char *)"Junc23_Tag")); } BOOST_FIXTURE_TEST_CASE(test_replace_comment, FixtureOpenClose) { int index; char comment[EN_MAXMSG + 1]; + char tag[EN_MAXMSG + 1]; // Replace short comment with longer one and vice versa error = EN_getnodeindex(ph, (char *)"11", &index); @@ -295,11 +307,23 @@ BOOST_FIXTURE_TEST_CASE(test_replace_comment, FixtureOpenClose) BOOST_REQUIRE(error == 0); BOOST_CHECK(check_string(comment, (char *)"Junction11")); + error = EN_settag(ph, EN_NODE, index, (char *)"Junction11_Tag"); + BOOST_REQUIRE(error == 0); + error = EN_gettag(ph, EN_NODE, index, tag); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(check_string(tag, (char *)"Junction11_Tag")); + error = EN_setcomment(ph, EN_NODE, index, (char *)"J11"); BOOST_REQUIRE(error == 0); error = EN_getcomment(ph, EN_NODE, index, comment); BOOST_REQUIRE(error == 0); BOOST_CHECK(check_string(comment, (char *)"J11")); + + error = EN_settag(ph, EN_NODE, index, (char *)"J11_Tag"); + BOOST_REQUIRE(error == 0); + error = EN_gettag(ph, EN_NODE, index, tag); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(check_string(tag, (char *)"J11_Tag")); } BOOST_FIXTURE_TEST_CASE(test_save_comment, FixtureOpenClose) @@ -311,11 +335,15 @@ BOOST_FIXTURE_TEST_CASE(test_save_comment, FixtureOpenClose) BOOST_REQUIRE(error == 0); error = EN_setcomment(ph, EN_NODE, index, (char *)"J11"); BOOST_REQUIRE(error == 0); + error = EN_settag(ph, EN_NODE, index, (char *)"J11_Tag"); + BOOST_REQUIRE(error == 0); error = EN_getnodeindex(ph, (char *)"23", &index); BOOST_REQUIRE(error == 0); error = EN_setcomment(ph, EN_NODE, index, (char *)"Junc23"); BOOST_REQUIRE(error == 0); + error = EN_settag(ph, EN_NODE, index, (char *)"Junc23_Tag"); + BOOST_REQUIRE(error == 0); error = EN_saveinpfile(ph, DATA_PATH_TMP); BOOST_REQUIRE(error == 0); @@ -325,6 +353,7 @@ BOOST_AUTO_TEST_CASE(test_reopen_comment, * boost::unit_test::depends_on("node_c { int error, index; char comment[EN_MAXMSG + 1]; + char tag[EN_MAXMSG + 1]; // Create & load a project EN_Project ph = NULL; @@ -340,12 +369,18 @@ BOOST_AUTO_TEST_CASE(test_reopen_comment, * boost::unit_test::depends_on("node_c error = EN_getcomment(ph, EN_NODE, index, comment); BOOST_REQUIRE(error == 0); BOOST_CHECK(check_string(comment, (char *)"J11")); + error = EN_gettag(ph, EN_NODE, index, tag); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(check_string(tag, (char *)"J11_Tag")); error = EN_getnodeindex(ph, (char *)"23", &index); BOOST_REQUIRE(error == 0); error = EN_getcomment(ph, EN_NODE, index, comment); BOOST_REQUIRE(error == 0); BOOST_CHECK(check_string(comment, (char *)"Junc23")); + error = EN_gettag(ph, EN_NODE, index, tag); + BOOST_REQUIRE(error == 0); + BOOST_CHECK(check_string(tag, (char *)"Junc23_Tag")); // Close project EN_close(ph); From 0f7fb48d7362b7cbfbd140b037425f2a902c2ba3 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 19 Feb 2025 10:18:52 -0500 Subject: [PATCH 191/233] Update input2.c --- src/input2.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/input2.c b/src/input2.c index 9303840..59b8151 100644 --- a/src/input2.c +++ b/src/input2.c @@ -7,7 +7,7 @@ Description: reads and interprets network data from an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 02/14/2025 +Last Updated: 02/19/2025 ****************************************************************************** */ @@ -326,7 +326,6 @@ int newline(Project *pr, int sect, char *line) // Data in these sections are not used for any computations case _LABELS: - case _TAGS: case _BACKDROP: return (0); } From f37e4934c6f0de7a3564da8e1c90ac7c0b5aa53a Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 19 Feb 2025 10:32:49 -0500 Subject: [PATCH 192/233] Fix copy/paste error in project.c --- src/input2.c | 2 +- src/project.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/input2.c b/src/input2.c index 59b8151..a959926 100644 --- a/src/input2.c +++ b/src/input2.c @@ -320,7 +320,7 @@ int newline(Project *pr, int sect, char *line) case _REPORT: return (reportdata(pr)); case _TIMES: return (timedata(pr)); case _OPTIONS: return (optiondata(pr)); - case _TAGS: return (tagdata(pr)); + case _TAGS: return (tagdata(pr)); case _COORDS: return (coordata(pr)); case _VERTICES: return (vertexdata(pr)); diff --git a/src/project.c b/src/project.c index 217e633..b1c7261 100644 --- a/src/project.c +++ b/src/project.c @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/14/2025 + Last Updated: 02/19/2025 ****************************************************************************** */ @@ -1361,6 +1361,10 @@ int setcomment(Network *network, int object, int index, const char *newcomment) network->Curve[index].Comment = xstrcpy(&comment, newcomment, MAXMSG); return 0; + default: return 251; + } +} + int gettag(Network *network, int object, int index, char *tag) //---------------------------------------------------------------- From 6468ba9545388a610083111204e8d43a59816a1b Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Tue, 11 Mar 2025 11:54:12 -0400 Subject: [PATCH 193/233] Include curve type in input file --- src/enumstxt.h | 12 ++++++++++-- src/inpfile.c | 20 +++++++++++++------- src/input3.c | 11 +++++++++-- src/text.h | 4 +++- 4 files changed, 35 insertions(+), 12 deletions(-) diff --git a/src/enumstxt.h b/src/enumstxt.h index 65962a6..222f8d3 100755 --- a/src/enumstxt.h +++ b/src/enumstxt.h @@ -1,13 +1,13 @@ /* ***************************************************************************** Project: OWA EPANET - Version: 2.2 + Version: 2.3 Module: enumstxt.h Description: text strings for enumerated data types Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 06/24/2024 + Last Updated: 03/10/2025 ****************************************************************************** */ @@ -117,6 +117,14 @@ char *RptFlagTxt[] = {w_NO, char *BackflowTxt[] = {w_NO, w_YES, NULL}; + +char *CurveTypeTxt[] = {c_VOLUME, + c_PUMP, + c_EFFIC, + c_HEADLOSS, + c_GENERIC, + c_VALVE, + NULL}; char *SectTxt[] = {s_TITLE, s_JUNCTIONS, s_RESERVOIRS, s_TANKS, s_PIPES, s_PUMPS, diff --git a/src/inpfile.c b/src/inpfile.c index da69fd0..84ff42e 100644 --- a/src/inpfile.c +++ b/src/inpfile.c @@ -7,7 +7,7 @@ Description: saves network data to an EPANET formatted text file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 02/14/2025 +Last Updated: 03/11/2025 ****************************************************************************** */ @@ -34,6 +34,7 @@ extern char *TstatTxt[]; extern char *RptFlagTxt[]; extern char *SectTxt[]; extern char *BackflowTxt[]; +extern char *CurveTypeTxt[]; void saveauxdata(Project *pr, FILE *f) /* @@ -434,15 +435,20 @@ int saveinpfile(Project *pr, const char *fname) // Write [CURVES] section fprintf(f, "\n\n"); fprintf(f, s_CURVES); - fprintf(f, "\n;;%-31s\t%-12s\t%-12s", - "ID", "X-Value", "Y-Value"); + fprintf(f, "\n;;%-31s\t%-12s\t%-12s", "ID", "X-Value", "Y-Value"); for (i = 1; i <= net->Ncurves; i++) { - if (net->Curve[i].Comment) fprintf(f, "\n;%s", net->Curve[i].Comment); - for (j = 0; j < net->Curve[i].Npts; j++) + curve = &net->Curve[i]; + if (curve->Comment) fprintf(f, "\n;%s", curve->Comment); + if (curve->Npts > 0) { - curve = &net->Curve[i]; - fprintf(f, "\n %-31s\t%-12.4f\t%-12.4f", curve->ID, curve->X[j], curve->Y[j]); + fprintf(f, "\n %-31s\t%-12.4f\t%-12.4f\t%s", curve->ID, + curve->X[0], curve->Y[0], CurveTypeTxt[curve->Type]); + for (j = 1; j < curve->Npts; j++) + { + fprintf(f, "\n %-31s\t%-12.4f\t%-12.4f", curve->ID, + curve->X[j], curve->Y[j]); + } } } diff --git a/src/input3.c b/src/input3.c index 281c09b..8568379 100644 --- a/src/input3.c +++ b/src/input3.c @@ -7,7 +7,7 @@ Description: parses network data from a line of an EPANET input file Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE -Last Updated: 02/14/2025 +Last Updated: 03/10/2025 ****************************************************************************** */ @@ -26,6 +26,7 @@ extern char *MixTxt[]; extern char *Fldname[]; extern char *DemandModelTxt[]; extern char *BackflowTxt[]; +extern char *CurveTypeTxt[]; // Imported Functions extern int addnodeID(Network *, int, char *); @@ -740,7 +741,7 @@ int curvedata(Project *pr) Network *net = &pr->network; Parser *parser = &pr->parser; - int i; + int i, ctype; double x, y; Scurve *curve; @@ -748,6 +749,11 @@ int curvedata(Project *pr) if (parser->Ntokens < 3) return 201; if (!getfloat(parser->Tok[1], &x)) return setError(parser, 1, 202); if (!getfloat(parser->Tok[2], &y)) return setError(parser, 2, 202); + ctype = -1; + if (parser->Ntokens > 3) + { + ctype = findmatch(parser->Tok[3], CurveTypeTxt); + } // Check if previous input line was for the same curve if (parser->PrevCurve && strcmp(parser->Tok[0], parser->PrevCurve->ID) == 0) @@ -777,6 +783,7 @@ int curvedata(Project *pr) curve->X[curve->Npts] = x; curve->Y[curve->Npts] = y; curve->Npts++; + if (ctype >= 0) curve->Type = (CurveType)ctype; // Save a reference to this curve for processing additional curve data parser->PrevCurve = curve; diff --git a/src/text.h b/src/text.h index 087977e..57f461e 100755 --- a/src/text.h +++ b/src/text.h @@ -7,7 +7,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/11/2025 + Last Updated: 03/10/2025 ****************************************************************************** */ @@ -270,6 +270,8 @@ #define c_PUMP "PUMP" #define c_EFFIC "EFFIC" #define c_VOLUME "VOLUME" +#define c_VALVE "VALVE" +#define c_GENERIC "GENERIC" //------- Text Phrases ------------------------------------ From fff984d6be4fd068c56763b7504bc774aaf24d87 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Wed, 19 Mar 2025 18:37:34 -0400 Subject: [PATCH 194/233] Limit demand deficit to be >= 0 --- src/epanet.c | 1 + src/hydsolver.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/epanet.c b/src/epanet.c index 3b6a0d7..c763d9b 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -2380,6 +2380,7 @@ int DLLEXPORT EN_getnodevalue(EN_Project p, int index, int property, double *val // while DemandFlow contains delivered consumer demand if (hyd->FullDemand[index] <= 0.0) return 0; v = (hyd->FullDemand[index] - hyd->DemandFlow[index]) * Ucf[FLOW]; + if (v < 0.0) v = 0.0; break; case EN_NODE_INCONTROL: diff --git a/src/hydsolver.c b/src/hydsolver.c index 5d76bc6..a702361 100644 --- a/src/hydsolver.c +++ b/src/hydsolver.c @@ -702,7 +702,7 @@ int pdaconverged(Project *pr) { Hydraul *hyd = &pr->hydraul; - const double QTOL = 0.0001; // 0.0001 cfs ~= 0.005 gpm ~= 0.2 lpm) + const double QTOL = 0.0001; // 0.0001 cfs ~= 0.05 gpm ~= 0.2 lpm) int i, converged = 1; double totalDemand = 0.0, totalReduction = 0.0; From bd97f660977b32e183284155606c3705a501c745 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Fri, 28 Mar 2025 09:16:38 -0400 Subject: [PATCH 195/233] Update docs for version 2.3 --- doc/DataFlow.eps | 15958 -------------------- doc/DistributionSystem.eps | 7265 --------- doc/Doxyfile-chm | 2978 ++++ doc/DoxygenLayout.xml | 2 +- doc/Example2.eps | 5118 ------- doc/Network.eps | 8420 ----------- doc/doxyfile | 1556 +- doc/doxygen-awesome.css | 2681 ++++ doc/extrastylesheet.css | 2 - doc/footer.tex | 12 - doc/header.tex | 141 - doc/main.dox | 15 +- doc/newfooter.html | 2 +- doc/readme.md | 30 +- doc/toolkit-examples.dox | 1 - doc/toolkit-files.dox | 3 +- doc/{input-file.dox => toolkit-input.dox} | 70 +- doc/{modules.dox => toolkit-topics.dox} | 183 +- doc/toolkit-usage.dox | 32 +- include/epanet2_2.h | 240 +- include/epanet2_enums.h | 40 +- src/epanet.c | 14 +- 22 files changed, 7055 insertions(+), 37708 deletions(-) delete mode 100644 doc/DataFlow.eps delete mode 100644 doc/DistributionSystem.eps create mode 100644 doc/Doxyfile-chm delete mode 100644 doc/Example2.eps delete mode 100644 doc/Network.eps create mode 100644 doc/doxygen-awesome.css delete mode 100644 doc/extrastylesheet.css delete mode 100644 doc/footer.tex delete mode 100644 doc/header.tex rename doc/{input-file.dox => toolkit-input.dox} (96%) rename doc/{modules.dox => toolkit-topics.dox} (71%) diff --git a/doc/DataFlow.eps b/doc/DataFlow.eps deleted file mode 100644 index 041b043..0000000 --- a/doc/DataFlow.eps +++ /dev/null @@ -1,15958 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%Title: (/srv/www/vhosts/git_exclude/save/processed/5/f/7/5f73a081-3008-4947-be6b-2ae45f4afa5d/01_0631f921834777aef3d754c155093225_png_intermediate_eps/DataFlow.eps) -%%CreationDate: (2019-01-27T17:06:23+01:00) -%%BoundingBox: -0 -0 393 292 -%%HiResBoundingBox: 0 0 393.041 292 -%%DocumentData: Clean7Bit -%%LanguageLevel: 1 -%%Pages: 1 -%%EndComments - -%%BeginDefaults -%%EndDefaults - -%%BeginProlog -% -% Display a color image. The image is displayed in color on -% Postscript viewers or printers that support color, otherwise -% it is displayed as grayscale. -% -/DirectClassPacket -{ - % - % Get a DirectClass packet. - % - % Parameters: - % red. - % green. - % blue. - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - compression 0 eq - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/DirectClassImage -{ - % - % Display a DirectClass image. - % - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { DirectClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayDirectClassPacket } image - } ifelse -} bind def - -/GrayDirectClassPacket -{ - % - % Get a DirectClass packet; convert to grayscale. - % - % Parameters: - % red - % green - % blue - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 eq - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/GrayPseudoClassPacket -{ - % - % Get a PseudoClass packet; convert to grayscale. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 eq - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassPacket -{ - % - % Get a PseudoClass packet. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - compression 0 eq - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassImage -{ - % - % Display a PseudoClass image. - % - % Parameters: - % class: 0-PseudoClass or 1-Grayscale. - % - currentfile buffer readline pop - token pop /class exch def pop - class 0 gt - { - currentfile buffer readline pop - token pop /depth exch def pop - /grays columns 8 add depth sub depth mul 8 idiv string def - columns rows depth - [ - columns 0 0 - rows neg 0 rows - ] - { currentfile grays readhexstring pop } image - } - { - % - % Parameters: - % colors: number of colors in the colormap. - % colormap: red, green, blue color packets. - % - currentfile buffer readline pop - token pop /colors exch def pop - /colors colors 3 mul def - /colormap colors string def - currentfile colormap readhexstring pop pop - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { PseudoClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayPseudoClassPacket } image - } ifelse - } ifelse -} bind def - -/DisplayImage -{ - % - % Display a DirectClass or PseudoClass image. - % - % Parameters: - % x & y translation. - % x & y scale. - % label pointsize. - % image label. - % image columns & rows. - % class: 0-DirectClass or 1-PseudoClass. - % compression: 0-none or 1-RunlengthEncoded. - % hex color packets. - % - gsave - /buffer 512 string def - /byte 1 string def - /color_packet 3 string def - /pixels 768 string def - - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - x y translate - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - currentfile buffer readline pop - token pop /pointsize exch def pop - x y scale - currentfile buffer readline pop - token pop /columns exch def - token pop /rows exch def pop - currentfile buffer readline pop - token pop /class exch def pop - currentfile buffer readline pop - token pop /compression exch def pop - class 0 gt { PseudoClassImage } { DirectClassImage } ifelse - grestore -} bind def -%%EndProlog -%%Page: 1 1 -%%PageBoundingBox: 0 0 393 292 -userdict begin -DisplayImage -0 0 -393.041 291.78 -12 -524 389 -0 -0 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFDFDFDFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFB -68BAD046AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC567B9CF -FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFBFBFBF5F5F546AAC5E2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FF -E2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FF -E2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FF -E2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FF -E2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FF -E2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FF -E2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FF -E2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FF -E2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FF -E2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FF -E2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FF -E2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FF -E2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FF -E2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FF -E2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FFE2F9FF -E2F9FFE2F9FFE2F9FF46AAC5F5F5F5FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EBEBEB46AAC5E0F8FFE0F8FFE0F8FFE0F8FF -E0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FF -E0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FF -E0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FF -E0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FF -E0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FF -E0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FF -E0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FF -E0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FF -E0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FF -E0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FF -E0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FF -E0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FF -E0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FF -E0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FF -E0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FFE0F8FF46AAC5EBEBEBF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF5F5F5E3E3E346AAC5 -DFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FF -DFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FF -DFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FF -DFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FF -DFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FF -DFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FF -DFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FF -DFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FF -DFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FF -DFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FF -DFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FF -DFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FF -DFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FF -DFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FF -DFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FFDFF8FF46AAC5E3E3E3 -F5F5F5FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCF3F3F3DEDEDE46AAC5DDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FF -DDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FF -DDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FF -DDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FF -DDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FF -DDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FF -DDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FF -DDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FF -DDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FF -DDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FF -DDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FF -DDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FF -DDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FF -DDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FF -DDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FFDDF7FF -DDF7FFDDF7FF46AAC5DEDEDEF3F3F3FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5DBF7FFDBF7FFDBF7FFDBF7FFDBF7FF -DBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FF -DBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FF -DBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FF -DBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FF -DBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FF -DBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FF -DBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FF -DBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FF -DBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FF -DBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FF -DBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FF -DBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FF -DBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FF -DBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FF -DBF7FFDBF7FFDBF7FFDBF7FFDBF7FFDBF7FF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5D9F6FF -D9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FF -D9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FF -D9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FF -D9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FF -D9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FF -D9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FF -D9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FF -D9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FF -D9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FF -D9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FF -D9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FF -D9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FF -D9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FF -D9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FF -D9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FFD9F6FF46AAC5DCDCDCF2F2F2 -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -F2F2F2DCDCDC46AAC5D8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FF -D8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FF -D8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FF -D8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FF -D8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FF -D8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FF -D8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FF -D8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FF -D8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FF -D8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FF -D8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FF -D8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FF -D8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FF -D8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FF -D8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FFD8F6FF -D8F6FF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5D6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FF -D6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FF -D6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FF -D6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FF -D6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FF -D6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FF -D6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FF -D6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FF -D6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FF -D6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FF -D6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FF -D6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FF -D6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FF -D6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FF -D6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FFD6F5FF -D6F5FFD6F5FFD6F5FFD6F5FFD6F5FF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5D4F5FFD4F5FF -D4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FF -D4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FF -D4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FF -D4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FF -D4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FF -D4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FF -D4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FF -D4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FF -D4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FF -D4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FF -D4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FF -D4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FF -D4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FF -D4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FF -D4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FFD4F5FF46AAC5DCDCDCF2F2F2FCFCFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2 -DCDCDC46AAC5D2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FF -D2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FF -D2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FF -D2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FF -D2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FF -D2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FF -D2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FF -D2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FF -D2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FF -D2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FF -D2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FF -D2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FF -D2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FF -D2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FF -D2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FFD2F5FF -46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5D0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FF -D0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FF -D0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FF -D0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FF -D0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FF -D0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FF -D0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FF -D0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FF -D0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FF -D0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FF -D0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FF -D0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FF -D0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FF -D0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FF -D0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FFD0F4FF -D0F4FFD0F4FFD0F4FFD0F4FF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5CFF4FFCFF4FFCFF4FF -CFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FF -CFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FF -CFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FF -CFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FF -CFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFAE66 -00000000000000000000000000000000003A75D2FFCFF4FFCFAE66000000000000000000000000 -00000053AEFFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FF9462000000000062B6CFF4FFCFF4FFCFF4FF -CFF4FFCFF4FFCFAE6600000000003A75D2FFCFF4FFCFF4FFCFF4FFCFF4DB7536000062B6CFF4FF -CFF4FFCFAE6600000000000000000000000000000000003A75D2DB753600000000000000000000 -00000000000000000000000000006694F4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FF -CFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FF -CFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FF -CFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FF -CFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FF -CFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FFCFF4FF46AAC5DCDCDCF2F2F2FCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC -46AAC5CDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FF -CDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FF -CDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FF -CDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FF -CDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FF -CDF3FFCDF3FFCDF3FFCDAE6600003A73D1FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDAE66 -00003A73D1FFCDF3FFCDF3FFB0893A0000002E89DBCDF3FFCDF3FFCDF3FFCDF3B65200002E363A -00006692F3FFCDF3FFCDF3FFCDF3FFCDF3FFCDAE660000000000000061B6CDF3FFCDF3FFCDF3FF -CDF3DB7336000061B6CDF3FFCDF3FFCDAE6600003A73D1FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FF -CDF3FFCDF3FFCDF3FFCDD1902E000052AEFFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FF -CDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FF -CDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FF -CDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FF -CDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FF -CDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FFCDF3FF46AAC5 -DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFCFCFCF2F2F2DCDCDC46AAC5CBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FF -CBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FF -CBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FF -CBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FF -CBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FF -CBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBAE6600003A72D1FFCBF3FFCBF3FFCBF3FF -CBF3FFCBF3FFCBF3FFCBAE6600003A72D1FFCBF3FFCBF3FFCBF3DB723600003690AFF3FFCBF3FF -CBF3FFCBAE6600006691D1902D000052AEFFCBF3FFCBF3FFCBF3FFCBF3FFCBAE6600003A52613A -00000052AEFFCBF3FFCBF3FFCBF3DB7236000061B6CBF3FFCBF3FFCBAE6600003A72D1FFCBF3FF -CBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBD1902D000052AEFFCBF3FFCBF3FFCBF3FF -CBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FF -CBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FF -CBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FF -CBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FF -CBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FFCBF3FF -CBF3FFCBF3FFCBF3FF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5C9F2FFC9F2FFC9F2FFC9F2FF -C9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FF -C9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FF -C9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FF -C9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FF -C9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9AC6600003A -71CFFFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9AC6600003A71CFFFC9F2FFC9F2FFC9F2FF -90610000006690F2FFC9F2FFC9F2DB7136000061B6C9F2DB7136000061B6C9F2FFC9F2FFC9F2FF -C9F2FFC9AC6600003A71CFB6510000003690ADF2FFC9F2FFC9F2DB7136000061B6C9F2FFC9F2FF -C9AC6600003A71CFFFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9CF902D0000 -51ACFFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FF -C9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FF -C9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FF -C9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FF -C9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FF -C9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FFC9F2FF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5 -C8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FF -C8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FF -C8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FF -C8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FF -C8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FF -C8F2FFC8F2FFC8AC6600003A71CFFFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8AC6600003A -71CFFFC8F2FFC8F2FFC8F2DB713600003690ACF2FFC8F2FFC8CF902D000051ACFFC8F2FFAC883A -00003A71CFFFC8F2FFC8F2FFC8F2FFC8AC6600003A71CFFFC8AC6600000051ACFFC8F2FFC8F2DB -7136000061B6C8F2FFC8F2FFC8AC6600003A71CFFFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FF -C8F2FFC8F2FFC8CF902D000051ACFFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FF -C8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FF -C8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FF -C8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FF -C8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FF -C8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FFC8F2FF46AAC5DCDCDC -F2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCF2F2F2DCDCDC46AAC5C6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FF -C6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FF -C6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FF -C6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FF -C6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FF -C6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6AC660000000000000000000000000000002C87DB -C6F1FFC6F1FFC6AC6600003A6FCFFFC6F1FFC6F1FFAA873A00000050ACFFC6F1FFC6F1FFAA873A -0000668DF1FFC6F1FFC6CF902C00002C87DBC6F1FFC6F1FFC6F1FFC6AC6600003A6FCFFFC6F1DB -6F3600003690AAF1FFC6F1DB6F36000060B6C6F1FFC6F1FFC6AC66000000000000000000000000 -0000002C87DBC6F1FFC6F1FFC6F1FFC6F1FFC6CF902C000050ACFFC6F1FFC6F1FFC6F1FFC6F1FF -C6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FF -C6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FF -C6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FF -C6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FF -C6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FFC6F1FF -C6F1FFC6F1FF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5C4F1FFC4F1FFC4F1FFC4F1FFC4F1FF -C4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FF -C4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FF -C4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FF -C4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FF -C4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4AC6600003A6ECFFF -C4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4AC660000000000000000000000000000668CF1FF -C4F1FFC4F1FFC4F1DB6E3600003690A8F1FFC4F1FFC4F1B64E0000003690A8F1FFC4F1FFC4F1FF -C4AC6600003A6ECFFFC4F1FFC4AC660000002C87DBC4F1DB6E36000060B6C4F1FFC4F1FFC4AC66 -00003A6ECFFFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4CF902C00004EACFF -C4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FF -C4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FF -C4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FF -C4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FF -C4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FF -C4F1FFC4F1FFC4F1FFC4F1FFC4F1FFC4F1FF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5C3F1FF -C3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FF -C3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FF -C3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FF -C3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FF -C3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FF -C3F1FFC3AC6600003A6ECFFFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3AC6600003A6ECFFF -C3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3CF902C00002C87DBC3F1FFC3F1FFC3F1FF8B6000 -00003A6ECFFFC3F1FFC3F1FFC3AC6600003A6ECFFFC3F1FFC3F1DB6E36000000668BF1DB6E3600 -0060B6C3F1FFC3F1FFC3AC6600003A6ECFFFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FF -C3F1FFC3CF902C00004EACFFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FF -C3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FF -C3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FF -C3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FF -C3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FF -C3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FFC3F1FF46AAC5DCDCDCF2F2F2 -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -F2F2F2DCDCDC46AAC5C1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FF -C1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FF -C1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FF -C1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FF -C1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FF -C1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1AB6600003A6DCEFFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FF -C1F0FFC1AB6600003A6DCEFFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFA6873A000000000000 -0000000000000000000000000000002C87DBC1F0FFC1F0FFC1AB6600003A6DCEFFC1F0FFC1F0FF -C1CE902C00002C87B66D36000060B6C1F0FFC1F0FFC1AB6600003A6DCEFFC1F0FFC1F0FFC1F0FF -C1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1CE902C00004DABFFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FF -C1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FF -C1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FF -C1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FF -C1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FF -C1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FFC1F0FF -C1F0FF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5C0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FF -C0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FF -C0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FF -C0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FF -C0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FF -C0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0AB6600003A6CCEFFC0F0FF -C0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0AB6600003A6CCEFFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FF -C0F0DB6C3600003690A5F0FFC0F0FFC0F0FFC0F0FFC0F0DB6C3600003690A5F0FFC0F0FFC0AB66 -00003A6CCEFFC0F0FFC0F0FFC0F0FF89600000003A2B36000060B6C0F0FFC0F0FFC0AB6600003A -6CCEFFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0CE902B00004CABFFC0F0FF -C0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FF -C0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FF -C0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FF -C0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FF -C0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FFC0F0FF -C0F0FFC0F0FFC0F0FFC0F0FFC0F0FF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5BEEFFFBEEFFF -BEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFF -BEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFF -BEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFF -BEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFF -BEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFF -BEAA6600003A6BCEFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEAA6600003A6BCEFFBEEFFF -BEEFFFBEEFFFBEEFFFBEEFFFBEAA660000004CAAFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFA3863A -0000004CAAFFBEEFFFBEAA6600003A6BCEFFBEEFFFBEEFFFBEEFFFBECE902B00000000000060B6 -BEEFFFBEEFFFBEAA6600003A6BCEFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFF -BECE902B00004CAAFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFF -BEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFF -BEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFF -BEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFF -BEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFF -BEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFFBEEFFF46AAC5DCDCDCF2F2F2FCFCFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2 -DCDCDC46AAC5BCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFF -BCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFF -BCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFF -BCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFF -BCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFF -BCEFFFBCEFFFBCEFFFBCEFFFBCAA660000000000000000000000000000000000004BAAFFBCEFFF -BCAA6600003A6ACEFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFF86600000006686EFFFBCEFFFBCEFFF -BCEFFFBCEFFFBCEFFFBCCE902B00000060B6BCEFFFBCAA6600003A6ACEFFBCEFFFBCEFFFBCEFFF -BCEFFFA1863A0000000060B6BCEFFFBCEFFFBCAA66000000000000000000000000000000000000 -4BAAFFBCEFFFBCEFFFBCEFFFBCCE902B00004BAAFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFF -BCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFF -BCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFF -BCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFF -BCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFF -BCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFFBCEFFF -46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5BAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFF -BAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFF -BAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFF -BAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFF -BAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFF -BAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFF -BAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFF -BAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFF -BAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFF -BAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFF -BAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFF -BAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFF -BAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFF -BAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFF -BAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFFBAEEFF -BAEEFFBAEEFFBAEEFFBAEEFF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5B7EEFFB7EEFFB7EEFF -B7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFF -B7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFF -B7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFF -B7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFF -B7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFF -B7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFF -B7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFF -B7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFF -B7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFF -B7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFF -B7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFF -B7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFF -B7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFF -B7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFF -B7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFFB7EEFF46AAC5DCDCDCF2F2F2FCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC -46AAC5B5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFF -B5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFF -B5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFF -B5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFF -B5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFF -B5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFF -B5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFF -B5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFF -B5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFF -B5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFF -B5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFF -B5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFF -B5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFF -B5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFF -B5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFFB5EEFF46AAC5 -DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFCFCFCF2F2F2DCDCDC46AAC5B3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFF -B3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFF -B3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFF -B3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFF -B3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFF -B3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFF -B3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFF -B3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFF -B3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFF -B3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFF -B3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFF -B3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFF -B3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFF -B3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFF -B3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFFB3EEFF -B3EEFFB3EEFFB3EEFF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5B1EEFFB1EEFFB1EEFFB1EEFF -B1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFF -B1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFF -B1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFF -B1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFF -B1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFF -B1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFF -B1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFF -B1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFF -B1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFF -B1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFF -B1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFF -B1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFF -B1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFF -B1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFF -B1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFFB1EEFF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5 -AFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFF -AFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFF -AFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFF -AFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFF -AFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFF -AFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFF -AFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFF -AFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFF -AFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFF -AFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFF -AFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFF -AFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFF -AFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFF -AFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFF -AFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFFAFEDFF46AAC5DCDCDC -F2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCF2F2F2DCDCDC46AAC5ACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFF -ACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFF -ACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFF -ACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFF -ACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFF -ACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFF -ACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFF -ACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFF -ACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFF -ACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFF -ACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFF -ACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFF -ACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFF -ACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFF -ACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFFACEDFF -ACEDFFACEDFF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5A9ECFFA9ECFFA9ECFFA9ECFFA9ECFF -A9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFF -A9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFF -A9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFF -A9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFF -A9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFF -A9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFF -A9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFF -A9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFF -A9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFF -A9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFF -A9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFF -A9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFF -A9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFF -A9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFF -A9ECFFA9ECFFA9ECFFA9ECFFA9ECFFA9ECFF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5A7ECFF -A7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFF -A7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFF -A7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFF -A7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFF -A7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFF -A7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFF -A7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFF -A7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFF -A7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFF -A7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFF -A7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFF -A7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFF -A7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFF -A7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFF -A7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFFA7ECFF46AAC5DCDCDCF2F2F2 -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -F2F2F2DCDCDC46AAC5A5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFF -A5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFF -A5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFF -A5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFF -A5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFF -A5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFF -A5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFF -A5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFF -A5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFF -A5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFF -A5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFF -A5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFF -A5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFF -A5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFF -A5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFFA5EBFF -A5EBFF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFCFCF2F2F2DCDCDC46AAC5A2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFF -A2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFF -A2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFF -A2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFF -A2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFF -A2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFF -A2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFF -A2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFF -A2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFF -A2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFF -A2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFF -A2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFF -A2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFF -A2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFF -A2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFFA2EBFF -A2EBFFA2EBFFA2EBFFA2EBFFA2EBFF46AAC5DCDCDCF2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF96A9C1385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8A -FFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A -385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF -385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A -385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A -385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFF -FFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A -385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A -385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8A -FFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A375C88F2F2F2DCDCDC46AAC5A0EAFFA0EAFF -A0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFF -A0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFF -A0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFF -A0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFF -A0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFF -A0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFF -A0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFF -A0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFF -A0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFF -A0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFF -A0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFF -A0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFF -A0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFF -A0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFF -A0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFFA0EAFF46AAC5305077355883375C88 -FFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A -385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF -385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A -385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A -385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFF -FFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A -385D8A385D8AFFFFFFFFFFFF385D8A385D8A839AB6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A -385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFF -FFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A -385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A -385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8A -FFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A -385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF -385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A -385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A -385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A375C88F2F2F2 -DDDDDD47A6C246AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -46AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC546AAC5 -47A6C2315178355883375C88FFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFF -FFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A -385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A -385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8A -FFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A -385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF -385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCF4F4F4E0E0E0C9C9C9B6B6B6ADADADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAADADADB6B6B6C9C9C9E0E0E0F4F4F4FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF6F6F6E8E8E8D5D5D5C6C6C6C0C0C0BDBDBD -BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD -BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD -BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD -BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD -BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD -BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD -BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD -BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD -BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD -BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD -BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD -BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD -BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD -BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD -BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDC0C0C0C6C6C6D5D5D5E8E8E8F6F6F6FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1 -E6E6E6DDDDDDD9D9D9D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D9D9D9DDDDDDE6E6E6 -F1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFDFDFDF9F9F9F4F4F4F0F0F0EEEEEEEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEEEEEEF0F0F0F4F4F4F9F9F9FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFCFCFCFAFAFAFAFAFAF9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9D3DF8AB4E6 -8AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E6 -8AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E6 -8AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E6 -8AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E6 -8AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68AB4E6 -8AB4E68AB4E68AB4E68AB4E68AB4E68AB4E68E9CACFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEADBCCF356EB26CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE -6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE -6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE -6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE -6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE -6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE6CB6FE4686D0556983FEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFAFAFAAAB9CC3168AA4283CB8FD7FF8FD7FF8FD7FF8FD7FF -8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF -8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF -8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF -8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF -8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF8FD7FF64A7DF -2F66A6546882FBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF6F6F6A6B5C83168AA3878C4 -4487D280C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF -80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF -80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF -80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF -80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF80C8FF -80C8FF80C8FF5FA3E23775C02F66A6536781F6F6F6FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFA -F0F0F09FAEC13168AA3878C43B7DCC4487D56EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF -6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF -6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF -6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF -6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF -6EB5FF6EB5FF6EB5FF6EB5FF6EB5FF579BE53979C63775C02F66A650647EF0F0F0FAFAFAFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEE2EBED -83CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE4 -83CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE4 -83CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE4 -83CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE4 -83CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE4 -83CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE4 -83CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE4 -83CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE4 -83CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE4 -83CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE4 -83CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE4 -83CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE4 -83CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE4 -83CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE483CFE4 -83CFE483CFE483CFE483CFE483CFE483CFE483CFE491B5BFFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8ECECEC99A8BB3168AA3878C43B7DCC3D7FCF4387D85DA3F75DA3F7 -5DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F7 -5DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F7 -5DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F7 -5DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F7 -5DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F75DA3F74F94E63C7DCB3979C63775C02F66A6 -4E627CECECECF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFDFDFDFAFAFAC3D6DB2E9AB85FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF -5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF -5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF -5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF -5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF -5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF -5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF -5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF -5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF -5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF -5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF -5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF -5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF -5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF -5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF5FEDFF46C6E0548390FAFAFA -FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B93168AA3878C43B7DCC -3D7FCF3E82D34287D84B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E3 -4B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E3 -4B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E3 -4B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E3 -4B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E34B90E3488CDF3E81D1 -3C7DCB3979C63775C02F66A64D617BEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF9F9F9F1F1F1B7CACF2C92AF47BED789FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -73E9F22C94B151808DF1F1F1F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -97A6B93168AA3878C43B7DCC3D7FCF3E82D34084D64286D94286D94286D94286D94286D94286D9 -4286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D9 -4286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D9 -4286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D9 -4286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D9 -4286D94286D94085D63E81D13C7DCB3979C63775C02F66A64D617BEAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF6F6F6E8E8E8ACBFC42C92AF -33ABCC48C5E07EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF -7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF -7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF -7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF -7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF -7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF -7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF -7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF -7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF -7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF -7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF -7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF -7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF -7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF7EFFFF -7EFFFF7EFFFF7EFFFF6CEBF333A9CA2C94B14D7C89E8E8E8F6F6F6FCFCFCFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA97A6B93168AA3878C43B7DCC3D7FCF3E82D34084D64286D94286D9 -4286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D9 -4286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D9 -4286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D9 -4286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D94286D9 -4286D94286D94286D94286D94286D94286D94085D63E81D13C7DCB3979C63775C02F66A64D617B -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFB -F3F3F3E0E0E0A4B7BC2C92AF33ABCC36B3D645C5E26CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF -6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF -6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF -6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF -6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF -6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF -6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF -6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF -6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF -6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF -6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF -6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF -6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF -6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF -6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF6CF3FF60E4F435AED033A9CA2C94B14A7986E0E0E0F3F3F3 -FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83168AA3978C43B7DCB3D7FCF -3F82D24184D54286D84386D94386D94386D94386D94386D94386D94386D94386D94386D94386D9 -4386D94386D94386D94386D94386D94386D94386D94386D94386D94386D94386D94386D94386D9 -4386D94386D94386D94386D94386D94386D94386D94386D94386D94386D94386D94386D94386D9 -4386D94386D94386D94386D94386D94386D94386D94386D94386D94386D94386D94386D94386D9 -4386D94386D94386D94386D94386D94386D94386D94386D94386D94386D94185D63F81D03C7DCB -3A79C53875BF3066A64D617BEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFAFAFAF2F2F2DDDDDDA0B3B82C92AE33ABCC36B3D538B6D842C3E45BE0FE -5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE -5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE -5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE -5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE -5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE -5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE -5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE -5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE -5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE -5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE -5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE -5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE -5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE -5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE5BE0FE53D7F537B3D535AECF33A9CA -2C94B1497885DDDDDDF2F2F2FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B8 -3268A93978C33C7DCB3E7FCE3F82D24184D54386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84185D53F81D03D7DCA3A79C53875BF3066A54D617AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB2B72C92AE33ABCB -36B3D538B6D839B9DB3FC1E44ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF1 -4ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF1 -4ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF1 -4ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF1 -4ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF1 -4ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF1 -4ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF1 -4ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF1 -4ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF1 -4ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF1 -4ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF1 -4ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF1 -4ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF1 -4ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF14ACDF147CAED -39B8DA37B3D535AECF33A9C92C94B0487783DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEF0F4E7F0F5E7E2EBCFE4EDD0D7E6BAD8E7BAD9E8BBDAE9BB -CCE0A4CDE1A4CEE2A5CEE3A5CDE1A4DAE9BBD9E7BBD7E6BAE4EED0E3ECD0E2EBD0E1EACFF0F4E7 -EFF4E6FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA97A6B83268A93978C33C7DCB3E7FCE3F82D24184D54386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84185D53F81D03D7DCA3A79C53875BF3066A54D617AEAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1 -DCDCDC9FB2B72C92AE33ABCB36B3D538B6D839B9DC3BBCDF3DBFE23DC0E33DC0E33DC0E33DC0E3 -3DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E3 -3DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E3 -3DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E3 -3DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E3 -3DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E3 -3DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E3 -3DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E3 -3DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E3 -3DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E3 -3DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E3 -3DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E3 -3DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E3 -3DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E33DC0E3 -3DC0E33DC0E33DC0E33BBDE039B8DA37B3D535AECF33A9C92C94B0487783DCDCDCF1F1F1FAFAFA -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEF0F4E7E3ECD0CADDA3D1E6A6B9D97AC2E47EAAD653B0DD56B5E35ABAE85DBFED61C4F164 -C8F467C9F569CAF66ACCF76BCDF86CCEF96DCFF96FD0FA6FCEF96ECCF76BC9F569C7F467C4F265 -C2F063BFED61BDEB5FBAE85DB7E55BB4E259AFDC56B6DC68BBDC7AC3DD8FDBEABCD6E4BAE1EACF -FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83268A93978C33C7DCB3E7FCE3F82D2 -4184D54386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84185D53F81D03D7DCA3A79C5 -3875BF3066A54D617AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB2B72C92AD33AACA36B2D438B6D739B9DB3BBCDE3CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBDDF39B8D937B3D435AECE33A9C82C94AF -487783DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFE -E2EBD0CEE2A5C6E091BFE07EACD755B7E35CC1EE63C9F56AD1F971D8FD79E0FF81E5FF86E8FF8A -ECFF8DEFFF91F2FF94F4FF97F6FF99F7FF99F7FF9AF7FF9AF8FF9BF8FF9BF9FF9BF9FF9BF8FF9B -F7FF9AF6FF99F5FF97F4FF96F3FF95F1FF93EFFF91EEFF90ECFF8EEAFF8CE6FF88DFFE80D8FC79 -D1FA72CAF66CC3F065BBE95FB3E059BAE06BB1D667C5DF90D6E5B9DFE7CEFEFEFEFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83268A9 -3978C33C7DCB3E7FCE3F82D24184D54386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4185D53F81D03D7DCA3A79C53875BF3066A54D617AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B72D91AD34AACA37B2D3 -39B5D73AB8DA3CBBDE3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13CBCDF3AB7D9 -38B2D336ADCE34A8C82D93AF497683DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -F1F6E8CBDEA4B7D67AABD554BEEB60CDF76DD5FB76DDFE7EE4FF85EBFF8DF1FF93F5FF98F8FF9B -FAFF9DFBFF9EF9FF9DF8FF9CF7FF9BF6FF99F5FF98F4FF97F2FF96F2FF96F1FF95F1FF95F0FF94 -F0FF93EFFF93EFFF92EFFF93F0FF94F1FF94F1FF95F2FF95F2FF96F3FF96F4FF97F4FF97F5FF98 -F5FF98F6FF9AF7FF9AF7FF9AF6FF99F4FF97F0FF93ECFF8EE6FF88E0FE82D9FD7BD0F972C2EF64 -B3E059B3D967C1DA8ED5E3B9EEF2E6FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA97A6B83268A93978C33C7DCB3E7FCE3F82D24184D54386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84185D53F81D03D7DCA3A79C53875BF3066A54D617AEAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC -9FB1B62D91AC34AAC937B2D339B5D63AB8DA3CBBDD3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03CBCDE3AB7D838B2D336ADCD34A8C72D93AF497683DCDCDCF1F1F1FAFAFAFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEEEF2E6CADDA3B1D667B6E35BC6F367D2FA74E0FF82ECFF8FF4FF97F8FF9BF9FF9BF8FF9B -F5FF98F3FF96F1FF94EEFF92ECFF90E9FF8DE7FF8BE6FF8AE5FF89E4FF88E3FF87E1FF85E0FF84 -DFFF84DFFF84DEFF83DEFF83DDFF82DDFF81DCFF81DDFF82DEFF82DEFF83DFFF84E0FF84E0FF85 -E1FF85E1FF86E2FF86E3FF87E3FF87E5FF89E7FF8BE9FF8DEBFF8FECFF90EEFF92EFFF93F1FF95 -F2FF96F3FF96F2FF95EBFF8FE1FE84D4FB77C8F56BBCE960AED955ABCF63C2D3A0FEFEFEFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83268A93978C33C7DCB3E7FCE3F82D24184D5 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84185D53F81D03D7DCA3A79C53875BF -3066A54D617AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFAFAFAF1F1F1DCDCDC9FB1B62D91AC34A9C937B1D239B4D53AB7D93CBADC3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3CBBDD3AB6D838B1D236ACCC34A7C72D93AE497682 -DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEC9DCA2A1CA4FBBE960D2FA76E4FF87EDFF90F2FF96F3FF97F0FF95 -EDFF91E9FF8EE7FF8CE5FF8AE2FF88E0FF86DEFF83DBFF81D8FF7ED6FE7CD4FD7AD3FD79D2FC78 -D0FB76CFFB75CEF974CCF873CCF872CBF872CBF771CAF771CAF670C9F670C9F56FC9F670CAF771 -CBF772CCF872CCF973CDF974CEFA74CEFA75CFFB75CFFB76D0FC76D2FD78D4FE7AD6FE7CD9FF7E -DBFF80DCFF82DEFF83DFFF85E1FF86E3FF88E6FF8BE9FF8EEBFF90EAFF8FE8FF8DE2FF87D9FD7D -C8F56CAFDC57A7CA61BECE9DFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83268A93978C3 -3C7DCB3E7FCE3F82D24184D54386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84185D5 -3F81D03D7DCA3A79C53875BF3066A54D617AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B62C90AB33A8C836B0D138B3D4 -39B6D83BB9DB3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBADC3AB5D737B0D1 -35ABCB33A6C62C92AD487682DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEECF0E5ADCB74B6E35CCBF76FDFFF83EDFF91ECFF90 -E9FF8EE6FF8BE3FF88E0FF85DCFF81D8FF7ED5FE7BD3FD79D1FC77CEFA75CCF872C9F570C6F36D -C3F06AC2EE69C0ED67BFEC66BEEA65BCE963BBE762BAE661B9E561B8E560B8E460B7E45FB7E35F -B7E35EB6E25EB7E35FB8E45FB8E560B9E561BAE661BBE762BBE863BCE864BDE964BDEA65BEEA65 -C0EC67C2EF69C4F16BC7F46EC9F670CBF872CDF973CEFB75D0FC77D2FD78D6FE7CDAFF80DCFF82 -DEFF84E0FF85E1FF87E3FF88E2FF87D2FA77BCEA62A9D45395B458FDFDFDFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA97A6B83268A93978C33C7DCB3E7FCE3F82D24184D54386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84185D53F81D03D7DCA3A79C53875BE3066A54D617AEAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B6 -2C8FAA33A7C736AFD038B2D339B5D73BB8DA3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3BB9DB39B4D537AFD035AACA33A5C42C91AC487582DCDCDCF1F1F1FAFAFAFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDA0B96DA4CD4FC5F16B -DFFF83E1FF86E2FF86DDFF82D9FF7ED6FE7CD3FD79CFFA75CAF671C6F26DC4EF6BC1ED68BFEA66 -BCE763B9E561B7E25EB4DF5CB1DC59AFDA57AED956ADD855ACD654ABD653AAD552A9D452A9D451 -A9D351A9D351A8D351A8D351A8D350A8D250A8D350A9D351A9D351A9D451AAD452AAD552AAD552 -ABD653ABD654ACD754ACD755AED956B0DB58B3DE5AB5E05DB7E35FBAE561BCE763BEE965BFEB67 -C2ED69C6F16DCAF571CEF974D0FB77D2FC78D3FD7AD6FE7CDCFF81DCFF82D4FD7BBEE96695BB46 -849561FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83268A93978C33C7DCB3E7FCE3F82D24184D54386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84185D53F81D03D7DCA3A79C53875BE3066A5 -4D617AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FAFAFAF1F1F1DCDCDC9FB1B62C8FAA33A7C636AECF38B1D339B4D63BB8DA3CBADD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3BB8DA39B4D537AFCF35AACA33A5C42C90AC487582DCDCDC -F1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -FAFAFA7C9C3B9DC44CB8E361D2FD78D6FF7CD4FD7ACDF974C9F470C6F16EC2ED6ABEE966B9E461 -B5DF5DB2DC5BAFDA58ADD756ABD554AAD353A8D251A7D151A7D150A7D150A7D150A7D150A7D150 -A7D150A7D150A7D150A7D150A7D150A7D150A7D150A7D150A7D150A7D150A7D150A7D150A7D150 -A7D150A7D150A7D150A7D150A7D150A7D150A7D150A7D150A7D150A7D150A7D150A8D251A9D252 -AAD453ABD554ADD756AFD958B1DC5AB5E05EBAE562BEE966C2EC6AC3EE6CC5F06DC9F571D0FB77 -D5FE7CD0FA76ABD4578CB0436F8245FAFAFAFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83268A93978C33C7DCB -3E7FCE3F82D24184D54386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84185D53F81D0 -3D7DCA3A79C53875BE3066A54D617AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B62C8EA933A6C535ADCE37B0D239B3D5 -3AB6D83CB9DB3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3BB7D939B2D437AECE34A9C9 -32A4C32C90AB487581DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFCFCFCE4E7DE7A993A92B8449CC449A5CE50C1EB68C5F06CBEE966B9E361 -B5DF5EB1DB5AADD756AAD353A8D151A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D150A8D251AAD453AED757B2DC5B -B5DF5EB7E160BDE765C3EE6BB5DF5FA1C94E95BC4585A83E506427F7F7F7FCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -97A6B83268A93978C33C7DCB3E7FCE3F82D24184D54386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84185D53F81D03D7DCA3A79C53875BE3066A54D617AEAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B62B8DA8 -32A5C435ACCD37AFD038B2D43AB5D73BB7DA3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3AB6D838B1D336ACCD34A8C832A3C22B8EAA487481DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBE1E4DB7A983A91B7449BC3499FC84B -A2CC4DABD555AFD958AAD353A7D151A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50 -A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50 -A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50 -A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50 -A6CF50A6CF50A6CF50A7D050A7D151AAD354AFD858A9D2549EC64B9AC14894BB4585A73E506327 -F2F2F2FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA97A6B83268A93978C33C7DCB3E7FCE3F82D24184D54386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84185D53F81D03D7DCA3A79C53875BE3066A54D617A -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFA -F1F1F1DCDCDC9FB0B52B8CA732A4C335ACCC37AFCF38B2D33AB5D63BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93AB5D738B1D136ACCC34A7C732A2C12B8EA9487480DCDCDCF1F1F1 -FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFADFE1D9 -79973991B5439BC2489EC64AA2CA4DA4CC4EA5CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4F -A6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4F -A6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4F -A6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4F -A6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA4CD4EA1C94C9DC44A -99C04794B94484A53D506327F0F0F0FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83268A93978C33C7DCB3E7FCE -3F82D24184D54386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84185D53F81D03D7DCA -3A79C53875BE3066A54D617AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB0B52B8CA632A3C235ABCB37AECE38B1D13AB4D5 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83AB5D638B0D036ABCB34A6C632A1C0 -2B8DA8487480DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFAFAFADFE1D979973990B5439AC1489EC64AA1CA4DA3CC4EA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA4CC4EA0C84C9CC44A98BF4793B94484A53D4F6327EFEFEFFAFAFAFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B8 -3268A93978C33C7DCB3E7FCE3F82D24184D54386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84185D53F81CF3D7DCA3A79C53875BE3066A54D617AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB0B52A8BA531A2C1 -34A9C936ACCD37AFD039B3D43AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D739B3D4 -37AFCF35AACA33A5C431A0BF2B8CA747737FDCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFADFE1D97896388FB44299C0479DC549A0C94C -A2CB4DA3CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA3CB4E9FC74B9BC34997BE4692B84483A43C4F6226EFEFEF -FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA97A6B83268A93978C33C7DCB3E7FCE3F82D24184D54386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84185D53F81CF3D7DCA3A79C53875BE3066A54D617AEAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1 -DCDCDC9EB0B52A8AA431A1C034A9C836ACCC37AFCF39B2D23AB4D53AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D639B2D337AECE35A9C833A4C3319FBD2B8CA647737FDCDCDCF1F1F1FAFAFA -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFADFE1D9779538 -8EB24298BF469CC3499FC74BA1C94CA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4E -A2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4E -A2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4E -A2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4E -A2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA1CA4D9EC64B9AC14896BD46 -91B64381A33C4E6126EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83268A93978C33C7DCB3E7FCE3F82D2 -4184D54386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84185D53F81CF3D7DCA3A79C5 -3875BE3066A54D617AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9EB0B52A8AA331A1BF34A8C736ABCA37AECE39B1D13AB4D4 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D55FDBF8FFFFF182B4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -82E7FFFFFFF182B4D53AB4D55FDBF8FFFFF182B4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4E3C2FFFFE1DBDB3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D539B2D237ADCD35A9C733A4C2319FBC2B8BA5 -47737EDCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFAFAFADEE1D97695378DB24197BE469BC3489EC64AA0C84CA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A0C94C9DC54A9AC14896BC4590B64381A23B4D6125EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83268A9 -3978C33C7DCB3E7FCE3F82D24184D54386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4185D53F81CF3D7DCA3A79C43875BE3066A54D617AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9EB0B42A89A230A0BD33A7C6 -35AAC937ADCD38B0D039B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339CDF1FFFFFFFFFFF7A3C0D339B2D339B2D339B2D339B2DB -A3F2FFFFE6E139B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D35FDAF7FFFFF1 -81B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339CDF1FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFE1DADB39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D381E6FFFFFFF181B2D339B2D35FDAF7FFFFF181B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2E1C2FFFFE1DADB39B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B1D137ACCB -34A7C632A3C1309EBB2A8AA447727EDCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFADEE1D97594378CB14196BD469AC2489DC54A9FC74C -A0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94D -A0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94D -A0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94D -A0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94D -A0C94DA0C94DA0C94DA0C94D9FC84C9CC44A99C04895BB458FB54280A23B4D6025EFEFEFFAFAFA -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA97A6B83268A93978C33C7DCA3E7FCE3F82D14184D54386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D84386D8 -4386D84386D84386D84386D84184D53F80CF3D7DCA3A79C43875BE3065A54D617AEAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC -9EB0B42988A1309EBC33A6C535A9C836ACCB38AFCF39B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139CCF0FFFFFFFFFFFFFFE6E1 -39B1D139B1D139B1D139B1D9A3F2FFFFE6E139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139BFE8E1FFFFC2CCD139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D15FD9F7FFFFF081B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139CCF0FFFFF7A3BFD139B1D139B1D139CCF0FFFFFFE1D9D939B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D15FD9F7 -FFFFF081B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1E1C2FFFFE1D9D939B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D138B0D036ABCA34A6C532A2C0309DBA2A89A347727DDCDCDCF1F1F1FAFAFAFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFADEE1D97492368BAF40 -95BC4599C0479CC4499DC64B9FC74C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C -9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C -9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C -9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C -9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9EC74B9BC34997BF4793BA448EB342 -7FA03A4C6025EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83267A83977C23C7CCA3E7ECD3F81D14183D4 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74184D43F80CE3D7CC93A78C33874BD -3065A44D617AEAEAEAF8F8F8FDFDFDFEFEFEFEFEFEFCFCFCDBDBDB4646460000005E5E5EFCFCFC -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFAFAFAF1F1F1DCDCDC9EB0B42987A0309EBB33A6C435A9C736ACCA38AECE39B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39CCF0FFFFF7C2E6F7FFFFFFC2CCD039B1D039B1D039B1D8A3F2FFFFE6E039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039BFE8E1FFFFC2CCD039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D05FD9F7FFFFF081B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039CCF0FFFFF7A3BFD039B1D039B1D039B1D8A3F2FFFFF2E8 -5FB1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D05FD9F7FFFFF081B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1E0 -C2FFFFE1D9D839B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D038AFCE36ABC934A6C432A1BF309DB92A89A247727D -DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF787878404040 -7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FAFAFADEE1D97491368AAE4094BA4598BF479BC3499DC54B9EC64C9EC64C9EC64C9EC64C9EC64C -9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C -9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C -9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C -9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9DC54B -9AC14997BD4793B9448DB2427E9F3A4C5F25EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83267A83977C2 -3C7CCA3E7ECD3F81D14183D44385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74184D4 -3F80CE3D7CC93A78C33874BD3065A44D617AEAEAEAF8F8F8FCFCFCFCFCFCEAEAEA737373070707 -000000000000070707F6F6F6FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9EAFB429869F2F9DBA32A4C233A7C6 -35AAC937ADCC38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38B0CF38CBEFFFFFF7A2BDE0C2FFFFFFF2E75EB0CF38B0CF38B0D7A2F2FF -FFE5E038B0CF38B0CF38B0CF38BDE7E1FFFFFFFFFFFFFFFFFFF2E75EB0CF38B0CF80E5FFFFFFFF -FFFFFFFFFFFFFFFFFFFFF2E780D8F7FFFFF7A2BDCF38B0CF38B0CF38B0E0C2FFFFFFE5E038B0CF -38B0CF38B0CF5ED8F7FFFFEF80B0CF38B0CF38B0CF38BDE7E1FFFFFFFFFFFFFFFFFFFFFFC2CBCF -38B0CF38B0CF38B0CF5ED8F7FFF2E75EBDE7E1FFFFFFFFFFC2CBCF38B0CF5ED8F7FFFFEF80B0CF -38B0CF38B0E0C2FFFFFFFFEF80B0CF38B0CF38B0CF38B0CF38B0CF38CBEFFFFFF7A2BDCF38B0CF -38B0CF38B0D7A2F2FFFFE5E038B0CF38B0CF80E5FFFFFFEF80B0CF38B0CF38B0CF38B0E0C2FFFF -E1D8D738B0CF38B0CF5ED8F7FFFFEF80B0CF38B0CF5ED8F7FFFFEF80B0CF38B0CF38B0CF38CBEF -FFFFFFFFFFFFFFFFF7A2BDE0C2FFFFE1D8D738B0CF38B0CF38B0CF38BDE7E1FFFFFFFFFFFFFFFF -FFF2E75EB0CF38B0CF38B0CF5ED8F7FFF2E75EBDE7E1FFFFFFFFFFC2CBCF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF37AECD35A9C833A5C2 -31A0BD2F9BB82988A146717DDCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -8F8F8F181818000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFAFAFADEE1D973903689AD3F93B94497BE469AC1499CC34A9DC54B -9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B -9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B -9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B -9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B -9DC54B9DC54B9DC54B9CC44A99C04896BC4692B7438CB1417E9E3A4B5E24EFEFEFFAFAFAFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA97A6B83267A83977C23C7CCA3E7ECD3F81D14183D44385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74184D43F80CE3D7CC93A78C33874BD3065A44D617AE9E9E9F6F6F6F9F9F9 -929292161616000000000000000000000000858585EFEFEFF9F9F9FEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9EAFB4 -28869E2F9CB931A3C133A6C435A9C836ACCB38AECE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38CAEFFFFFF7A2BDCE38CAEFFFFFFF -C2CACE38AFCE38AFD6A2F2FFFFE5DE38AFCE38AFCE38CAEFFFFFFFE1D8D638AFCE38AFD6A2F2FF -FFFFEF80AFCE38AFCE38BDE7E1FFFFC2CACE38AFCE38AFCE38BDE7E1FFFFE1D8D638AFCE38AFCE -38CAEFFFF2F7E1F2E75EAFCE38AFCE38AFCE80E5FFFFF2E75EAFCE38AFCE38CAEFFFFFFFE1D8D6 -38AFCE38AFCE38CAEFFFFFFFE1D8D638AFCE38AFCE5ED8F7FFFFFFFFFFEF80AFCE38AFCE38AFCE -38AFCE5ED8F7FFFFEF80AFCE38AFD6A2F2FFFFFFEF80AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38CAEFFFFFF7A2BDCE38AFCE38AFCE5ED8F7FFFFFFC2CACE38AFCE38AFCE80E5FFFFFFEF80AFCE -38AFCE38AFCE38AFDEC2FFFFE1D8D638AFCE38AFCE5ED8F7FFFFEF80AFCE38AFCE5ED8F7FFFFEF -80AFCE38AFCE38CAEFFFFFFFC2CACE38AFCE38BDE7E1FFFFFFFFFFE1D8D638AFCE38AFCE38CAEF -FFFFFFE1D8D638AFCE38AFD6A2F2FFFFFFEF80AFCE38AFCE5ED8F7FFFFFFFFFFEF80AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE37ADCC35A8C733A4C1319FBC2E9AB72887A046717CDCDCDCF1F1F1FAFAFAFEFEFEFFFFFF -FFFFFFFFFFFFB7B7B7282828000000000000000000000000606060FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFADEE1D9728F3588AC3F92B843 -96BC4698C0489AC2499CC34A9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B -9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B -9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B -9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B -9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9BC34A98BF4894BB4690B6438BAF407C9D39 -4A5E24EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83267A83977C23C7CCA3E7ECD3F81D14183D44385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74184D43F80CE3D7CC93A78C33874BD3065A3 -4D617AE6E6E6BCBCBC2D2D2D000000000000000000000000313131A9A9A9D8D8D8EAEAEAF7F7F7 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FAFAFAF1F1F1DCDCDC9EAFB428859D2E9BB831A2C032A5C334A8C736ABCA37ADCC37AECD37AECD -37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD -37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD36C9EE -FFFFF7A2BCCD36AED5A2F2FFFFF2E75DAECD36AED5A2F2FFFFE5DE37AECD36AED5A2F2FFFFE5DE -37AECD37AECD37AECD36BCE7E1FFFFC1C9CD37AECD36BCE7E1FFFFC1C9CD37AECD37AECD36AED5 -A2F2FFFFE5DE37AECD37AECD5DD7F7E1D7E7C1FFF7A2BCCD37AECD36AEDEC1FFFFE1D7D537AECD -36AED5A2F2FFFFE5DE37AECD37AECD37AECD37AECD80E5FFFFF2E75DAECD37AECD5DD7F7FFFFFF -C1C9CD37AECD37AECD37AECD37AECD5DD7F7FFFFEE80AED5A2F2FFFFFFEE80AECD37AECD37AECD -37AECD37AECD37AECD37AECD36C9EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E75DAECD37AECD -37AECD80E5FFFFFFEE80AECD37AECD37AECD36AEDEC1FFFFE1D7D537AECD37AECD5DD7F7FFFFEE -80AECD37AECD5DD7F7FFFFEE80AECD36AED5A2F2FFFFE5DE37AECD37AECD37AECD36BCE7E1FFFF -E1D7D537AECD36AED5A2F2FFFFE5DE37AECD37AECD37AECD36BCE7E1FFFFC1C9CD37AECD5DD7F7 -FFFFFFC1C9CD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD -37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD37AECD -37AECD37AECD37AECD37AECD37AECD36ACCB34A7C532A2C0309EBB2E99B628869F46717CDCDCDC -F1F1F1FAFAFAFEFEFEFFFFFFD7D7D7484848000000000000000000000000181818A7A7A7FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFA -DEE1D9718E3587AB3E91B64395BB4598BE479AC0499BC24A9BC24A9BC24A9BC24A9BC24A9BC24A -9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A -9BC24ABDEBFFFFFFC7BDC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A -9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A -9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9AC14997BD47 -94B94590B5428AAE407C9C394A5D24EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83267A83977C23C7CCA -3E7ECD3F81D14183D44385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74184D43F80CE -3D7CC93A78C33874BC2F64A244566C4D4D4D0000000000000000000000001818187F7F7FBCBCBC -C7C7C7D9D9D9EAEAEAF6F6F6FBFBFBFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFDFDFDFCFCFCF8F8F8F0F0F0DCDCDC9EAFB328849C2E9AB731A1BF32A4C234A7C5 -36AAC937ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB36C8EEFFFFF7A2BACB37ACCB36C8EEFFFFFFE1D6D436ACD4A2F2FFFFE4DC -37ACCB36ACDCC1FFFFE1D6D437ACCB37ACCB37ACCB36ACDCC1FFFFE1D6D437ACCB36BAE6E1FFFF -C1C8CB37ACCB37ACCB37ACCB5DD6F7FFFFEE80ACCB37ACCB80E4F7A2BACB80E4FFC1C8CB37ACCB -36C8EEFFFFF7A2BACB37ACCB36BAE6E1FFFFE1D6D437ACCB37ACCB37ACCB37ACCB5DD6F7FFFFF7 -A2BACB37ACCB5DD6F7FFFFEE80ACCB37ACCB37ACCB37ACCB37ACCB5DD6F7FFFFFFFFFFFFFFFFEE -80ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB36C8EEFFFFF7A2BACB37ACCB37ACCB -36ACDCC1FFFFFFFFEE80ACCB37ACCB80E4FFFFFFEE80ACCB37ACCB37ACCB36ACDCC1FFFFE1D6D4 -37ACCB37ACCB5DD6F7FFFFEE80ACCB37ACCB5DD6F7FFFFEE80ACCB36ACDCC1FFFFE1D6D437ACCB -37ACCB37ACCB36ACDCC1FFFFE1D6D437ACCB36ACDCC1FFFFE1D6D437ACCB37ACCB37ACCB36ACDC -C1FFFFE1D6D437ACCB5DD6F7FFFFEE80ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB36ABC934A6C432A1BF309DBA -2E98B528859E46707BDCDCDCF1F1F1FAFAFAE6E6E6686868000000000000000000000000080808 -7F7F7FF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFAFAFADEE1D9708D3586A93E90B54394BA4597BD4799BF489AC14A9AC14A -9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A -9AC14A9AC14A9AC14A9AC14A9AC14ABDEBFFFFFFC7BDC14A9AC14A9AC14A9AC14A9AC14A9AC14A -9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A -9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A -9AC14A9AC14A99C04996BC4793B8458FB34289AD407B9B394A5C24EFEFEFFAFAFAFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -97A6B83267A83977C23C7CCA3E7ECD3F81D14183D44385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74184D43F80CE3D7CC83A77C1356EB317304F020304000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000CFCFCFDADADA9EAFB327839B -2D99B530A0BE32A3C133A6C435A8C736ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36C8EDFFFFF7A2B9CA36ABCA36ABD3A2F2FF -FFFFED80ABD3A2F2FFFFE4DC36ABCA36B9E5E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -E1D6D336ABCA36B9E5E1FFFFC1C8CA36ABCA36ABCA36ABCA36B9E5E1FFF7A2B9CA36ABDCC1FFED -80ABCA5DD6F7FFE4DC36ABCA5DD6F7FFF2E55DABCA36ABCA36B9E5E1FFFFC1C8CA36ABCA36ABCA -36ABCA36ABCA36C8EDFFFFF7A2B9CA36ABCA5DD6F7FFFFED80ABCA36ABCA36ABCA36ABCA36ABCA -5DD6F7FFFFEDC1E4FFFFFFF7A2B9CA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36C8ED -FFFFF7A2B9CA36ABCA36ABCA36ABCA36B9E5E1FFFFE1D6D336ABCA80E4FFFFFFED80ABCA36ABCA -36ABCA36ABDCC1FFFFE1D6D336ABCA36ABCA5DD6F7FFFFED80ABCA36ABCA5DD6F7FFFFED80ABCA -36B9E5E1FFFFE1D6D336ABCA36ABCA36ABCA36ABDCC1FFFFE1D6D336ABCA36B9E5E1FFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1D6D336ABCA5DD6F7FFFFED80ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -35A9C833A5C331A0BE2F9CB92D97B327849D466F7BDCDCDCE9E9E9848484101010000000000000 -000000000000000000282828404040404040404040404040404040404040404040404040787878 -7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F -7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBF -BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFADEE0D96F8C3485A83D8EB34292B844 -95BB4697BD4898BF4999C04999C04999C04999C04999C04999C04999C04999C04999C04999C049 -99C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C049 -99C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C049 -99C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C049 -99C04999C04999C04999C04999C04999C04998BE4894BB4691B7448DB24188AB3F7A9938495B23 -EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA97A6B83267A83977C23C7CCA3E7ECD3F81D14183D44385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74184D43F80CE3D7BC73267A7050A11000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -CACACAD8D8D89DAEB227829A2D98B4309FBC31A2C033A4C335A7C636AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936C8EDFFFFF6 -A2B9C936AAC936AAC936B9E5E1FFFFE1D5DBA2F2FFFFE3DB36AAC936AADBC1FFFFE1D5D336AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936B9E5E1FFFFC1C8C936AAC936AAC936AAC936AADB -C1FFFFE1D5D336B9E5E1F2E55DAAC936B9E5E1F2E55DAAD3A2F2FFE1D5D336AAC936AAC936B9E5 -E1FFFFE1D5D336AAC936AAC936AAC936AAC95DD5F6FFFFF6A2B9C936AAC95DD5F6FFFFED80AAC9 -36AAC936AAC936AAC936AAC95DD5F6FFFFED80AAD3A2F2FFFFFFED80AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936C8EDFFFFF6A2B9C936AAC936AAC936AAC936AADBC1FFFFE1D5D336AAC9 -80E3FFFFFFED80AAC936AAC936AAC936AADBC1FFFFE1D5D336AAC936AAC95DD5F6FFFFED80AAC9 -36AAC95DD5F6FFFFED80AAC936AADBC1FFFFE1D5D336AAC936AAC936AAC936AADBC1FFFFE1D5D3 -36AAC936AADBC1FFFFE1D5D336AAC936AAC936AAC936AAC936AAC936AAC936AAC95DD5F6FFFFED -80AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC935A8C733A3C2319FBD2F9BB82D96B227839C466F7AC0C0C01E1E1E -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000002828284040403F3F3F383836 -1C230D6C88328EB34292B84495BB4696BD4898BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4997BE4894BA4691B644 -8DB14187AB3F799938495B23EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83267A83977C23C7CCA3E7ECD -3F81D14183D44385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74184D43F7FCD3C7AC6 -3773BB29558B0A1523000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000C1C1C1D4D4D49DAEB22781982D97B3309EBB31A1BE33A4C235A7C5 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836C8EDFFFFF6A2B9C836AAC836AAC836AAC880E3FFFFFFF6E1F2FFFFE3DB36AAC8 -36AAD2A2F2FFFFE3DB36AAC836AAC836AAC836AAC836AAC836AAC836AAC836B9E4E1FFFFC1C8C8 -36AAC836AAC836AAC836AAC880E3FFFFF2E480D5F6E1D5D236AAC836AADBC1FFF6A2B9DBC1FFF6 -A2B9C836AAC836AAC836AAD2A2F2FFFFE3DB36AAC836AAC836AAC836AAC880E3FFFFF2E45DAAC8 -36AAC85DD5F6FFFFED80AAC836AAC836AAC836AAC836AAC85DD5F6FFFFED80AAC836B9E4E1FFFF -FFE3DB36AAC836AAC836AAC836AAC836AAC836AAC836C8EDFFFFF6A2B9C836AAC836AAC836AAC8 -36B9E4E1FFFFE1D5D236AAC85DD5F6FFFFED80AAC836AAC836AAC836B9E4E1FFFFE1D5D236AAC8 -36AAC85DD5F6FFFFED80AAC836AAC85DD5F6FFFFED80AAC836AAD2A2F2FFFFE3DB36AAC836AAC8 -36AAC836C8EDFFFFFFE1D5D236AAC836AAD2A2F2FFFFE3DB36AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC85DD5F6FFFFED80AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC835A8C633A3C0319FBB2F9AB62D96B1 -27839B466F7ADCDCDCC4C4C4373737000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000627C2D8DB24191B74393BA4595BC4697BD4897BE4897BE48 -97BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE48 -97BE4897BE4897BE4897BE48A9DFE3FFFFC7BBBE4897BE48A9DFE3FFF4A9A9BE8ADDFFFFFFFFFF -FFFFFFDDD44897BE4897BE4897BE48A9DFE3FFF4A9A9BE8ADDFFFFFFFFFFFFFFFFEEDF6A97BE48 -97BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE48 -97BE4896BC4793B9458FB5438BB04086AA3E789837485B23EFEFEFFAFAFAFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B8 -3267A83977C23C7CCA3E7ECD3F81D14183D44385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74184D43F7FCD3C79C43771B83166A6275184252E3A0F0F0F000000000000000000000000 -444444A3A3A3B4B4B4B8B8B8BABABABBBBBBBBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBEBEBEC3C3C3CECECED8D8D8D3D3D39CACB1277F972D96B2 -2F9DBA31A0BD32A3C034A6C435A8C636A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C7 -36A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C7 -36A9C736A9C736A9C736A9C736A9C736A9C736C7EDFFFFF6A2B9C736A9C736A9C736A9C736B9E3 -E1FFFFFFFFFFFFE3DA36A9C736A9C736C7EDFFFFFFC1C7C736A9C736A9C736A9DAC1FFF6A2B9C7 -36A9C736A9DAC1FFFFFFE3DA36A9C736A9C736A9C736A9C736C7EDFFFFEDC1E3FFC1C7C736A9C7 -36A9D0A2F1FFE1F1F6FFFFED80A9C736A9C736A9C736A9C75DD5F6FFFFFFC1C7C736A9C736A9C7 -5DD5F6FFFFFFC1C7C736A9C736A9C75DD5F6FFFFED80A9C736A9C736A9C736A9C736A9C75DD5F6 -FFFFED80A9C736A9C736C7EDFFFFFFE1D5D036A9C736A9C736A9C736A9C736A9C736C7EDFFFFF6 -A2B9C736A9C736A9C736A9D0A2F1FFFFFFED80A9C736A9C736B9E3E1FFFFE1D5D036A9C736B9E3 -E1FFFFFFFFFFE1D5D036A9C736A9C75DD5F6FFFFED80A9C736A9C75DD5F6FFFFED80A9C736A9C7 -5DD5F6FFFFFFC1C7C736A9C736B9E3E1FFFFFFFFFFE1D5D036A9C736A9C736C7EDFFFFFFC1C7C7 -36A9C736A9C736A9DAC1FFF6A2B9C736A9C75DD5F6FFFFED80A9C736A9C736A9C736A9C736A9C7 -36A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C7 -36A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C735A6C5 -33A2BF319EBA2F99B52C94B027829A466F7ADCDCDCF1F1F1FAFAFA9E9E9E181818000000000000 -000000000000404040B7B7B7BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBF8787877F7F7F -7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F -7F7F7F7F7F7F7F7F7F7F7F7F606060404040404040404040404040404040404040404040404040 -4040400E17230E1723404040404040404040404040404040404040404040383838000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000617C2D8BB0408FB54392B845 -94BA4695BC4796BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD48 -96BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD48A8DFE3FFFFC7BABD4896BD48A8DFE3 -FFFFFFFFFFC7BABD4896BD48A8DFE3FFFFE3CCC84896BD4896BD48A8DFE3FFFFFFFFFFE3CCC848 -96BD4896D4C7FFFFFFEEDF6A96BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD48 -96BD4896BD4896BD4896BD4896BD4895BB4791B7458EB4438AAF4085A83D779636475A23EFEFEF -FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA97A6B83267A83977C23C7CCA3E7ECD3F81D14183D44385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74184D43F7FCD3C7AC53771B83267A82753863A495B9E9E9E -5252520505050000000000000000000B0B0B676767BCBCBCBFBFBFC0C0C0C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C3C3C3C8C8C8D2D2D2DADADA -D3D3D39CACB1267F962C95B12F9CB9309FBC32A2BF34A5C235A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535C5ECFFFFF6A1B6C5 -35A7C535A7C535A7C535A7C55CD4F6FFFFFFFFE2D935A7C535A7C535A7C535B6E2E1FFFFFFFFFF -FFFFFFFFFFF6A1B6C535A7C535A7C535A7C535C5ECFFFFFFFFFFFFFFF1E25CA7C535A7C535A7D9 -C1FFFFFFFFF6A1B6C535A7C535A7C55CD4F6FFFFFFFFE2D935A7C535A7C535A7C535A7C535A7C5 -35C5ECFFFFFFFFFFFFFFFFFFFFFFF6A1B6C535A7C535A7C535A7C55CD4F6FFFFEC80A7C535A7C5 -35A7C535A7C535A7C55CD4F6FFFFEC80A7C535A7C535A7C580E2FFFFFFF6A1B6C535A7C535A7C5 -35A7C535A7C535C5ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E25CA7C535A7C535A7C535A7C5 -5CD4F6FFFFFFFFFFFFFFFFEC80A7CFA1F1FFE1D4CF35A7C535A7C55CD4F6FFFFEC80A7C535A7C5 -5CD4F6FFFFEC80A7C535A7C535A7C55CD4F6FFFFFFFFFFFFFFFFEC80A7CFA1F1FFE1D4CF35A7C5 -35A7C535A7C535B6E2E1FFFFFFFFFFFFFFFFFFFFF6A1B6C535A7C535A7C55CD4F6FFFFEC80A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C534A5C332A1BE309CB92E98B42C94AF278199456E79DCDCDCF1F1F1FAFAFA -FEFEFEEFEFEF707070000000000000000000000000202020B7B7B7FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7D7D7BEBEBEBBBBBBA6A8A2516625 -7A9A378BAF408FB44292B74493B94595BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB47 -95BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB47A8DEE3 -FFFFC6B9BB4795BB47A8DEE3FFFFE3CCC74795BB4795BB4795BB8ADDFFFFEEDE6995BB4795BB47 -A8DEE3FFFFFFDDD24795BB4795BB4795BB47B9E9FFFFF4A8A8BB4795BB4795BB4795BB4795BB47 -95BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4794BA4691B6448EB2428AAD3F -85A73D769636475922EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83267A83977C23C7CCA3E7ECD3F81D1 -4183D44385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74184D43F7FCD3C7BC73874BD -346CB02A59903F5064B2B2B2B1B1B1969696343434000000000000000000000000202020A9A9A9 -D4D4D4D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D8D8D8DBDBDBE0E0E0E2E2E2D6D6D69DADB1267F962C95B02F9CB8309EBB32A1BE34A4C135A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C434A5C232A0BD309CB82E98B32C93AE278198 -456E79DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFCFCFCF383838000000000000000000000000 -484848E7E7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFAFAFADEE0D86B873281A23B8AAE408EB34290B54492B74593B94694B94794B94794B947 -94B94794B94794B94794B94794B94794B94794B94794B94794B94794B94794B94794B94794B947 -94B94794B94794B947A7DCE3FFFFC6B9B94794B947A7DCE3FFFFC6B9B94794B94794B94794B98A -DCFFFFFFE88A94B94794B947A7DCE3FFFFC6B9B94794B94794B94794B947A7DCE3FFFFC6B9B947 -94B94794B94794B94794B94794B94794B94794B94794B94794B94794B94794B94794B94794B947 -93B84690B5448CB14288AC3F83A63D759436465822EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83267A8 -3977C23C7CCA3E7ECD3F81D14183D44385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4184D43F80CE3D7CC83977C13670B72D5F9A45576EC7C7C7C5C5C5BEBEBEB4B4B48383831B1B1B -000000000000000000151515E5E5E5EAEAEAECECECEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEAEAEAD9D9D99DADB1267F952C94AF2F9BB7 -309EBA32A0BD34A3C035A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C334A4C1329FBC -309BB72E97B22C92AD278097456E78DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -9F9F9F181818000000000000000000404040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFADDE0D86A863180A13A88AC3F8CB1418FB44391B644 -92B74693B84693B84693B84693B84693B84693B84693B84693B84693B84693B84693B84693B846 -93B84693B84693B84693B84693B84693B84693B846A7DCE2FFFFC6B9B84693B846A7DCE2FFFFC6 -B9B84693B84693B84693B889DCFFFFFFE78993B84693B846A7DCE2FFFFC6B9B84693B84693B846 -93B846A7DCE2FFFFE2CBC44693B84693B84693B84693B84693B84693B84693B84693B84693B846 -93B84693B84693B84693B84692B7458EB3438BB04187AB3F82A53C749335465822EFEFEFFAFAFA -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA97A6B83267A83977C23C7CCA3E7ECD3F81D14183D44385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D74385D7 -4385D74385D74385D74385D74184D43F80CE3D7CC93A78C23873BC2F63A14A5D75D9D9D9DCDCDC -D3D3D3C8C8C8BDBDBDB6B6B66666660C0C0C000000292929EAEAEAF4F4F4F8F8F8F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F6F6F6EFEFEFDBDBDB -9EAEB2257D942B92AD2E99B52F9CB8319FBC33A2BF34A4C134A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C233A3BF319EBA2F9AB62D96B12B91AB267F96456D78DCDCDCF1F1F1FAFAFAFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF707070000000000000383838FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFADDE0D86A86317FA03A -88AC3F8CB1418EB34390B54492B74692B74692B74692B74692B74692B74692B74692B74692B746 -92B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B746A6DBE2FFFFC6 -B8B74692B746A6DBE2FFFFC6B8B74692B74692B74692B789DCFFFFFFE78992B74692B746A6DBE2 -FFFFC6B8B74692B74692B74692B746A6DBE2FFFFC6B8B74692B74692B74692B74692B74692B746 -92B74692B74692B74692B74692B74692B74692B74692B74691B6458EB3438BAF4187AA3F82A43C -749335465722EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83267A83977C23C7CC93E7ECD3F81D04183D3 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64184D33F80CE3D7CC83A78C33874BC -3064A34C6079E4E4E4EBEBEBE8E8E8DFDFDFD2D2D2C6C6C6BEBEBEB1B1B1949494CACACAEAEAEA -F7F7F7FCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FDFDFDF9F9F9F1F1F1DCDCDC9EAEB2257C942B91AD2E98B52F9BB8319EBB33A1BE34A3C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C133A1BF319DBA2F99B52D94B02B90AB267E96456D77 -DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7D7D7878787 -E7E7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FAFAFADDE0D86985317E9F3987AB3E8BB0408DB2428FB44390B64591B64591B64591B64591B645 -91B64591B64591B64591B64591B64591B64591B64591B64591B64591B64591B64591B64591B645 -91B64591B645A5DBE2FFFFC6B8B64591B645A5DBE2FFFFC6B8B64591B64591B64591B688DBFFFF -FFE78891B64591B645A5DBE2FFFFE2CAC24591B64591B64591B668CAF3FFFFF3A8A5B64591B645 -91B64591B64591B64591B64591B64591B64591B64591B64591B64591B64591B64591B64590B544 -8DB14289AE4085A93E80A33B739134455721EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83267A73977C1 -3C7CC93E7ECC3F81CF4183D34385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64184D3 -3F80CD3D7CC83A78C23874BC3064A44D617AE8E8E8F4F4F4F5F5F5F0F0F0E7E7E7DCDCDCD1D1D1 -CBCBCBCECECEDBDBDBECECECF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9EADB2257C932B90AC2E97B42F9AB7 -319DBA339FBD34A2C034A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C1 -34A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C1 -34A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C1 -34A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C1 -34A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C1 -34A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C1 -34A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C1 -34A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C1 -34A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C1 -34A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C1 -34A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C1 -34A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C1 -34A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C1 -34A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C134A2C133A0BE319CB92F98B4 -2D93AF2B8FAA267D95456C77DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFAFAFADDE0D86883307D9E3985A93D89AE408CB1418DB3438FB444 -90B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B545 -90B545A3DBE2FFFFFFDBCF4590B54590B545A3DBE2FFFFC6B6B54590B545A3DBE2FFFFC6B6B545 -90B54590B54590B588DBFFFFFFE78890B54590B545A3DBE2FFFFFFFFFFE2C9C14590B54590CFC6 -FFFFFFDBCF4590B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B545 -90B54590B54590B5458EB4448BB04288AD4084A83D7FA23A719034445621EFEFEFFAFAFAFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA97A6B83267A73977C13C7CC93E7ECC3F81CF4183D34385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64184D33F80CD3D7CC83A78C23874BC3064A44D617AEAEAEAF7F7F7FBFBFB -FAFAFAF5F5F5EFEFEFE6E6E6E0E0E0E0E0E0E8E8E8F2F2F2FAFAFAFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB2 -257B922B8FAB2D96B32F99B6309CB9329EBC33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF329FBD309BB82E96B32C92AE2A8EA9257C94456C77DCDCDCF1F1F1FAFAFAFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFADDE0D86783307C9D3885A83D -89AD3F8BAF418DB1428FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB344 -8FB3448FB3448FB3448FB3448FB344A2DAE2FFFFFFDBCD448FB3448FB344A2DAE2FFFFC5B6B344 -8FB344A2DAE2FFFFC5B6B3448FB3448FB3448FB388DBFFFFFFE7888FB3448FB344A2DAE2FFFFC5 -B6C1A8EDFFFFFFFFFFFFFFFFDBCD448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB344 -8FB3448FB3448FB3448FB3448FB3448FB3448FB3448EB2438BAF4188AB3F84A63D7FA03A718F33 -445521EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83267A73977C13C7CC93E7ECC3F81CF4183D34385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64184D33F80CD3D7CC83A78C23874BC3064A4 -4D617AEAEAEAF8F8F8FDFDFDFEFEFEFCFCFCF9F9F9F5F5F5F2F2F2F1F1F1F5F5F5F9F9F9FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FAFAFAF1F1F1DCDCDC9DADB2257A912A8EAA2D95B22E97B5309AB8329DBB339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE329EBC3099B72E95B22C91AD2A8CA8257B93456B76DCDCDC -F1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFA -DDDFD86781307B9C3884A73D88AB3F8AAE418CB0428EB1438EB2448EB2448EB2448EB2448EB244 -8EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB244 -8EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB244 -8EB2448EB244A2DAE2FFFFC5B5B2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB244 -8EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448DB1438AAD41 -87AA3F83A53C7E9F3A708E33435521EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83267A73977C13C7CC8 -3E7ECC4081CF4183D34385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D6 -4385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64385D64184D33F80CD -3D7CC83A78C23874BC3064A44D617AEAEAEAF8F8F8FDFDFDFFFFFFFEFEFEFEFEFEFCFCFCFBFBFB -FBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB12579902A8EA82D94B02E97B4309AB7 -329DBA339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD329DBA3099B52E95B12C91AC -2A8CA7257B92456B76DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFAFAFADDDFD866802F7B9B3883A63C87AA3E89AD408BAE418DB0428EB143 -8EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB143 -8EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB143 -8EB1438EB1438EB1438EB1438EB1438EB143A2D9E2FFFFC5B5B1438EB1438EB1438EB1438EB143 -8EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB143 -8EB1438EB1438CB04289AC4086A83E82A43C7D9E39708D33435420EFEFEFFAFAFAFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -97A6B83267A73A77C13D7CC83F7ECC4081CF4283D34485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64284D34080CD3E7CC83B78C23974BC3164A44D617AEAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB124798F -2A8DA72C93AF2E96B23099B5319CB9339EBB339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -329CB93098B42E94B02C90AB2A8BA6247A91456B76DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFADDDFD8667F2F7A993883A43C87A93E -89AB408BAD418CAF428DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43 -8DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43 -8DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43A1D8E2FFFFC5B4AF43 -8DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43 -8DAF438DAF438DAF438DAF438DAF438DAF438CAE4289AB4086A73E82A23C7D9D396F8C32435320 -EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA97A6B83267A73A77C13D7CC83F7ECC4081CF4283D34485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64284D34080CD3E7CC83B78C23974BC3164A44D617A -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFA -F1F1F1DCDCDC9DADB124788F298CA62C92AE2D95B12F98B4319AB7329CBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA319BB82F97B32D93AE2B8FAA298AA5247990446B75DCDCDCF1F1F1 -FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFADDDFD8 -657E2E79983782A33B86A73D88AA3F89AC408BAD418CAE428CAE428CAE428CAE428CAE428CAE42 -8CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE42 -8CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE42 -8CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE42 -8CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428AAC4188A93F84A63D -80A13B7C9B386E8A32425320EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B83267A73A77C13D7CC83F7ECC -4081CF4283D34485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64284D34080CD3E7CC8 -3B78C23974BC3164A44D617AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB124778E298BA52C92AD2D94B02F97B3319AB6 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8319AB72F96B22D92AD2B8EA9298AA4 -24798F446A75DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFAFAFADDDFD8647D2E78973680A23A84A63D86A83E85A63F87A84089AB418AAC42 -8AAC418AAC418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD41 -8AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD41 -8AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD41 -8AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAC418AAC4289AB42 -88A94185A63E83A43D83A43D7FA03A7A9A376D8931425220EFEFEFFAFAFAFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B8 -3267A73A77C13D7CC83F7ECC4081CF4283D34485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64284D34080CD3E7CC83B78C23974BC3164A44D617AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB123768D298AA4 -2B91AC2D93AF2E96B23099B5319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB73099B5 -2E95B12C91AC2A8DA72989A323788E446A74DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFADDDFD8637D2D7796367F9F3A80A03C7F9E3D -82A13F85A54187A74287A84288A94288AA4289AA4189AB4189AC4189AC4089AC4089AC4089AC40 -89AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC40 -89AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC40 -89AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AB4189AB41 -88AA4188A94187A84186A74185A54182A23E7E9E3C7C9B3A7B9A387998376C893141521FEFEFEF -FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA97A6B83267A73A77C13D7CC83F7ECC4081CF4283D24485D54485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D64485D6 -4485D64485D64485D64485D64485D64284D24080CD3E7CC73B78C13974BC3164A34D6179EAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1 -DCDCDC9DACB023768B2889A32B90AB2C92AE2E95B12F98B4319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB63098B42E94AF2C90AB2A8CA62888A123778D446A74DCDCDCF1F1F1FAFAFA -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFADDDFD85B722B -6A853178953B7B993E7D9B3F809E4083A14284A34385A44385A54386A64386A64286A74287A842 -87A84187A94187A94187A94188AA4188AA4088AA4088AA4088AB4088AB4088AB4088AB4088AB40 -88AB4088AB4088AB4088AB4088AB4088AB4088AB4088AB4088AB4088AB4088AB4088AB4088AB40 -88AB4088AB4088AB4088AB4088AB4088AB4088AB4088AA4088AA4088AA4087AA4087A94187A941 -87A84186A84186A74185A64185A54184A44284A34282A24181A0417E9D3F7B993C78953A759238 -6D89335E772B646E4DEFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B73267A63A77C03D7CC73F7ECB4081CE -4283D24485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54284D24080CC3E7CC73B78C1 -3974BC3164A34D6179EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DACB022758A2888A22A8FA92B91AC2D94AF2E97B23099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B52F97B32D93AE2B8FAA298BA52787A022768C -436973DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFAFAFAEFEFEFB3BC9F576C2A667F34748F3C7C98407E9B42809E43819F4382A04483A144 -83A24484A34384A34384A44284A44285A54285A54285A54285A64285A64185A64186A74186A741 -86A74186A74086A74086A84086A84086A84086A84086A84086A84086A84086A84086A94086A840 -86A84086A84086A84086A84086A84086A84086A84086A84086A74086A74186A74185A74185A641 -85A64185A54184A54184A44284A44283A34183A24182A14182A04281A042809E417F9C417D9A40 -7B983F78953D74903A6C86355A712B4A5C22A1A697EFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B73267A6 -3A77C03D7CC73F7ECB4081CE4283D24485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4284D24080CC3E7CC73B78C13974BC3164A34D6179EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DACB022748A2888A12A8EA8 -2B91AB2D94AE3096B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13197B12D93AD -2B8FA9298BA427869F22768B436973DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF0F0F0E0E0E09BA87F5E732F5A6E2E687F37779040 -7D98447F9B44809C44819D45819E45829F45829F4483A04483A04483A14483A14483A14383A243 -84A24384A24384A34384A34284A34284A34284A34284A34284A34284A44284A44184A44184A441 -84A44184A44184A44184A44184A44184A44184A44184A44184A44184A44184A44184A34284A342 -84A34283A34283A24283A24283A14282A14282A04282A042819F42819E42809E42809D427F9C42 -7E9B427D99427B97417A954077923F6E873A607630526529495A24969C89E0E0E0F0F0F0FAFAFA -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA97A6B73267A63A77C03D7CC73F7ECB4081CE4283D24485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54284D24080CC3E7CC73B78C13974BC3164A34D6179EAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC -9DACB02273892787A0298DA72B90AA2F93AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD -3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD -3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD -3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD -3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD -3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD -3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD -3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD -3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD -3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD -3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD -3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD -3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD -3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD3394AD -3394AD3394AD3394AD3293AC2B8EA8298AA327859E22758A436972DCDCDCF1F1F1FAFAFAFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF2F2F2E4E4E4CDCDCD -AFB2A88C99725D73305A6E31647A366D843B748D3F7A94437E99447F9B45809C45809C45809C45 -809D44819D44819D44819E44819E44819E44819F43829F43829F43829F43829F43829F43819F42 -81A04281A04281A04282A04282A04282A04282A04282A04282A04282A04282A04282A04281A042 -81A042819F42819F42819F42819E42819E42809E42809D42809D43809C437F9C437F9B437E9A42 -7E99427D99427C98427C97427A9541758E3E6F873B667D365D723152652B5A6A387E876BABADA6 -CDCDCDE4E4E4F2F2F2FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B73267A63A77C03D7CC73F7ECB4081CE4283D2 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54284D24080CC3E7CC73B78C13974BC -3164A34D6179EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFAFAFAF1F1F1DCDCDC9DACB021738827869F298CA62E8FA83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A8338FA82888A226849D217489436872 -DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCF7F7F7EBEBEBD9D9D9C4C4C4B8B8B8A8ABA18C99727484515D7131596C305D7133657B38 -6D853D758E417993437B96447D98457E99457F9A457F9A457F9A457F9B457F9B457F9B447F9C44 -7F9C447F9C447F9C447F9C447F9C437F9C437F9C437F9C437F9C437F9C437F9C437F9C437F9C43 -7F9C437F9C437F9C437F9C437F9C437F9B437F9B437E9B437E9A437E9A437E9A437D99437D9943 -7D98437C97437B9643799442779141748D3F70893D6A813A617634586B2F52642B52652A67754A -818B6CB0B0B0B9B9B9C4C4C4D9D9D9EBEBEBF6F6F6FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B73267A63A77C0 -3D7CC73F7ECB4081CE4283D24485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54284D2 -4080CC3E7CC73B78C13974BC3164A34D6179EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DACAF21718727849D2E8BA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -358CA326839C217388436871DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFAFAFAF3F3F3E7E7E7D6D6D6C9C9C9BDBDBDB5B5B5B0B0B0 -A7AB9F9CA28E88936F70804F5B6F31596C315B6E335F7435647938687E3A6C833C70883E748C41 -7790427A94437C96447C97457D97457D98457D98457D98457D98457D99457D99447D99447D9944 -7D99447D99447D99447D99447D99447D99447D98447D98447D98447D98447C97447B96437A9543 -799342789242768F41728B3F6E863D69803A647A375F73345A6D3156692F54662D54672D5E6F3B -7F896B979C8CADADADB0B0B0B5B5B5BDBDBDC9C9C9D6D6D6E7E7E7F4F4F4FAFAFAFDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA97A6B73267A63A77C03D7CC73F7ECB4081CE4283D24485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54284D24080CC3E7CC73B78C13974BC3164A34D6179EAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DABAF -2170862C829937869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C -37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C -37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C -37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C -37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C -37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C -37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C -37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C -37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C -37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C -37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C -37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C -37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C -37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C37869C -37869C37869C37869C37869C37869C35859A217288436771DCDCDCF1F1F1FAFAFAFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDF9F9F9F3F3F3E7E7E7 -DCDCDCD0D0D0C7C7C7BFBFBFB9B9B9B3B3B3B1B1B1AFAFAFA5A99E9CA28F90997F7F8D61728350 -677A415D7132596D31586B31596C325C7034607536627737637938657A39667C3A677D3A687F3B -6A803C6B823C6C833D6D853D6E863E6F873E6F863E6E853D6D853D6C833C6C833C6B823B69803B -687E3A657A386277376074355D71345A6D32586B3155672F55672E566A2E60713D737F5B808A6C -848F6D999F8DACACACAFAFAFB1B1B1B3B3B3B9B9B9BFBFBFC7C7C7D0D0D0DCDCDCE7E7E7F3F3F3 -FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B73267A63A77C03D7CC73F7ECB4081CE4283D24485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54284D24080CC3E7CC73B78C13974BC3164A3 -4D6179EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FAFAFAF1F1F1DCDCDC9DABAF23677A2B66772B66772B66772B66772B66772B66772B66772B6677 -2B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B6677 -2B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B6677 -2B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B6677 -2B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B6677 -2B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B6677 -2B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B6677 -2B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B6677 -2B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B6677 -2B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B6677 -2B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B6677 -2B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B6677 -2B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B6677 -2B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B66772B6677 -2B66772B66772B66772B66772B66772B66772B66772B66772B66772B6677286575436771DCDCDC -F1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFDFDFDFBFBFBF5F5F5EDEDEDE4E4E4DCDCDCD4D4D4CDCDCDC6C6C6C1C1C1BDBDBDB9B9B9 -B5B5B5B4B4B4B1B1B1AFAFAFADADADABABABA4A79D9BA28E929B7F87936F7B895F72825070804F -6E7E4F6D7C4E65774064764063743F5B6F315A6E31596D31586B31586B30586B30586B30586C30 -586C30596C30596D30596D3062733E63753F6C7B4D75825C78855D828D6D85906D989E8CA3A69D -ABABABADADADAFAFAFB1B1B1B4B4B4B5B5B5B8B8B8BDBDBDC1C1C1C6C6C6CDCDCDD4D4D4DCDCDC -E4E4E4EEEEEEF5F5F5FBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B73267A63A77C03D7CC7 -3F7ECA4081CE4283D14485D44485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D5 -4485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54485D54284D14080CC -3E7CC63B78C03974BB3164A24D6179EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF2F2F2DDDDDDB2B9BC6D8D966A8A93698992698992698992 -698992698992698992698992698992698992698992698992698992698992698992698992698992 -698992698992698992698992698992698992698992698992698992698992698992698992698992 -698992698992698992698992698992698992698992698992698992698992698992698992698992 -698992698992698992698992698992698992698992698992698992698992698992698992698992 -698992698992698992698992698992698992698992698992698992698992698992698992698992 -698992698992698992698992698992698992698992698992698992698992698992698992698992 -698992698992698992698992698992698992698992698992698992698992698992698992698992 -698992698992698992698992698992698992698992698992698992698992698992698992698992 -698992698992698992698992698992698992698992698992698992698992698992698992698992 -698992698992698992698992698992698992698992698992698992698992698992698992698992 -698992698992698992698992698992698992698992698992698992698992698992698992698992 -698992698992698992698992698992698992698992698992698992698992698992698992698992 -698992698992698992698992698992698992698992698992698992698992698992698992698992 -698992698992698992698992698992698992698992698992698992698992698992698992698992 -6A8A937090998CA6ADDDDDDDF2F2F2FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCFAFAFAF5F5F5F1F1F1EBEBEBE5E5E5 -DFDFDFDADADAD5D5D5CFCFCFCBCBCBC9C9C9C4C4C4C0C0C0BCBCBCB9B9B9B8B8B8B8B8B8B7B7B7 -B5B5B5B2B2B2AFAFAFADADADACACACACACACACACACACACACACACACACACACACACACA5A99EA5A89E -A5A89EA5A89EA5A99EACACACACACACACACACACACACACACACACACACACACACADADADAFAFAFB2B2B2 -B5B5B5B7B7B7B8B8B8B8B8B8B9B9B9BCBCBCC0C0C0C4C4C4C9C9C9CBCBCBCFCFCFD5D5D5DADADA -DFDFDFE5E5E5EBEBEBF0F0F0F5F5F5FAFAFAFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -97A6B73266A53A76BF3D7BC63F7ECA4081CD4283D14485D44485D44485D44485D44485D44485D4 -4485D44485D44485D44485D44485D44485D44485D44485D44485D44485D44485D44485D44485D4 -4485D44485D44485D44485D44485D44485D44485D44485D44485D44485D44485D44485D44485D4 -4485D44485D44485D44485D44485D44485D44485D44485D44485D44485D44485D44485D44485D4 -4485D44485D44485D44485D44485D44485D44485D44485D44485D44485D44485D44485D44485D4 -4485D44485D44283D1407FCB3E7BC53B77C03974BB3164A24D6179EAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF3F3F3E0E0E0CBCBCBBDBDBD -B5B5B5B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B5B5B5BDBDBDCBCBCBE1E1E1F3F3F3FBFBFBFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFE -FCFCFCFAFAFAF8F8F8F5F5F5F1F1F1EEEEEEEAEAEAE6E6E6E3E3E3E0E0E0DBDBDBD6D6D6D2D2D2 -CFCFCFCDCDCDCCCCCCCBCBCBC8C8C8C4C4C4BFBFBFBCBCBCBABABABABABABABABABABABABABABA -BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA -BABABABCBCBCBFBFBFC4C4C4C8C8C8CBCBCBCCCCCCCDCDCDCFCFCFD2D2D2D6D6D6DBDBDBE0E0E0 -E3E3E3E6E6E6EAEAEAEEEEEEF1F1F1F5F5F5F8F8F8FAFAFAFCFCFCFEFEFEFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA97A6B73266A53A76BF3D7BC63F7DCA4080CD4282D14484D44484D4 -4484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D4 -4484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D4 -4484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D4 -4484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D4 -4484D44484D44484D44484D44484D44484D44283D1407FCB3E7BC53B77C03973BB3164A24D6179 -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -F6F6F6E7E7E7D7D7D7CCCCCCC6C6C6C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C6C6C6CDCDCDD7D7D7E8E8E8F6F6F6 -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFCFCFCFBFBFBF9F9F9F7F7F7F5F5F5F3F3F3 -F2F2F2EEEEEEEAEAEAE7E7E7E5E5E5E4E4E4E4E4E4E2E2E2DEDEDEDADADAD5D5D5D2D2D2D0D0D0 -D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 -D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D2D2D2D5D5D5DADADADEDEDEE2E2E2E4E4E4E4E4E4E5E5E5 -E7E7E7EAEAEAEEEEEEF2F2F2F3F3F3F5F5F5F7F7F7F9F9F9FBFBFBFCFCFCFDFDFDFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B73266A53A76BF3D7BC63F7DCA -4080CD4282D14484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D4 -4484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D4 -4484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D4 -4484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D4 -4484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44283D1407FCB3E7BC5 -3B77C03973BB3164A24D6179EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF9F9F9F0F0F0E6E6E6E0E0E0DDDDDDDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDDDDDD -E1E1E1E7E7E7F1F1F1F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFE -FEFEFEFDFDFDFCFCFCFCFCFCFBFBFBF9F9F9F8F8F8F6F6F6F5F5F5F4F4F4F4F4F4F4F4F4F1F1F1 -EEEEEEEAEAEAE7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6 -E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7EAEAEAEDEDEDF0F0F0 -F4F4F4F4F4F4F4F4F4F5F5F5F6F6F6F8F8F8F9F9F9FBFBFBFCFCFCFCFCFCFDFDFDFEFEFEFEFEFE -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B7 -3266A53A76BF3D7BC63F7DCA4080CD4282D14484D44484D44484D44484D44484D44484D44484D4 -4484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D4 -4484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D4 -4484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D4 -4484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D4 -4484D44283D1407FCB3E7BC53B77C03973BB3164A24D6179EAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFAFAFAF6F6F6F3F3F3F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F3F3F3F6F6F6FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFDFDFDFCFCFC -FCFCFCFCFCFCFCFCFCFBFBFBF9F9F9F7F7F7F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6 -F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6 -F6F6F6F7F7F7F9F9F9FBFBFBFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA97A6B73266A53A76BF3D7BC63F7DCA4080CD4282D14484D44484D44484D4 -4484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D4 -4484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D4 -4484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D4 -4484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D44484D4 -4484D44484D44484D44484D44484D44283D1407FCB3E7BC53B77C03973BB3164A24D6179EAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FEFEFEFDFDFDFCFCFCFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B73266A43976BE3C7BC53E7DC94080CD -4182D04384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24183D03F7FCA3D7BC53A77BF -3873BA3064A14D6179EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B73266A4 -3976BE3C7BC53E7DC93F80CC4182D04384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4183D03F7FCA3D7BC43A77BF3873BA3064A14D6179EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA97A6B73266A43976BE3C7AC53E7DC93F80CC4182D04384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24183D03F7FCA3D7BC43A77BF3873BA3064A14D6179EAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A6B73266A43976BE3C7AC53E7DC93F80CC4182D0 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24183D03F7FCA3C7BC43A77BF3873BA -3064A14D6179EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B73266A43976BE -3C7AC53E7DC93F80CC4182D04384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D2 -4384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24384D24182D0 -3F7ECA3C7AC43A76BF3873BA3064A14D6179EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA97A5B73265A43975BE3C79C53E7CC93F7FCC4181D04383D24383D24383D24383D24383D2 -4383D24383D24383D24383D24383D24383D24383D24383D24383D24383D24383D24383D24383D2 -4383D24383D24383D24383D24383D24383D24383D24383D24383D24383D24383D24383D24383D2 -4383D24383D24383D24383D24383D24383D24383D24383D24383D24383D24383D24383D24383D2 -4383D24383D24383D24383D24383D24383D24383D24383D24383D24383D24383D24383D24383D2 -4383D24383D24383D24181D03F7ECA3C7AC43A76BF3872B93063A14D6179EAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B73265A33975BD3C79C43E7CC83F7FCB4181CF4383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14181CF3F7EC93C7AC33A76BE3872B93063A0 -4D6178EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B73265A33975BD3C79C4 -3E7CC83F7FCB4181CF4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14181CF3F7EC9 -3C7AC33A76BE3872B93063A04D6178EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -97A5B73265A33975BD3C79C43E7CC83F7FCB4181CF4383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14181CF3F7EC93C7AC33A76BE3872B93063A04D6178EAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA97A5B73265A33975BD3C79C43E7CC83F7FCB4181CF4383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14181CF3F7EC93C7AC33A76BE3872B93063A04D6178 -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B73265A33975BD3C79C43E7CC8 -3F7FCB4181CF4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14181CF3F7EC93C7AC3 -3A76BE3872B93063A04D6178EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B7 -3265A33975BD3C79C43E7CC73F7FCB4181CE4383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D14383D1 -4383D14181CE3F7DC83C7AC33A76BD3872B83063A04D6178EAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA97A5B63265A33975BC3C79C33E7CC73F7FCA4181CE4383D04383D04383D0 -4383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D0 -4383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D0 -4383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D0 -4383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D0 -4383D04383D04383D04383D04383D04181CE3F7DC83C7AC23A76BD3872B830639F4D6178EAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B63265A33975BC3C79C33E7CC73F7FCA -4181CE4383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D0 -4383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D0 -4383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D0 -4383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D04383D0 -4383D04383D04383D04383D04383D04383D04383D04383D04383D04181CE3F7DC83C79C23A76BD -3872B830639F4D6178EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B63264A3 -3974BC3C78C33E7BC73F7ECA4180CE4382D04382D04382D04382D04382D04382D04382D04382D0 -4382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D0 -4382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D0 -4382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D0 -4382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D0 -4180CE3F7CC83C78C23A75BD3871B830629F4D6078EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA97A5B63264A33974BC3C78C33E7BC73F7ECA4180CE4382D04382D04382D04382D0 -4382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D0 -4382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D0 -4382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D0 -4382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D04382D0 -4382D04382D04382D04382D04180CE3F7CC83C78C23A75BD3871B830629F4D6078EAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B63264A23974BB3C78C23E7BC63F7EC94180CD -4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF -4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF -4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF -4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF -4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4180CD3F7CC73C78C13A75BC3871B7 -30629F4D6078EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B63264A23974BB -3C78C23E7BC63F7EC94180CD4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF -4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF -4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF -4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF -4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4382CF4180CD -3F7CC73C78C13A75BC3871B730629F4D6078EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA97A5B63164A23874BB3B78C23D7BC63F7EC94180CD4282CF4282CF4282CF4282CF4282CF -4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF -4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF -4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF -4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF -4282CF4282CF4282CF4180CD3E7CC73C78C13975BC3771B730629F4C6078EAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEE2EBED -84D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E8 -84D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E8 -84D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E8 -84D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E8 -84D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E8 -84D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E8 -84D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E8 -84D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E8 -84D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E8 -84D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E8 -84D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E8 -84D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E8 -84D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E8 -84D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E884D2E8 -84D2E884D2E884D2E884D2E884D2E884D2E884D2E8C6D6DAFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B63164A23874BB3B78C23D7BC63E7EC94080CD4282CF -4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF -4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF -4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF -4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF -4282CF4282CF4282CF4282CF4282CF4282CF4282CF4080CD3E7CC73B78C13975BC3771B72F629F -4C6078EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFDFDFDFAFAFAC3D6DB2F9AB861EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF -61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF -61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF -61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF -61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF -61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF -61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF -61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF -61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF -61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF -61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF -61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF -61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF -61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF -61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF61EFFF38A8C1A2AFB3FAFAFA -FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B63164A23874BB3B78C2 -3D7BC53E7EC94080CC4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF -4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF -4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF -4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF -4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4282CF4080CC3E7CC6 -3B78C13975BB3771B72F629E4C6078EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF9F9F9F1F1F1B7CACF2C92AF3CB4D289FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -52C4D82887A299A6AAF1F1F1F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -97A5B63164A13874BA3B78C13D7BC53E7EC84080CC4282CE4282CE4282CE4282CE4282CE4282CE -4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE -4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE -4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE -4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE -4282CE4282CE4080CB3E7CC63B78C03975BB3771B62F629E4C6077EAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF6F6F6E8E8E8ACBFC42C92AF -33ABCC3FBCDB7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF -7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF -7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF -7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF -7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF -7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF -7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF -7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF -7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF -7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF -7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF -7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF -7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF -7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF7DFFFF -7DFFFF7DFFFF7DFFFF50CBE031A4C42887A2919EA2E8E8E8F6F6F6FCFCFCFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFE -FDFDFDFDFDFDFDFDFDFDFDFDF0F4E7F0F5E7E3ECD0D4E3B8D7E6B9CBDFA2CFE4A4C4DE8FC8E391 -BBDB7ABCDD7BBDDE7BBFE07CC0E27DB4DA67B5DC68B7DE69B8DF69B6DD68B3DA67BFE07CBDDE7B -BBDB7AB8D879C5E090C4DE8EC1DB8ECEE3A4CCE0A3CADEA2D8E7B9D4E2B8E1EACFEFF3E6FDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA97A5B63164A13874BA3B78C13D7BC43E7EC84080CC4282CE4282CE -4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE -4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE -4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE -4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE4282CE -4282CE4282CE4282CE4282CE4282CE4282CE4080CB3E7CC63B78C03975BB3771B62F629E4C6077 -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFB -F3F3F3E0E0E0A4B7BC2C92AF33ABCC36B3D645C5E26BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF -6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF -6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF -6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF -6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF -6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF -6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF -6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF -6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF -6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF -6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF -6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF -6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF -6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF -6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF6BF2FF4BCAE334ACCE31A4C42887A28A979BE0E0E0F3F3F3 -FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFDFDFD -FCFCFCEFF3E6E1EACFD6E5B9CFE3A5C6E190BFE07DADD855B7E45BBDEB60C2EF63C6F366CAF66A -CEF96ED2FA72D6FC76D9FD79DBFD7BDCFE7CDEFE7EDFFE7FE0FF80E1FF81E2FF82E3FF83E3FF84 -E2FF83E0FE81DEFE7FDCFE7CDAFD7BD8FD79D6FC77D5FC75D3FB73D1FA71CFF96FCDF86DCAF66B -C4F165BDEB60B5E25ABBE36CB4DA67BADA7AC3DD8ECBDEA3D6E4B8E2EBCFEEF3E6FCFCFCFDFDFD -FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B63163A13873BA3B77C13D7AC4 -3E7DC8407FCC4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE -4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE -4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE -4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE -4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE407FCB3E7BC63B77C0 -3974BB3770B62F619E4C6077EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFAFAFAF2F2F2DDDDDDA0B3B82C92AE33ABCC36B3D538B6D842C3E45ADFFE -5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE -5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE -5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE -5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE -5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE -5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE -5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE -5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE -5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE -5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE -5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE -5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE -5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE -5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE5ADFFE46C6E636B1D334ACCD31A4C3 -2887A1879498DDDDDDF2F2F2FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFC -EEF2E5C7DAA2D2E8A7C0E17EACD755B6E35CC0ED62C8F569CFF970D7FC77DEFE7FE5FF87ECFF8E -F0FF92F3FF95F5FF97F7FF9AF8FF9BFAFF9DFBFF9EFBFF9EFBFF9EFBFF9EFBFF9EFBFF9EFBFF9E -FAFF9EFAFF9DFAFF9DF9FF9DF9FF9DFAFF9DFAFF9DFAFF9DFAFF9DFAFF9DF9FF9CF9FF9BF9FF9B -F8FF9BF8FF9AF7FF99F6FF98F3FF95EFFF91EAFF8CE4FF86DEFE7FD8FC79D2FA73CCF76DC6F268 -BFED62B7E45CB9E06AB9D97ACADEA3E1EACFFCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B6 -3163A13873BA3B77C13C7AC43E7DC8407FCC4281CE4281CE4281CE4281CE4281CE4281CE4281CE -4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE -4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE -4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE -4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE4281CE -4281CE407FCB3E7BC63B77C03974BB3770B62F619E4C6077EAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB2B72C92AE33ABCB -36B3D538B6D839B9DB3FC0E449CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF0 -49CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF0 -49CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF0 -49CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF0 -49CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF0 -49CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF0 -49CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF0 -49CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF0 -49CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF0 -49CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF0 -49CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF0 -49CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF0 -49CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF0 -49CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF049CCF041C2E5 -38B6D836B1D234ACCD31A4C32887A1869397DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFD -EEF3E6C6D8A1D1E6A6B2D766B4E15AC5F266D2F973DDFE7EE4FF85EAFF8CF0FF92F5FF97F7FF9A -FAFF9CFAFF9DF9FF9CF7FF9AF5FF98F4FF97F3FF96F1FF95F0FF94EFFF93EEFF91ECFF90EBFF8F -EBFF8FEAFF8FEAFF8EE9FF8EE9FF8DE8FF8DE8FF8CE8FF8CE8FF8CE9FF8DE9FF8DEAFF8EEAFF8E -EBFF8FEBFF8FECFF90ECFF90EDFF91EDFF91EEFF91EFFF92F1FF94F3FF96F4FF97F6FF99F6FF99 -F7FF9AF6FF99F5FF97F2FF94EEFF90E9FF8CDFFE81D3FB75C7F369BBE85EADD854ADD163BED78D -D2E0B7FCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA97A5B63163A03873B93B77C03C7AC33E7DC7407FCB4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD407FCB3E7BC53B77BF3974BA3770B52F619D4C6077EAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1 -DCDCDC9FB2B72C92AE33ABCB36B3D538B6D839B9DC3BBCDF3CBFE23DBFE33DBFE33DBFE33DBFE3 -3DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE3 -3DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE3 -3DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE3 -3DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE3 -3DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE3 -3DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE3 -3DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE3 -3DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE3 -3DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE3 -3DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE3 -3DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE3 -3DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE3 -3DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE33DBFE3 -3DBFE33DBFE33CBFE23BBBDE38B6D836B1D234ACCD31A4C32887A1869397DCDCDCF1F1F1FAFAFA -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFDFDFDEFF4E6CFE4A4ACD855C1EF63CDF86FD9FD7CE6FF88F0FF93F5FF98F7FF9BF6FF9A -F4FF98F2FF96F0FF94EDFF92EBFF90E9FF8DE6FF8BE4FF89E2FF87E1FF86DFFF85DEFF83DDFF82 -DCFF81DAFF80D9FF7ED8FF7ED8FF7DD7FE7DD7FE7CD6FE7CD6FE7CD5FE7BD5FE7AD4FE7AD5FE7B -D6FE7BD6FE7CD7FE7CD8FF7DD8FF7ED9FF7ED9FF7FDAFF7FDAFF7FDBFF80DBFF80DCFF81DEFF83 -E0FF85E2FF87E4FF89E6FF8AE7FF8CE9FF8DEBFF8FECFF90EEFF92F0FF94F2FF96F2FF96EEFF92 -E7FF8ADDFE80D2FB74C7F46ABBE85FB4DA67C8DBA1ECF0E5FDFDFDFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B63163A03873B93B77C03C7AC33E7DC7 -407FCB4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD407FCA3E7BC43B77BF3974BA -3770B52F619D4C6077EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB2B72C92AD33AACA36B2D438B6D739B9DB3BBCDE3CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13BBBDD38B6D736B1D134ACCC31A4C22887A0 -869397DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEEEF2E5A3C55FAFDB57C4F267DBFD7EEBFF8EF0FF94F3FF97F1FF95 -EEFF92EAFF8FE7FF8CE4FF89E2FF87E0FF85DDFF83DBFF81D9FF7FD6FE7CD4FD7AD1FC77CFFB75 -CEFA74CDF973CBF872CAF771C9F56FC7F46EC6F36DC5F26CC5F16CC4F16BC4F06BC3F06AC3EF6A -C2EF6AC2EE69C2EE69C2EE69C3EF6AC3F06AC4F06BC5F16CC5F26CC6F26DC7F36DC7F46EC8F46E -C8F56FC9F56FCAF670CCF872CEFA74D0FB76D2FD78D4FE7AD6FE7CD7FF7DD9FF7FDBFF80DCFF82 -DFFF84E2FF88E6FF8AE8FF8CEAFF8EEBFF90ECFF90E9FF8EE2FE87CEF873B9E65FB5DB67AAC672 -ECEFE4FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B63163A0 -3873B93B77C03C7AC33E7DC7407FCB4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -407FCA3E7BC43B77BF3974BA3770B52F619D4C6077EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B72D91AD34AACA37B2D3 -39B5D73AB8DA3CBBDE3DBEE03DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13CBADC39B5D7 -37B0D135ABCB32A3C22986A0869397DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDCBD6B396BD47BDEA62D5FC79E5FF88EDFF91 -EAFF8EE7FF8BE4FF89E1FF86DDFF83D9FF7FD5FE7BD2FD78D0FB76CEFA74CCF872C9F570C7F36D -C4F06BC1ED68BFEB66BDE964BBE763BAE661B9E560B7E35FB6E25EB5E05CB3DF5BB2DE5AB2DE5A -B1DD59B1DD59B1DC59B0DC58B0DB58AFDB57AFDB57B0DB58B0DC58B1DD59B2DD59B2DE5AB3DF5B -B4DF5BB4E05CB5E15DB6E15DB6E25EB7E35EB8E45FBAE661BCE863BEEA65C0EC67C2EE69C4F16B -C6F36DC8F46ECAF670CBF772CEFA74D2FD78D5FE7BD9FF7EDBFF80DDFF82DFFF84E1FF86E4FF89 -E5FF8ADBFD80C9F56EB7E45EA3C65DD4DAC8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA97A5B63163A03873B93B77C03C7AC33E7DC7407FCB4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD407FCA3E7BC43B77BF3974BA3770B52F619D4C6077EAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC -9FB1B62D91AC34AAC937B2D339B5D63AB8D93CBBDD3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03CBADC39B5D637B0D035ABCB32A3C129869F869396DCDCDCF1F1F1FAFAFAFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFAFAFAA2BC6DA8D153 -CBF570E0FF84E2FF86E1FF85DAFF80D6FE7DD3FD7AD0FB77CCF874C8F46FC4EF6BC1EC68BEEA66 -BCE764B9E561B7E25FB4DF5CB2DD5AAFDA57ADD856ABD654AAD553AAD452A9D352A8D351A8D250 -A8D250A7D150A7D150A7D150A7D150A7D150A7D150A7D150A7D150A7D150A7D150A7D150A7D150 -A7D150A7D150A7D150A7D150A7D150A7D250A8D250A8D250A8D251A8D351A9D351AAD452ABD653 -ADD755AED957B0DB59B2DD5BB4E05DB7E25FB8E460BAE562BDE865C1EC68C5F06CC9F46FCCF773 -CEF974D0FB76D2FD78D7FF7DDDFF82DEFF84D9FF7FC2ED6A99C04A728746FAFAFAFDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B63163A03873B93B77C03C7AC33E7DC7407FCB -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD407FCA3E7BC43B77BF3974BA3770B5 -2F619D4C6077EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFAFAFAF1F1F1DCDCDC9FB1B62D91AC34A9C937B1D239B4D53AB7D93CBADC3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3CB9DB39B4D537AFD035ABCA32A2C029869F869396 -DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FBFBFBE3E6DD7C9B3B96BD47B3DC5CD0FB76D7FF7CD2FC78CBF672C6F16EC3EE6BBFEA68BBE664 -B7E15FB2DD5BAFD958ADD756ABD554AAD353A8D251A7D151A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D150A8D151A8D251A9D352AAD453ACD655 -B0DA59B4DE5DB8E260BCE664BFE967C1EB69C4EE6BC9F471D0FA77D5FE7CC9F271A7D05489AC40 -586E2AF3F3F3FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B63163A03873B9 -3B77C03C7AC33E7DC7407FCB4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD -4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD4281CD407FCA -3E7BC43B77BF3974BA3770B52F619D4C6077EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B62C90AB33A8C836B0D138B3D4 -39B6D83BB9DB3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3BB8DA39B3D436AECF -34A9C931A1BF28859E869396DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEF8F8F8DDE0D77A993A92B8449CC449A5CE50B6E15FC3EE6ABCE764 -B6E05FB2DC5BAED858ABD454A8D252A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D151A9D252ABD555AFD858B2DB5BB5E05EBCE664C2ED6A -B4DE5E9AC14894BB4587AA3F586E2AEBEBEBF7F7F7FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA97A5B631629F3872B83B76BF3C79C23E7CC6407EC94280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC407EC93E7AC33B76BE3973B9376FB42F609C4C6077EAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B6 -2C8FAA33A7C736AFD038B2D339B5D63BB8DA3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3BB7D938B2D336ADCD34A8C831A0BE28849D869396DCDCDCF1F1F1FAFAFAFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF5F5F5D8DAD279983991B6439BC349 -A0C84BA3CC4DA6D050ACD555A8D152A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50 -A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50 -A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50 -A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50 -A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50 -A6CF50A8D152ACD656A3CC4F9DC54A99C04894BA4586A83E576D2AE5E5E5F3F3F3FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B631629F3872B83B76BF3C79C23E7CC6407EC94280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC407EC93E7AC33B76BE3973B9376FB42F609C -4C6077EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FAFAFAF1F1F1DCDCDC9FB1B62C8FAA33A6C636AECF38B1D339B4D63BB8DA3CBADD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBADD3BB7D838B2D336ADCD34A8C831A0BE28849D869396DCDCDC -F1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF3F3F3 -D4D6CE79973990B5439BC2489FC74BA2CA4DA3CC4EA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA4CD4EA0C84C9DC44A98BF4793B84486A73E576C2A -E2E2E2F2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B631629F3872B83B76BF -3C79C23E7CC6407EC94280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC407EC93E7AC3 -3B76BE3973B9376FB42F609C4C6077EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B62C8EA933A5C535ADCE37B0D239B3D5 -3AB6D83CB9DB3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DB3AB5D738B1D236ACCC34A7C7 -319FBD28839C869396DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCF1F1F1D2D4CC79973990B5439AC1489EC64AA1CA4CA3CB4EA4CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA4CC4EA0C84C9CC44A -98BE4793B84485A73E576C29E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -97A5B631629F3872B83B76BF3C79C23E7CC6407EC94280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC407EC93E7AC33B76BD3973B9376FB42F609C4C6077EAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B62B8DA8 -32A5C435ACCD37AFD038B2D43AB5D73BB7DA3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB -3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB8DB3BB7DA -3AB4D637AFD135ABCB33A6C6309EBC27829B869296DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1D1D3CB7896388FB34299C0479DC54A -A0C84CA2CA4DA3CB4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA2CB4D9FC74B9BC24997BD4691B74384A63D566C29E1E1E1F1F1F1FCFCFCFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA97A5B531629F3872B83B76BF3C79C23E7CC6407EC94280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280D5A7EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE8680CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC4280CC -4280CC4280CC4280CC4280CC4280CC4280CC407EC93E7AC33B76BD3973B9376FB42F609C4C6077 -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFA -F1F1F1DCDCDC9FB0B52B8CA732A4C335ACCC37AFCF38B2D33AB5D63BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93AB4D537AFCF35AACA33A5C4309DBB27829A869296DCDCDCF1F1F1 -FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1D1D3CB -7695378EB24198BF469CC4499FC74BA0C94CA1CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4D -A2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4D -A2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4D -A2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4D -A2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4D -A2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA1C94D9DC54A9AC14895BC4590B64283A53C556B29E1E1E1 -F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A5B530629F3871B83A76BF3C78C2 -3E7BC6407EC94180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC -4180CC4180CC4180CC4180CC4180CC86D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 -A697CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC -4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC -4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC4180CC407EC93D7AC33B76BD -3972B8376FB42F609B4C6077EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB0B52B8BA632A3C235ABCB37AECE38B1D13AB4D5 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83AB3D437AECE35A9C933A5C3309CBA -278199869296DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFCFCFCF1F1F1D0D3CB7695378DB24197BE469BC3499EC74BA0C84CA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA0C94C9DC54A99C14895BB45 -90B54282A43C556A29E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A4B5 -30629E3771B73A75BE3B78C13D7BC53F7DC8407FCB407FCB407FCB407FCB407FCB407FCB407FCB -407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB417FDCC4FFFFE2C1D4407FCB41ABEE -FFFFEE867FCB407FCB64C1F7FFD6DC407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB -407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB -407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB -407FCB3F7DC83D79C23A75BC3872B8366EB32E5F9B4C5F76EAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9EB0B52A8AA531A2C1 -34A9C936ACCD37AFD039B3D43AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D739B1D2 -36ADCD34A8C732A3C22F9BB9278098869295DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1D0D3CB7593378CB04096BD469AC2489DC54A -9EC74BA0C84CA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94D -A0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94D -A0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94D -A0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94D -A0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94D -9FC84C9CC44A98BF4794BA458EB44281A33C546A28E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA97A4B530629E3771B73A75BE3B78C13D7AC53F7DC8407FCB407FCB407FCB -407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB417FDC -C4FFFFC4ABCB407FCB4195E6E2FFEE867FCB407FCB4195E6E2FFEE867FCB407FCB407FCB407FCB -407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB -407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB -407FCB407FCB407FCB407FCB407FCB3F7DC83D79C23A75BC3872B8366EB32E5F9B4C5F76EAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1 -DCDCDC9EB0B52A8AA431A1BF34A9C836ACCB37AFCF39B2D23AB4D53AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D539B1D136ACCC34A7C632A2C12F9AB7277F98869295DCDCDCF1F1F1FAFAFA -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FEFEFEFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1D0D3CB749237 -8BAF4095BC4599C0489CC44A9DC64B9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C -9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C -9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C -9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C -9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C -9EC74C9EC74C9EC74C9EC74C9EC64B9AC24997BE4792B9448DB34180A23B546928E1E1E1F1F1F1 -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A4B530629E3771B73A75BE3B78C13D7AC5 -3F7DC8407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB -407FCB407FCB407FCB417FDCC4FFFFC4ABCB407FCB417FDCC4FFF7A695CB407FCB41ABEEFFFFEE -867FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB -407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB -407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB3F7DC83D79C23A75BC3872B8 -366EB32E5F9B4C5F76EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9EB0B52A89A331A1BE34A8C736ABCA37AECE39B1D13AB3D4 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4E3C2FFFFE1DBDB3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D55FDBF8FFFFF182B4D53AB4D582E7FFFFFFF182B4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D55FDBF8FFFFF182B4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB3D439B0D036ABCB34A7C532A2C02F9AB6277F97 -869295DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFCFCFC9C9C9C0808084E4E4ECBCBCBFCFCFCFEFEFEFEFEFEFFFFFFFFFFFF -FCFCFCF1F1F1D0D3CB7491368AAE4094BA4598BF479BC2499CC44A9EC64C9EC64C9EC64C9EC64C -9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C -9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C -9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C -9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C -9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9DC54B9AC14996BD4792B8448DB141 -80A13B536828E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A4B530629E -3771B73A75BE3B78C13D7AC53F7DC8407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB -407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB86D6FFFFD6DC407FCB417FD4A6EBFF -FFFFFFFFFFFFFFFFFFFFD6DC407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB -407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB -407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB -3F7DC83D79C23A75BC3872B8366EB32E5F9B4C5F76EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9EB0B42A89A230A0BD33A7C6 -35AAC937ADCD38B0D039B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339CDF1FFFFF7A3C0D339B2D339B2D339B2D339B2D339CDF1 -FFFFFFC2CDD339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2E1C2FFFFE1DADB39B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D35FDAF7FFFFF181B2D3 -39B2D381E6FFFFFFF181B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D35FDAF7FFFFFFFFFFFFFFFFFFFFE6E139B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D35FDAF7FFFFF181B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D338AFCF36AAC9 -34A6C431A1BF2E99B5277E96869295DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDF8F8F82D2D2D000000000000000000646464 -E2E2E2FCFCFCFEFEFEFFFFFFFCFCFCF1F1F1D0D3CB73903689AD3F93B94497BD4699C1489BC34A -9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B -9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B -9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B -9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B -9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC34A -98BF4895BB4690B6438CB0407EA03A526727E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA97A4B530629E3771B73A75BE3B78C13D7AC53F7DC8407FCB407FCB407FCB407FCB -407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB41ABEE -FFFFF7A695CB407FCB417FDCC4FFFFFFFFFFFFFFEE867FCB407FCB407FCB407FCB407FCB407FCB -407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB -407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB407FCB -407FCB407FCB407FCB407FCB3F7DC83D79C23A75BC3872B8366EB32E5F9B4C5F76EAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC -9EB0B42988A1309EBC33A6C535A9C836ACCB38AFCF39B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139CCF0FFFFF7A3BFD139B1D1 -39B1D139B1D139B1D139CCF0FFFFFFC2CCD139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1E1C2FFFFE1D9D939B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D15FD9F7FFFFF081B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D181E6FFFFFFF7A3BFD139B1D139B1D181E6FF -C2CCD139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -5FD9F7FFFFF081B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D138AECE35A9C833A4C331A0BE2E98B4267D95869295DCDCDCF1F1F1FAFAFAFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1959595 -0000000000000000000000000F0F0F828282F2F2F2FDFDFDFBFBFBF1F1F1D0D3CB718F3588AB3E -91B84395BC4698BF489AC1499BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A -9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A -9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A -9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A -9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A -9BC34A9BC34A9BC34A9AC24A97BE4794BA458FB5428AAF3F7D9E3A516627E1E1E1F1F1F1FCFCFC -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A4B530619E3770B63A75BD3B77C03D7AC43F7CC8 -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA3F7CC73D78C13A74BC3871B7366EB2 -2E5F9A4C5F76EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFAFAFAF1F1F1DCDCDC9EB0B42987A0309EBB33A5C334A8C736ABCA38AECD39B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39CCF0FFFFF7A3BFD039B1D039B1D039B1D039B1D039CCF0FFFFFFC2CCD039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1E0C2FFFFE1D9D839B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D05FD9F7FFFFF081B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1E0C2FFFFFFE6E0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D05FD9F7FFFFF081B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D037ADCC35A9C733A4C231A0BC2E97B3267D94869295 -DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF9F9F9EDEDEDDCDCDCA6A6A63131310000000000000000000000001E1E1EAAAAAAF8F8F8 -EFEFEFCFD2CA718E3587AA3E91B64395BB4598BE4799C0499BC14A9BC24A9BC24A9BC24A9BC24A -9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A -9BC24A9BC24A9BC24AACE1E3FFFFC7BDC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A -9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A -9BC24A9BC28CDFFFFFEFE16C9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A -9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9AC14997BD4793B9458FB3428AAD3F7D9D39 -516627E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A4B530619E3770B6 -3A74BD3B77C03D79C43F7CC7407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA417ED3A6EBFFE2C1D3407ECA407ECA407ECA407ECA -407ECA64C1F7FFEBE5647ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA3F7CC7 -3D78C13A74BB3871B7366DB22E5E9A4C5F76EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9EAFB429869F2F9DBA32A4C233A7C6 -35AAC937ADCC38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38B0CF38CBEFFFFFF7A2BDCF38B0CF38B0CF38B0CF38B0CF38CBEFFFFFFF -C2CBCF38B0CF80E5FFFFFFEF80B0CF38B0CF38B0CF38B0CF38CBEFFFFFF7A2BDCF38B0CF38B0CF -38CBEFFFFFFFFFFFFFFFFFF7A2BDE0C2FFFFE1D8D738B0CF38B0CF5ED8F7FFF2E75EBDE7E1FFFF -FFFFFFC2CBCF38B0CF38B0CF5ED8F7FFFFFFFFFFFFFFFFFFFFE5E038B0CF38B0CF38B0CF80E5FF -FFFFEF80B0CF38B0CF38B0CF38B0E0C2FFFFE1D8D738B0CF38B0CF5ED8F7FFFFEF80B0CF38B0CF -5ED8F7FFFFEF80B0CF38B0CF38B0CF38CBEFFFFFFFFFFFFFFFFFFFFFE5E038B0CF38B0CF38B0CF -38B0CF38B0E0C2FFFFFFE5E038B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38BDE7 -E1FFFFFFFFFFFFFFFFFFFFFFC2CBCF38B0CF38B0CF38B0CF5ED8F7FFFFEF80B0CF80E5FFFFFFEF -80B0CF38B0CF38B0CF38B0CF38CBEFFFFFFFC2CBCF38B0CF38B0CF38BDE7E1FFFFFFFFFFFFFFFF -FFF2E75EB0CF38B0CF38B0CF5ED8F7FFF2E75EBDE7E1FFFFFFFFFFC2CBCF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF36ACCB34A8C532A3C0 -309EBB2D96B2257C93869295DBDBDBF0F0F0F9F9F9FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD385C89 -385C89FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFCFCFCFCFCFCFBFBFBF7F7F7EDEDEDDCDCDCCACACABEBEBE808080181818000000 -0000000000000000003C3C3CBFBFBFCED1C9708C3485A83E90B54294B94596BC4798BE4899C049 -99C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C049 -99C04999C04999C04999C04999C04999C04999C049ABE0E3FFFFC7BCC04999C04999C04999C049 -99C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C049 -99C04999C04999C04999C04999C04999C08BDEFFFFEEE06B99C04999C04999C04999C04999C049 -99C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999BF4995BB46 -92B7448EB24189AC3F7C9C39516526E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA97A4B530619E3770B63A74BD3B77C03D79C43F7CC7407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA417ED3A6EBFFE2C1D3 -407ECA407ECA407ECA407ECA407ECA41ABEDFFFFED867ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA3F7CC73D78C13A74BB3871B7366DB22E5E9A4C5F76EAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDEBEBEB2F2F2F080808757575 -EBEBEBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9EAFB4 -28859E2F9CB931A3C133A6C435A9C836ACCB38AECE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38CAEFFFFFF7A2BDCE38AFCE38AFCE -38AFCE38AFCE38CAEFFFFFFFC2CACE38AFCE38CAEFFFFFFFC2CACE38AFCE38AFCE38AFCE80E5FF -FFF2E75EAFCE38AFCE38CAEFFFFFFFC2CACE38AFCE38BDE7E1FFFFFFFFFFE1D8D638AFCE38AFCE -5ED8F7FFFFFFFFFFEF80AFCE38AFCE38AFCE38AFCE80E5FFE1D8D638AFCE38AFCE38CAEFFFFFFF -E1D8D638AFCE38AFCE80E5FFFFFFEF80AFCE38AFCE38AFCE38AFDEC2FFFFE1D8D638AFCE38AFCE -5ED8F7FFFFEF80AFCE38AFCE5ED8F7FFFFEF80AFCE38AFCE38CAEFFFFFFFC2CACE38AFCE38AFCE -80E5FFC2CACE38AFCE38AFCE38AFCE38AFCE80E5FFFFFFFFFFE5DE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38CAEFFFFFFFE1D8D638AFCE38AFCE38CAEFFFFFFFE1D8D638AFCE38AFCE5ED8F7 -FFFFEF80AFCE38CAEFFFFFFFC2CACE38AFCE38AFCE38AFCE80E5FFFFFFEF80AFCE38AFCE38CAEF -FFFFFFE1D8D638AFCE38AFD6A2F2FFFFFFEF80AFCE38AFCE5ED8F7FFFFFFFFFFEF80AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE36ABCA34A6C432A2BF309DBA2D95B1257B92859194C5C5C5B2B2B2B8B8B8BABABABBBBBB -BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB9393937C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C -7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B7B7B7B7B7B7B7B7B -7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B -7B7B7B7B7B7B7B7B7B1B2D431B2D435555553E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E -3E3E3E3E3E3E3E3E3E3E3E3E3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3C3C3C3B3B3B383838343434 -3030302E2E2E272727000000000000000000000000000000000000525250637C2E84A63D8DB342 -92B84495BB4697BD4898BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49AAE0E3FFFFC7 -BBBF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF8BDEFFFFEEE06B98BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998BF4997BE4894BA4691B6448CB14187AB3E7B9B39506426E1E1E1F1F1F1FCFCFCFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A4B530619E3770B63A74BD3B77C03D79C43F7CC7407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA417EDC -C4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBE5647ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA3F7CC73D78C13A74BB3871B7366DB22E5E9A -4C5F76EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFA -B7B7B7000000000000000000171717929292FBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFEFEFE -FAFAFAF1F1F1DCDCDC9EAFB428859D2E9BB831A2C032A5C334A8C636ABCA37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC36C9EE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1C9CC37ADCC36ADD5A2F2FFFFE4DD -37ADCC37ADCC36ADDDC1FFFFE1D7D537ADCC36ADD5A2F2FFFFE4DD37ADCC37ADCC37ADCC36BBE6 -E1FFFFE1D7D537ADCC37ADCC5DD7F7FFFFFFC1C9CC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC -37ADCC37ADCC36ADD5A2F2FFFFE4DD37ADCC37ADCC80E4FFFFFFEE80ADCC37ADCC37ADCC36ADDD -C1FFFFE1D7D537ADCC37ADCC5DD7F7FFFFEE80ADCC37ADCC5DD7F7FFFFEE80ADCC36ADD5A2F2FF -FFE4DD37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC36ADD5A2F2FFFFFFFF -FFFFFFFFE4DD37ADCC37ADCC37ADCC36ADD5A2F2FFFFE4DD37ADCC37ADCC37ADCC37ADCC80E4FF -FFF2E65DADCC37ADCC5DD7F7FFFFEE80ADCC36ADD5A2F2FFFFE4DD37ADCC37ADCC36ADDDC1FFFF -E1D7D537ADCC36ADD5A2F2FFFFE4DD37ADCC37ADCC37ADCC36BBE6E1FFFFC1C9CC37ADCC5DD7F7 -FFFFFFC1C9CC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC37ADCC37ADCC35AAC833A5C331A1BE2F9CB92C94B0247B90838F92848484 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000708035C742A8DB24191B74494BB4696BC4798BE4898BF4998BF4998BF4998BF4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998BF49AAE0E3FFFFC7BBBF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF8BDEFFFFEEE06B98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4997BE4894BA4690B6438CB04187AA3E7A9B38506426 -E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A4B530619D3770B63A74BD -3B77C03D79C43F7CC7407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA4194E5E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFF7A694CA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA3F7CC73D78C1 -3A74BB3871B7366DB22E5E9A4C5F76EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF7F7F7EBEBEB454545000000000000000000000000353535C2C2C2FBFBFB -FEFEFEFEFEFEFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9EAFB328839C2E9AB631A1BF32A4C234A7C5 -36AAC937ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB36C8EEFFFFF7A2BACB37ACCB37ACCB37ACCB37ACCB36C8EEFFFFFFC1C8CB -37ACCB37ACCB5DD6F7FFFFF7A2BACB37ACCB36C8EEFFFFF7A2BACB37ACCB36ACDCC1FFFFE1D6D4 -37ACCB37ACCB37ACCB36ACDCC1FFFFE1D6D437ACCB37ACCB5DD6F7FFFFEE80ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB36ACD4A2F2FFFFF2E65DACCB37ACCB80E4FFFFFFEE -80ACCB37ACCB37ACCB36ACDCC1FFFFE1D6D437ACCB37ACCB5DD6F7FFFFEE80ACCB37ACCB5DD6F7 -FFFFEE80ACCB36BAE6E1FFFFE1D6D437ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB36ACD4A2F2FFFFFFFFFFFFF7A2BACB37ACCB36BAE6E1FFFFE1D6D437ACCB -37ACCB37ACCB37ACCB5DD6F7FFFFF7A2BACB37ACCB5DD6F7FFFFEE80ACCB37ACCB5DD6F7FFFFEE -80ACCB37ACCB36BAE6E1FFF7A2BACB37ACCB36ACDCC1FFFFE1D6D437ACCB37ACCB37ACCB36ACDC -C1FFFFE1D6D437ACCB5DD6F7FFFFEE80ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB35A9C733A4C2319FBD2F9BB8 -2C92AE24798E808C8F7F7F7F000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000001B1B1B4759217C9E398AAF4090B54393B94595BB4796BD4896BD48 -96BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD48 -96BD4896BD4896BD4896BD4896BD4896BD48A8DFE3FFFFC7BABD8ADDFFFFFFFFFFFFFFFFDDD448 -96BD4896BD48BAE9FFFFFFC7BABD4896BD4896BD4896BD4896D4C7FFFFE3CCC84896BD4896BD48 -96D4C7FFFFFFFFFFFFFFFFE3CCC88ADDFFFFEEDF6A96BD4896BD4896BD4896BD4896BD4896BD48 -96BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BC4792B8458FB443 -8BAF4086A93D7999384F6326E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -97A4B530619D3770B63A74BD3B77C03D79C43F7CC7407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA417ED3A6EBFFE2C1D3407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA407ECA -407ECA407ECA3F7CC73D78C13A74BB3871B7366DB22E5E9A4C5F76EAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF4F4F4E5E5E5D3D3D3888888181818000000 -000000000000000000545454E2E2E2FCFCFCFEFEFEFEFEFEFAFAFAF1F1F1DCDCDC9EAFB327839B -2D99B530A0BE32A3C133A6C435A8C736ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36C8EDFFFFF7A2B9CA36ABCA36ABCA36ABCA -36ABCA36C8EDFFFFFFC1C8CA36ABCA36ABCA36B9E5E1FFFFE1D6D336ABCA80E4FFFFF2E55DABCA -36ABCA36B9E5E1FFFFE1D6D336ABCA36ABCA36ABCA36ABDCC1FFFFE1D6D336ABCA36ABCA5DD6F7 -FFFFED80ABCA36ABCA36ABCA36ABCA36ABCA36ABCA80E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E5 -5DABCA36ABCA80E4FFFFFFED80ABCA36ABCA36ABCA36ABDCC1FFFFE1D6D336ABCA36ABCA5DD6F7 -FFFFED80ABCA36ABCA5DD6F7FFFFED80ABCA36B9E5E1FFFFC1C8CA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36B9E5E1FFFFFFF2E55DABCA -36B9E5E1FFFFC1C8CA36ABCA36ABCA36ABCA36ABCA36C8EDFFFFF7A2B9CA36ABCA5DD6F7FFFFED -80ABCA36ABCA36B9E5E1FFFFC1C8CA36ABCA5DD6F7FFF2E55DABCA36ABCA36B9E5E1FFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1D6D336ABCA5DD6F7FFFFED80ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -34A7C632A3C1309EBC2E9AB72B91AD23778D7E8A8C8C8C8C323232313131313131303030303030 -3030303030303030303030304F4F4F606060606060606060606060606060606060606060606060 -6060606060606060606060606060606060606060606060605F5F5F5F5F5F5F5F5F5F5F5F5F5F5F -5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F -5F5F5F5F5F5F1522331522337C7C7C8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E -8E8E8E8E8E8E8E8E8E8E8E8E8D8D8D8D8D8D8D8D8D8D8D8D8C8C8C8C8C8C8B8B8B8B8B8B888888 -8383833535350000000000000000000000000505055D5D5D9FA19B5E772B79983887AB3E8EB442 -92B84493BA4695BB4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC47 -95BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC47A8DEE3FFFFFFFFFFC6 -B9BC4795BC47A8DEE3FFFFE3CCC84795BC4795D3C6FFFFFFDDD34795BC4795BC4795BC47B9E9FF -FFF4A8A8BC4795BC4795D3C6FFFFFFDDD34795BC4795C8A8EEFFFFFFFFFFEEDE6995BC4795BC47 -95BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC47 -95BC4794BB4691B7448EB34289AE3F84A83D7898374E6225E1E1E1F1F1F1FCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA97A4B530619D3770B53A74BC3B77BF3D79C33F7CC7407EC9407EC9 -407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9 -407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9 -407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9 -407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9 -407EC9407EC9407EC9407EC9407EC9407EC93F7CC63D78C03A74B93871B5366CB02E5D984B5E75 -E7E7E7F5F5F5FAFAFAFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFAFAFAF3F3F3E6E6E6 -D4D4D4C3C3C3B4B4B4626262060606000000000000000000070707828282F2F2F2FCFCFCF9F9F9 -F1F1F1DCDCDC9EAFB327829A2D98B4309FBC31A2C033A4C335A7C636AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936C8EDFFFFF6 -A2B9C936AAC936AAC936AAC936AAC936C8EDFFFFFFC1C8C936AAC936AAC936AAD3A2F2FFFFF2E5 -5DAADBC1FFFFE1D5D336AAC936AAC936AADBC1FFFFE1D5D336AAC936AAC936AAC936AADBC1FFFF -E1D5D336AAC936AAC95DD5F6FFFFED80AAC936AAC936AAC936AAC936AAD3A2F2FFFFFFED80AAC9 -36AAC936AAD3A2F2FFFFF2E55DAAC936AAC980E3FFFFFFED80AAC936AAC936AAC936AADBC1FFFF -E1D5D336AAC936AAC95DD5F6FFFFED80AAC936AAC95DD5F6FFFFED80AAC936B9E5E1FFFFE1D5D3 -36AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC980E3FFFFFFED80AAC936B9E5E1FFFFE1D5D336AAC936AAC936AAC936AAC95DD5F6FFFFF6 -A2B9C936AAC95DD5F6FFFFED80AAC936AAC936AAD3A2F2FFE1D5D336AAD3A2F2FFE1D5D336AAC9 -36AAC936AADBC1FFFFE1D5D336AAC936AAC936AAC936AAC936AAC936AAC936AAC95DD5F6FFFFED -80AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC934A6C532A2C0309DBB2E99B62B90AC23768C7D888BC1C1C1C3C3C3 -BEBEBEBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBDBDBDBEBEBE -BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE -BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE2A45672A4567BEBEBEBEBEBEBEBEBEBEBEBEBEBEBE -BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBFBFBFC0C0C0C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C0C0C0BDBDBD8B8B8B2222220000000000000000000000003A3A3A9E9E9EB2B2B2A7A9A2 -5E772C7A993788AB3E8EB34191B64493B84594BA4795BA4795BA4795BA4795BA4795BA4795BA47 -95BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA47 -95BA47A8DDE3FFFFE3CCC64795BA4795BA4795BA8ADDFFFFEEDD6995BA4795BA69CCF4FFFFE88A -95BA4795BA4795BA8ADDFFFFEEDD6995BA4795BA69CCF4FFFFE88A95BA4795BA4795BA4795C6A8 -EEFFFFEEDD6995BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA47 -95BA4795BA4795BA4795BA4795BA4794B94691B6448DB24289AC3F84A73D7897374E6125E1E1E1 -F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A4B530619D3770B53A74BC3B76BF -3D79C33F7CC6407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9 -407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9 -407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9 -407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9 -407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC9407EC93F7CC63D78BF3973B8 -1B3759000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001E1E1EA9A9A9F7F7F7F0F0F0DCDCDC9EAFB32781992D97B3309EBB31A1BE33A4C135A7C5 -36A9C736AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836C8EDFFFFF6A2B9C836AAC836AAC836AAC836AAC836C8EDFFFFFFC1C8C836AAC8 -36AAC836AAC85DD5F6FFFFF6A2D5EDFFFFF6A2B9C836AAC836AAC836AAD2A2F2FFFFE3DB36AAC8 -36AAC836AAC836C8EDFFFFFFE1D5D236AAC836AAC85DD5F6FFFFED80AAC836AAC836AAC836AAC8 -36B9E4E1FFFFE1D5D236AAC836AAC836AAD2A2F2FFFFF2E45DAAC836AAC85DD5F6FFFFED80AAC8 -36AAC836AAC836B9E4E1FFFFE1D5D236AAC836AAC85DD5F6FFFFED80AAC836AAC85DD5F6FFFFED -80AAC836AADBC1FFFFFFE3DB36AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC880E3FFFFFFED80AAC836AAD2A2F2FFFFE3DB36AAC836AAC8 -36AAC836AAC880E3FFFFF2E45DAAC836AAC85DD5F6FFFFED80AAC836AAC836AAC85DD5F6FFF2E4 -5DB9E4E1FFF6A2B9C836AAC836AAC836AAD2A2F2FFFFE3DB36AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC85DD5F6FFFFED80AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836A9C834A6C432A1BE309DB92E99B42B90AB -23768C7F8A8DC7C7C7CDCDCDCCCCCCCBCBCBCACACACACACACACACACACACACACACACACACACACACA -CACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACA -CBCBCBCCCCCCCDCDCDCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1 -D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1 -D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D2D2D2D4D4D4D5D5D5 -D6D6D6D7D7D7D7D7D7D6D6D6D5D5D5C4C4C44646460000000000000000000000001A1A1A808080 -B3B3B3BDBDBDC3C3C3B3B5AE637C2E7B9C3988AC3E8DB14290B54392B74593B84693B84693B846 -93B84693B84693B84693B84693B84693B84693B84693B84693B84693B84693B84693B84693B846 -93B84693B84693B84693B84693B846A7DCE2FFFFC6B9B84693B84693B84693B889DCFFFFFFE789 -93B84693B846A7DCE2FFFFE2CBC44693B84693D0C6FFFFE2CBC44693B84693B889DCFFFFEDDC69 -93B84693B84693B84693B889DCFFFFEDDC6993B84693B84693B84693B84693B84693B84693B846 -93B84693B84693B84693B84693B84693B84693B84693B84693B84693B8468FB4438CB04188AB3E -83A53C7696364D6125E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA97A4B5 -2F609D376FB53974BC3B76BF3C79C33E7BC63F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC9 -3F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DD3A6EAFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFED857DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC9 -3F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC9 -3F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC9 -3F7DC93F7BC63C76BE3870B51A3556000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000004B4B4BE6E6E6DBDBDB9EAEB32680982D96B2 -2F9DBA31A0BD32A3C034A6C435A8C636A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C7 -36A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C7 -36A9C736A9C736A9C736A9C736A9C736A9C736C7EDFFFFF6A2B9C736A9C736A9C736A9C736A9C7 -36C7EDFFFFFFC1C7C736A9C736A9C736A9C736A9DAC1FFFFFFFFFFFFF1E35DA9C736A9C736A9C7 -36A9C75DD5F6FFFFFFC1C7C736A9C736B9E3E1FFFFFFFFFFE1D5D036A9C736A9C75DD5F6FFFFED -80A9C736A9C736A9C736A9C736A9DAC1FFFFFFE3DA36A9C736A9C780E3FFFFFFFFFFF1E35DA9C7 -36A9C736B9E3E1FFFFE1D5D036A9C736B9E3E1FFFFFFFFFFE1D5D036A9C736A9C75DD5F6FFFFED -80A9C736A9C75DD5F6FFFFED80A9C736A9C75DD5F6FFFFFFC1C7C736A9C736A9C780E3FFE1D5D0 -36A9C736A9C736A9C736C7EDFFFFED80A9C736A9C736A9C736C7EDFFFFFFE1D5D036A9C736A9C7 -5DD5F6FFFFFFC1C7C736A9C736A9C75DD5F6FFFFFFC1C7C736A9C736A9C75DD5F6FFFFED80A9C7 -36A9C736A9C736B9E3E1FFF6C1E3F6FFF1E35DA9C736A9C736A9C736A9C736C7EDFFFFFFC1C7C7 -36A9C736A9C736A9DAC1FFF6A2B9C736A9C75DD5F6FFFFED80A9C736A9C736A9C736A9C736A9C7 -36A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C7 -36A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A8C634A5C3 -32A0BD309CB82E98B32B90AB23768C828E91D1D1D1DDDDDDE1E1E1E2E2E2E2E2E2E2E2E2E2E2E2 -E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 -E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E5E5E5E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 -E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 -E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8 -E8E8E8E9E9E9EAEAEAECECECECECECEDEDEDECECECEBEBEBE7E7E74D4D4D000000000000000000 -0B0B0B626262B2B2B2BBBBBBC8C8C8D3D3D3D7D7D7C1C4BD66812F7D9E3987AC3F8CB1418EB443 -90B64492B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B746 -92B74692B74692B74692B74692B74692B74692B74692B74692B746A6DBE2FFFFC6B8B74692B746 -92B74692B789DCFFFFFFE78992B74692B74692C3A8EDFFFFEDDB6992B746B8E7FFFFF3A8A6B746 -92B74692C3A8EDFFFFEDDB6992B74692B74692B74692B789DCFFFFEDDB6992B74692B74692B746 -92B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B746 -91B6458EB3438BAF4186AA3E82A43C7595364C6025E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA96A4B52F609D366FB53974BC3A75BF3C78C33E7BC63F7DC93F7DC93F7DC9 -3F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC9 -85D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A694C93F7DC93F7DC93F7DC93F7DC9 -3F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC9 -3F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC9 -3F7DC93F7DC93F7DC93F7DC93F7DC93E7BC53A75BD366DB1183251000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000606060D9D9D9E9E9E9 -D9D9D99DADB2267F972C95B12F9CB9309FBC32A2BF34A5C235A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535C5ECFFFFF6A1B6C5 -35A7C535A7C535A7C535A7C535C5ECFFFFFFC1C5C535A7C535A7C535A7C535A7C580E2FFFFFFFF -C1C5C535A7C535A7C535A7C535A7C535A7C55CD4F6FFFFFFFFFFFFFFFFEC80A7CFA1F1FFE1D4CF -35A7C535A7C55CD4F6FFFFEC80A7C535A7C535A7C535A7C535A7C535B6E2E1FFFFFFFFFFFFFFFF -FFE2D980E2FFFFF1E25CA7C535A7C535A7C55CD4F6FFFFFFFFFFFFFFFFEC80A7CFA1F1FFE1D4CF -35A7C535A7C55CD4F6FFFFEC80A7C535A7C55CD4F6FFFFEC80A7C535A7C535A7C55CD4F6FFFFFF -FFFFFFFFFFFFFFE2D935A7C535A7C535A7C535A7C535A7C55CD4F6FFFFFFFFFFFFFFFFFFFFFFFF -C1C5C535A7C535A7C535A7C535A7C535C5ECFFFFFFFFFFFFFFFFFFFFFFF6A1B6C535A7C535A7C5 -35A7C55CD4F6FFFFEC80A7C535A7C535A7C535A7CFA1F1FFFFFFFFE1D4CF35A7C535A7C535A7C5 -35A7C535A7C535B6E2E1FFFFFFFFFFFFFFFFFFFFF6A1B6C535A7C535A7C55CD4F6FFFFEC80A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C533A4C1319FBC2F9BB72D96B22A8FA923768B849093D8D8D8E9E9E9F0F0F0 -F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4 -F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5F5F5F5F5F5F5F6F6F6F7F7F7 -F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7 -F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7365A86365A86F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7 -F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F6F6F6EEEEEE -4D4D4D000000000000454545A5A5A5BBBBBBC5C5C5D2D2D2DFDFDFE7E7E7E6E6E6CACDC5698330 -7FA03A88AC3F8CB1418EB34390B54491B74592B74692B74692B74692B74692B74692B74692B746 -92B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B746 -A6DBE2FFFFC6B8B74692B74692B74692B789DCFFFFFFE78992B74692B74692B769CAF3FFFFF3A8 -A6B789DCFFFFEDDB6992B74692B74692B789DCFFFFEDDB6992B74692B74692B74692B789DCFFFF -EDDB6992B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B746 -92B74692B74692B74692B74691B6458DB2438AAF4086A93E81A43B7594354C6024E1E1E1F1F1F1 -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B52F609D366FB53974BC3A75BE3C78C2 -3E7BC63F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC9 -3F7DC93F7DC93F7DC93F7DDBC4FFFFE1C1D33F7DC93FAAEDFFFFED857DC93F7DC964C1F6FFD5DB -3F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC9 -3F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC9 -3F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93F7DC93E7BC43A74BB356BAE30629E -2A568E234774384657ADADADB7B7B7BBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BBBBBBBBBBBBBBBBBBBABABAB7B7B7B3B3B38C8C8C2A2A2A0000000000000000000000002D2D2D -9C9C9CD2D2D2E1E1E1E7E7E7D9D9D99DADB1267F962C95B02F9CB8309EBB32A1BE34A4C135A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C480E2FFFFFFEC80A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C433A3C0319FBB2F9AB62D96B12A8EA823768B -849092DBDBDBEFEFEFF8F8F8FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD385C89385C89FDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFE -FEFEFEFDFDFDF8F8F8EDEDEDD5D5D5848484A1A1A1BDBDBDC3C3C3CFCFCFDBDBDBE7E7E7F0F0F0 -F4F4F4EDEDEDCDD0C86983317D9F3987AB3E8AAF408DB2428EB44390B54590B54590B54590B545 -90B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B545 -90B54590B54590B54590B545A3DBE2FFFFC6B6B54590B54590B54590B588DBFFFFFFE78890B545 -90B54590B545A3DBE2FFFFE2C9DBC6FFFFE2C9C14590B54590B54590B568C9F3FFFFE78890B545 -90B54590B54590CFC6FFFFFFEDDB6890B54590B54590B54590B54590B54590B54590B54590B545 -90B54590B54590B54590B54590B54590B54590B54590B5458FB5448CB14289AD4085A83D80A33B -7493354B5F24E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B52F609C -366FB43974BB3A75BE3C78C23E7BC53F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC8 -3F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DDBC4FFFFC4AAC83F7DC83F94E4E1FFED -857DC83F7DC83F94E4E1FFED857DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC8 -3F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC8 -3F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC8 -3E7BC43A75BA366CAE30629F2B59902449763A4859B1B1B1BCBCBCBFBFBFC1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C0C0C0BEBEBEAFAFAF4F4F4F000000000000000000 -000000101010757575B6B6B6C4C4C4D5D5D5E3E3E3E8E8E8D9D9D99DADB1267E952C94AE2F9AB6 -309DBA32A0BD33A3C035A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6D7C1FFFFFFE2D735A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C333A2BF319DBA -2F99B52D95B02A8DA723758A859093DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF9F9F9EFEFEFDFDFDFCFCFCFCACACACECECED8D8D8 -E4E4E4EEEEEEF5F5F5FAFAFAFAFAFAF0F0F0CFD2CA6883307C9E3985A93D89AE3F8BB0418DB242 -8FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB444 -8FB4448FB4448FB444A2DBE2FFFFFFDBCE448FB4448FB444A2DBE2FFFFC5B6B4448FB4448FB444 -8FB488DBFFFFFFE7888FB4448FB4448FB4448FB488DBFFFFFFFFFFFFF2A8A2B4448FB4448FB444 -8FB444A2DBE2FFFFFFDBCE448FB4448FC1A8EDFFFFFFFFFFEDDB678FB4448FB4448FB4448FB444 -8FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448EB343 -8BB04188AC3F83A73C7FA13A7392344B5E23E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA96A4B52F609C366FB43974BB3A75BE3C78C23E7BC53F7DC83F7DC83F7DC83F7DC8 -3F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DDBC4FFFF -C4AAC83F7DC83F7DDBC4FFF6A694C83F7DC83FAAEDFFFFED857DC83F7DC83F7DC83F7DC83F7DC8 -3F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC8 -3F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC8 -3F7DC83F7DC83F7DC83F7DC83E7BC43A76BC376EB23367A72F5F9B275082405063C5C5C5D1D1D1 -D5D5D5D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D5D5D5D3D3D38080800C0C0C -000000000000000000050505545454AAAAAABABABAC7C7C7D6D6D6E3E3E3ECECECEBEBEBDADADA -9EAEB2257D942B92AD2E99B52F9CB8319FBC33A2BF34A4C134A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C25BD3F5FFFFF5A1B4C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C232A1BD309CB92E98B42C94AF2A8CA6227489859093DCDCDCF1F1F1FAFAFAFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF4F4F4E9E9E9 -E0E0E0DEDEDEE3E3E3ECECECF4F4F4F9F9F9FCFCFCFEFEFEFCFCFCF1F1F1CFD2CA6782307C9D38 -85A83D89AC3F8BAF418CB1428EB2448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB344 -8FB3448FB3448FB3448FB3448FB3448FB3448FB344A2DAE2FFFFFFDBCD448FB3448FB344A2DAE2 -FFFFC5B6B3448FB3448FB3448FB388DBFFFFFFE7888FB3448FB3448FB3448FB344B6E7FFFFFFFF -DBCD448FB3448FB3448FB3448FB3448FB344A2DAE2FFFFFFFFFFFFFFFFC5B6B367C8F2FFEDDA67 -8FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB344 -8FB3448FB3448FB3448EB2438AAE4187AB3F83A53C7EA03A7291344A5D23E1E1E1F1F1F1FCFCFC -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B52F609C366FB43974BB3A75BE3C78C23E7BC5 -3F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC8 -3F7DC83F7DC83F7DC885D5FFFFD5DB3F7DC83F7DD2A6EAFFFFFFFFFFFFFFFFFFFFFFD5DB3F7DC8 -3F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC8 -3F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC8 -3F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83E7BC53B76BD3871B5356CAF3266A6 -2B578E47586DD9D9D9E6E6E6EBEBEBEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDECECECECECEC -E9E9E9B8B8B80000000000000000000000003737379A9A9AB7B7B7C2C2C2CFCFCFDDDDDDE9E9E9 -F1F1F1F4F4F4EFEFEFDBDBDB9EAEB2257C932B91AD2E98B52F9BB8319EBB33A1BE34A3C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A3C132A0BD309BB82E97B32C93AE2A8BA5227389859093 -DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDFAFAFAF5F5F5F0F0F0F0F0F0F4F4F4F8F8F8FBFBFBFDFDFDFEFEFEFFFFFFFCFCFC -F1F1F1CFD2CA6781307B9C3884A73C88AB3F8AAD408CAF418EB1438EB1438EB1438EB1438EB143 -8EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB143 -8EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB143 -8EB1438EB143B5E6FFFFFFC5B5B1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB143 -8EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB143 -8EB1438EB1438EB1438EB1438EB1438EB1438EB1438DB1438AAD4087A93E82A43B7E9F39729034 -4A5D23E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B52F609C366FB4 -3974BB3A75BE3C78C23E7BC53F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC8 -3F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83FAAEDFFFFF6A694C83F7DC83F7DDBC4FFFF -FFFFFFFFFFED857DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC8 -3F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC8 -3F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83F7DC83E7BC5 -3B77BE3973B8366FB3346AAD2D5B954A5D72E4E4E4F2F2F2F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F7F7F7F2F2F2CACACA0707070000001D1D1D838383B7B7B7C0C0C0CCCCCC -D9D9D9E5E5E5EFEFEFF6F6F6FAFAFAF8F8F8F0F0F0DCDCDC9EADB2257B932B90AC2E97B42F9AB7 -319DBA339FBD34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0329EBC309AB72E96B2 -2C91AD2A8AA5227288859093DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFCFCFCFAFAFAFAFAFAFCFCFCFDFDFDFEFEFE -FFFFFFFFFFFFFFFFFFFCFCFCF1F1F1CFD1CA66802F7A9A3783A53C87AA3E89AC408BAE418DAF42 -8DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB043 -8DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB043 -8DB0438DB0438DB0438DB0438DB0438DB087DBFFFFFFE5878DB0438DB0438DB0438DB0438DB043 -8DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB043 -8DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438CAF4289AB40 -86A83E81A23B7D9D39718E33495C23E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA96A4B42F609B366FB33974BA3A75BD3C78C03E7BC43F7DC73F7DC73F7DC73F7DC73F7DC7 -3F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC7 -3F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC7 -3F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC7 -3F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC7 -3F7DC73F7DC73F7DC73E7BC43B77BE3973B83770B3356CAE2E5D964C5F75E9E9E9F7F7F7FCFCFC -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFBFBFBF4F4F4E5E5E5B8B8B8929292BDBDBD -C0C0C0C9C9C9D6D6D6E2E2E2EDEDEDF4F4F4FAFAFAFCFCFCFDFDFDFAFAFAF1F1F1DCDCDC9DADB2 -257A922B8FAB2D96B32F99B6309BB9329EBC33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF329DBB3099B62E95B12C90AC2989A4227187859093DCDCDCF1F1F1FAFAFAFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFE -FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1CFD1CA657F2F7A993783A43B -86A83E88AA3F8AAC418CAE428DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43 -8DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43 -8DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43A1D8E2FFFFE2C8BD438DAF43 -8DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43 -8DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43 -8DAF438DAF438CAE4288AA3F85A63D81A13B7C9C38708D33495B22E1E1E1F1F1F1FCFCFCFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B42F609B366FB33974BA3A75BD3C78C03E7BC43F7DC7 -3F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC7 -3F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC7 -3F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC7 -3F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC7 -3F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73E7BC43B77BD3973B83770B4356CAF2E5D97 -4C5F75EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF5F5F5 -E8E8E8D7D7D7CCCCCCCCCCCCD4D4D4DFDFDFEAEAEAF2F2F2F8F8F8FCFCFCFEFEFEFEFEFEFEFEFE -FAFAFAF1F1F1DCDCDC9DADB22479912A8EAA2D95B22E97B5309AB8329DBB339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE319CBA2F98B52D94B02B8FAB2988A3217086859093DCDCDC -F1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1 -CFD1CA657E2E79983681A33B85A73D87A93F87A94088AA418AAC418BAD428BAD428BAD428BAD42 -8BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD42 -8BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD42 -8BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD42 -8BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD42 -8BAD428BAD428BAD428BAD428BAD428AAC4187A94086A73E84A53D7FA03A7B9B386F8C32485A22 -E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B42E609B366EB33873BA -3A75BD3C78C03D7AC43F7CC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC7 -3F7DC73F7DC73F7DC73F7DC73F7DC73F7DDAC4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAE3647DC7 -3F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC7 -3F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC7 -3F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73F7DC73D7AC43B76BD -3972B8376FB4356CAF2D5D974C5F75EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF9F9F9F0F0F0E5E5E5E0E0E0E2E2E2E9E9E9F0F0F0F7F7F7FBFBFBFDFDFD -FEFEFEFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB12479902A8EA82D94B02E97B3309AB6 -329DBA339FBC339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBC319BB82F97B42D93AF2B8FAA -2988A1217085859093DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCF1F1F1CFD1CA647D2D77973580A13A83A43C82A23D82A33E85A54087A841 -88A94289AA4189AB4189AB4189AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC40 -89AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC40 -89AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC40 -89AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC40 -89AC4089AC4089AC4089AC4089AC4089AB4189AB4188AA4187A94186A74083A33E7F9F3B7F9F3B -7E9F397A99376E8A31485A22E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -96A4B42E5F9B356EB33873BA3974BD3B77C03D7AC43E7CC73E7CC73E7CC73E7CC73E7CC73E7CC7 -3E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC763C0F6FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFE1C0D03E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC7 -3E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC7 -3E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC7 -3E7CC73E7CC73D79C43A75BD3872B8366FB4346BAF2D5D974C5E75EAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF8F8F8F3F3F3F1F1F1F3F3F3F7F7F7 -FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB124788F -2A8DA72C93AF2E96B23099B5319CB8339EBB339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBB -319AB72F96B22D92AE2B8EA92887A0216F84859093DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1CFD1CA627B2D7391347C9B3A7D9B3D -7E9D3E819F4083A24185A44286A64386A74387A84387A84288A94288A94288AA4188AB4189AB41 -89AB4189AB4089AB4089AB4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC40 -89AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC40 -89AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC40 -89AB4089AB4089AB4188AB4188AB4188AA4188AA4188A94187A84187A74186A64285A54284A441 -83A241809F3F7D9B3C7A983A7895397592366A8630455621E1E1E1F1F1F1FCFCFCFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA96A4B42E5F9B356EB33873BA3974BC3B77C03D7AC43E7CC73E7CC7 -3E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73EA9EDFFFFFF -FFD5DA3E7CC73E7CC73E7CC73E7CC73E7CC73E7CD0A5EAFFFFFFF6A593C73E7CC73E7CC73E7CC7 -3E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC7 -3E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73E7CC7 -3E7CC73E7CC73E7CC73E7CC73E7CC73E7CC73D79C33A75BD3872B8366FB4346BAF2D5D974C5E75 -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFD -FBFBFBFBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFA -F1F1F1DCDCDC9DADB124778E298BA62C92AE2D95B12F98B4319AB7329CBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329CBA3099B62E95B12C91AC2A8DA828859F216E84859093DCDCDCF1F1F1 -FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1E1E1E1 -6B7F405F772D728C397A973F7C993F7E9C40809E4282A04383A14383A34384A44385A44385A543 -85A64286A64286A74286A74286A74187A84187A84187A84187A94187A94187A94087A94087AA40 -87AA4087AA4087AA4087AA4087AA4087AA4087AA4087AA4087AA4087AA4087AA3F87AA3F87AA3F -87AA3F87AA3F87AA3F87AA3F87AA4087AA4087AA4087AA4087AA4087AA4087AA4087AA4087AA40 -87A94087A94087A94087A94087A84186A84186A74186A74186A64185A64185A54184A44184A341 -83A34183A24282A041809E417F9D407D9A3F7A973D77943B749039678131546A27727B5EE1E1E1 -F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B42E5F9A356EB23873B93974BC -3B77BF3D7AC33E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC6 -3E7CC63E7CC684D5FFFFEAE3637CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CCFA5EAFF -FFD5D93E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC6 -3E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC6 -3E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63D79C23A75BC3872B7 -366FB3346BAE2D5D964C5E75EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB124778D298BA52C92AD2D94B02F97B3319AB6 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB83099B52E95B02C91AB2A8DA728859E -216E83859092DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFE7E7E7505050000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000004B5D255A6E2F667D36728C3D7B96417E9A437F9C44809D44 -819E44819F4482A04483A14483A24483A24383A34384A34384A34384A34384A44384A44284A442 -84A54285A54285A54285A64185A64185A64185A64185A64185A64185A64185A64185A64185A641 -85A64185A74185A74085A74085A74085A74185A64185A64185A64185A64185A64185A64185A641 -85A64185A54185A54185A54185A54184A44184A44184A44184A34283A34283A24283A24282A142 -82A14281A042819F42809E42809E427F9D427E9B417D99417B984079964075913D6D86385F7530 -506327546235B6B7B3E2E2E2F2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B4 -2E5F9A356EB23873B93974BC3B77BF3D7AC33E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC6 -3E7CC63E7CC63E7CC63E7CC63E7CC63E7CD9C4FFFFE1C0CF3E7CC63E7CC63E7CC63E7CC63E7CC6 -3E7CC63E7CC63E7CC663C0F6FFEAE3637CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC6 -3E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC6 -3E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC6 -3E7CC63D79C23A75BC3872B7366FB3346BAE2D5D964C5E75EAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB123768C298AA4 -2B91AC2D93AF2E96B23099B5319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB73098B4 -2E94AF2C90AA2A8CA627859D206E82858F92DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF787878000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000008588808D9A72617832596C2F -647A3670883D7790407B96437E99447F9B45809C45819D45819E45829E44829F44829F44829F44 -829F4482A04482A04483A04383A14383A14383A14383A24383A24283A24283A24283A24283A242 -83A24283A24283A24283A24283A24283A24183A24183A24183A24183A24183A24183A24183A242 -83A24283A24283A24283A24283A24283A14283A14283A14282A14282A04282A04282A042819F42 -819F42819E43809D43809D437F9C427F9B427F9B427E9A427D99427C98427A954176903F728B3C -6A82385E73315164295767367D856ABABABACBCBCBE5E5E5F3F3F3FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA96A4B42E5F9A356DB23873B93974BC3B77BF3D7AC33E7CC63E7CC63E7CC6 -3E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CD9C4FFFFC4A9C63E7CC6 -3E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63EA9EDFFFFED847CC63E7CC63E7CC63E7CC6 -3E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC6 -3E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC6 -3E7CC63E7CC63E7CC63E7CC63E7CC63D79C23A75BC3872B7366FB3346BAE2D5D964C5E75EAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1 -DCDCDC9DACB023758B2889A32B8FAA2C92AD2E95B02F98B4319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB62F96B22D92AE2B8EA9298AA427839C206C81858F92DCDCDCF1F1F1FAFAFA -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -939393B5B5B5A9ADA2959F8171814F5A6E315A6D31607535677E396E863D758E417B95447E9945 -7F9B457F9B457F9B45809B45809C45809C45809C45809C45809D44809D44819D44819E44819E44 -819E43819E43819E43819E43819E43819E43819E43819E43819E43819E43819E42819E42819E43 -819E43819E43819E43819E43819E43819E43819E43819E43809E43809D43809D43809D43809C43 -7F9C437F9C437F9B437F9B437E9A437E9A437D99437D98437C98437B97437A9542789241738C3E -6C843B6379355B6F3054672C51642B5B6A3980896BAEAEAEB5B5B5C4C4C4D5D5D5EBEBEBF7F7F7 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B42E5F9A356DB23873B93974BC3B77BF -3D7AC33E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC6 -3E7CD9C4FFFFC4A9C63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63EA9EDFFFFED -847CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC6 -3E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC6 -3E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63E7CC63D79C23A75BC3872B7366FB3 -346BAE2D5D964C5E75EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DACB022748A2788A22A8FA92B91AC2D94AF2E97B23099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B42E96B12C92AD2A8EA8298AA326839B1F6C80 -858F92DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFAFAFAF3F3F3E2E2E2D4D4D4C4C4C4BCBCBCB3B3B3AFAFAFA3A79D929B7E7E8C5F687B41 -5A6E31596C315E7234667B386C833C70883E738B40768F417892427B95447C97447D98457E9945 -7E9A457E9A457E9A457E9A447E9A447E9A447E9A447E9A447E9A447E9A447E9A447E9A437E9A43 -7E9A437E9B437E9B437E9B437E9B437E9A437E9A437E9A437E9A437E9A437E9A437E9A437E9A44 -7E99447D99437D99437D98437D98437D98437C97437A9543789342768F40738C3F6F873D6A813A -657B376175355B6F3255682E53652C5D6E3B7C8569828C6CA2A59CADADADB2B2B2BABABAC4C4C4 -D4D4D4E2E2E2F3F3F3FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B42E5F9A -356DB13873B83974BB3B77BE3D7AC23E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC5 -3E7CC53E7CC53E7CC53E7CC53E7CD9C4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFEC847CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC5 -3E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC5 -3E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC5 -3D79C13A75BB3872B6366FB2346BAD2D5D964C5E75EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DACB02274892788A12A8EA8 -2B91AB2D94AE3096B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13096B02C91AC -2A8DA72989A226829A1F6B7F858F92DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF9F9F9EFEFEFE6E6E6D9D9D9CFCFCFC4C4C4BDBDBD -B6B6B6B2B2B2AEAEAEACACACA3A69C949E7F808F6070804F5E73325A6E31596C31596C325B6E33 -5E7235627737667C396A803B6E853D71893F748C41758E41768F42769042779142789143789243 -7993437993437A94437A95447B95447B96447B96447B96447B95447A95447A95437A94437A9443 -799343799343789242779042758E41738C40718A3F6F873D6C843C6A813B667C396277365D7133 -586B3155682F54672E56692E5F6F3C6A784C7E876A848F6DA1A49BACACACADADADB1B1B1B4B4B4 -B9B9B9C1C1C1CECECED8D8D8E6E6E6EFEFEFFAFAFAFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA96A4B42E5F99356DB13873B83974BB3B77BE3D7AC23E7CC53E7CC53E7CC53E7CC5 -3E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CD9C4FFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC847CC53E7CC53E7CC53E7CC53E7CC5 -3E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC5 -3E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC5 -3E7CC53E7CC53E7CC53E7CC53D79C13A75BB3872B6366FB2346BAD2D5D954C5E74EAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC -9DACB02173882786A0298DA72B90AA3093AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3092AB2A8CA62888A12581991F6A7E858F92DCDCDCF1F1F1FAFAFAFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9F -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF9F9F9F4F4F4 -ECECECE5E5E5DADADAD1D1D1C9C9C9C2C2C2BBBBBBB7B7B7B3B3B3AFAFAFADADADABABABABABAB -A3A79CA1A49B929C7E8D967B7E8C5F79865E6E7E4F6476405A6E31586C31586B31586B31586B32 -596B32596C325A6D335B6E335C6F345D71345E72355F7335607536617637627737617637617536 -6074365F73355E72355D71345C70345C6F335A6E33596C32576A3056693056692F56692F576A2F -576B2F60713D6B7A4C7D876A828C6B8E977C999F8CAAAAAAABABABABABABADADADAFAFAFB3B3B3 -B7B7B7BBBBBBC1C1C1C6C6C6CECECED6D6D6E3E3E3EBEBEBF4F4F4F9F9F9FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B42E5F99356DB13872B83974BB3B77BE3D79C2 -3E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC5 -3E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC5 -3E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC5 -3E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC5 -3E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53E7CC53D79C13A75BB3871B6366EB2346BAD -2D5C954C5E74EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFAFAFAF1F1F1DCDCDC9DACB021728727859E298CA62E8FA83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A82F8DA62887A02580981F6A7D848F92 -DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFDFDFDFCFCFCF8F8F8F5F5F5EEEEEEE7E7E7DFDFDFD9D9D9D1D1D1CCCCCCC5C5C5 -C0C0C0BBBBBBB8B8B8B7B7B7B5B5B5B2B2B2AFAFAFADADADACACACACACACACACACACACACA4A79C -A1A59B99A08C989F8B919B7D90997D8F987C8E967C86926E85906D838E6D7B895F7A875E79865E -77845D6F7F4F76835D77845D78855D78855D79865E818B6C828C6C828D6C838E6D85916D8E977C -979D8B989F8BA1A59BAAAAAAACACACACACACACACACACACACADADADAFAFAFB2B2B2B5B5B5B7B7B7 -B8B8B8BBBBBBC0C0C0C5C5C5CCCCCCD1D1D1D8D8D8DEDEDEE4E4E4EBEBEBF2F2F2F7F7F7FCFCFC -FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B42E5E99356CB1 -3872B83973BB3B76BE3D79C23E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC5 -3E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC5 -3E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC5 -3E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC5 -3E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53D78C1 -3A74BB3871B6366EB2346BAD2D5C954C5E74EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DACAF21718627849D2E8BA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4378DA4 -3089A1257F971F697C848F92DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFCFCFCF9F9F9F6F6F6F1F1F1 -EDEDEDE7E7E7E2E2E2DCDCDCD6D6D6D1D1D1CECECECCCCCCC8C8C8C4C4C4BFBFBFBBBBBBBABABA -B9B9B9B9B9B9B8B8B8B5B5B5B1B1B1AFAFAFAEAEAEADADADADADADADADADADADADADADADADADAD -ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD -ADADADADADADADADADADADADAEAEAEAFAFAFB1B1B1B5B5B5B8B8B8B9B9B9B9B9B9BABABABBBBBB -BFBFBFC4C4C4C8C8C8CCCCCCCECECED1D1D1D6D6D6DCDCDCE2E2E2E7E7E7ECECECF1F1F1F5F5F5 -F8F8F8FBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA96A4B42E5E99356CB13872B83973BA3B76BE3D79C23E7BC53E7BC53E7BC53E7BC53E7BC5 -3E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC5 -3E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC5 -3E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC5 -3E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC53E7BC5 -3E7BC53E7BC53E7BC53D78C13A74BB3871B6366EB2346BAD2D5C954C5E74EAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DABAF -2170852C819837859B37859B37859B37859B37869B37869B37869B37869B37869B37869B37869B -37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B -37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B -37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B -37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B -37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B -37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B37869B -37869B37869B37869B37869B37869B37869B37869B37859B37859B37859B37859B37859B37859B -37859B37859B37859B37859B37859B37859B37859B37859B37859B37859B37859B37859B37859B -37859B37859B37859B37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A2D7F951E687B848F91DCDCDCF1F1F1FAFAFAFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFDFDFDFCFCFCFBFBFBF9F9F9F6F6F6F3F3F3EFEFEFEBEBEBE7E7E7E5E5E5E3E3E3DFDFDF -DADADAD5D5D5D1D1D1D0D0D0CFCFCFCFCFCFCCCCCCC8C8C8C3C3C3BFBFBFBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBFBFBFC3C3C3C8C8C8CCCCCC -CFCFCFCFCFCFD0D0D0D1D1D1D5D5D5DADADADFDFDFE3E3E3E5E5E5E7E7E7EBEBEBEFEFEFF3F3F3 -F6F6F6F9F9F9FAFAFAFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B42E5E98356CB03872B73973BA3B76BD3D79C13E7BC4 -3E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC4 -3E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC4 -3E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC4 -3E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC4 -3E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43D78C03A74BA3871B5366EB1346BAC2D5C95 -4C5E74EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FAFAFAF1F1F1DCDCDC9DABAF2367792A65742A65742A65742A65742A65742A65742A65742A6574 -2A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A6574 -2A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A6574 -2A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A6574 -2A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A6574 -2A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A6574 -2A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A6574 -2A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A6574 -2A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A6574 -2A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A6574 -2A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A6574 -2A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A6574 -2A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A6574 -2A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A65742A6574 -2A65742A65742A65742A65742A65742A65742A65742A65742A65742A6574226071848E91DCDCDC -F1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060 -0000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFAFAFAF8F8F8 -F6F6F6F5F5F5F4F4F4F2F2F2EEEEEEEAEAEAE8E8E8E7E7E7E7E7E7E6E6E6E3E3E3DFDFDFD9D9D9 -D5D5D5D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2 -D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D3D3D3D3D3D3 -D5D5D5D9D9D9DFDFDFE3E3E3E6E6E6E7E7E7E7E7E7E8E8E8EAEAEAEEEEEEF2F2F2F4F4F4F5F5F5 -F6F6F6F8F8F8FAFAFAFCFCFCFCFCFCFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B42E5E98356CB03872B7 -3973BA3B76BD3D79C13E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC4 -3E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC4 -3E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC4 -3E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC4 -3E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43E7BC43D78C03A74BA -3871B5366EB1346BAC2D5C954C5E74EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF2F2F2DDDDDDB2B9BC6D8F986A8C95698B94698B94698B94 -698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94 -698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94 -698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94 -698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94 -698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94 -698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94 -698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94 -698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94 -698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94 -698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94 -698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94 -698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94 -698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94 -698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94698B94 -6A8C9570929B9EABAFDDDDDDF2F2F2FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBF9F9F9F8F8F8F6F6F6F6F6F6F6F6F6 -F6F6F6F4F4F4F1F1F1EDEDEDEBEBEBE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 -E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 -E9E9E9E9E9E9E9E9E9E9E9E9EBEBEBEDEDEDF1F1F1F4F4F4F6F6F6F6F6F6F6F6F6F6F6F6F8F8F8 -F9F9F9FBFBFBFCFCFCFCFCFCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -96A4B42D5E98346CB03772B73873BA3A76BD3C79C13D7BC43D7BC43D7BC43D7BC43D7BC43D7BC4 -3D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC4 -3D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC4 -3D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC4 -3D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC4 -3D7BC43D7BC43C78C03974BA3771B5356EB1336BAC2C5C954B5E74EAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF3F3F3E0E0E0CBCBCBBDBDBD -B5B5B5B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B5B5B5BDBDBDCBCBCBE1E1E1F3F3F3FBFBFBFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFE -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFCFCFCFBFBFBF9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7 -F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7 -F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F9F9F9FBFBFBFCFCFCFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA96A4B42D5E98346CB03772B73873BA3A76BD3C79C13D7BC43D7BC4 -3D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC4 -3D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC4 -3D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC4 -3D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43D7BC4 -3D7BC43D7BC43D7BC43D7BC43D7BC43D7BC43C78C03974BA3771B5356EB1336BAC2C5C954B5E74 -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -F6F6F6E7E7E7D7D7D7CCCCCCC6C6C6C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C6C6C6CDCDCDD7D7D7E8E8E8F6F6F6 -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060000000 -0000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFE -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B32D5E98346CAF3772B63873B9 -3A76BC3C79C03D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC3 -3D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC3 -3D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC3 -3D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC3 -3D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33C78BF3974B93771B4 -356EB0336BAC2C5C944B5E74EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF9F9F9F0F0F0E6E6E6E0E0E0DDDDDDDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB -DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDDDDDD -E1E1E1E7E7E7F1F1F1F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B3 -2D5E98346CAF3772B63873B93A76BC3C79C03D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC3 -3D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC3 -3D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC3 -3D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC3 -3D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC3 -3D7BC33C78BE3974B93771B4356EB0336BAB2C5C944B5E74EAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFAFAFAF6F6F6F3F3F3F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F3F3F3F6F6F6FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA96A4B32D5E98346CAF3771B63873B83A76BC3C78C03D7BC33D7BC33D7BC3 -3D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BCE -A5EAFFE1C0CE3D7BC33D7BC33D7BC33D7BC33D7BC362C0F5FFEAE1627BC33D7BC33D7BC33D7BC3 -3D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC3 -3D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC33D7BC3 -3D7BC33D7BC33D7BC33D7BC33D7BC33C78BE3974B93770B4356EB0336AAB2C5B944B5E74EAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FEFEFEFDFDFDFCFCFCFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060000000000000 -9F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A3B32D5D98346CAF3771B63872B83A75BC -3C78C03D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC3 -3D7AC33D7AC33D7AC33D7ACEA5EAFFE1BFCE3D7AC33D7AC33D7AC33D7AC33D7AC33DA8ECFFFFEC -847AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC3 -3D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC3 -3D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33C77BE3973B93770B4356DB0 -336AAB2C5B944B5E74EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A3B32D5D98 -346CAF3771B63872B83A75BC3C78C03D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC3 -3D7AC33D7AC33D7AC33D7AC33D7AC33D7AD7C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFEAE1627AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC3 -3D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC3 -3D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC33D7AC3 -3C77BE3973B93770B4356DB0336AAB2C5B944B5E74EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA96A3B32D5D97346CAE3771B53872B73A75BB3C78BF3D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D91E1E1FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A591C23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23C77BD3973B83770B3356DAF336AAA2C5B934B5E73EAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9F -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A3B32D5D97346CAE3771B53872B73A75BB3C78BF -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7ACDA5EAFFE1BFCD3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23C77BD3973B83770B3356DAF336AAA -2C5B934B5E73EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A3B32D5D97346BAE -3771B53872B73A75BB3C78BF3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23C77BD -3973B83770B3356DAF336AAA2C5B934B5E73EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA96A3B32D5D97346BAE3771B53872B73A75BB3C78BF3D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23DA8EBFFFFFF -C3A8C23D7AC23D7AC23D7AC23DA8EBFFFFFFC3A8C23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23C77BD3973B83770B3356DAF336AAA2C5B934B5E73EAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A3B32D5D97346BAE3771B53872B73A75BB3C77BF3D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7ACDA5EAFFFFD5D73D7AC23D7AC23D7AC23D7AC23D7AC284D5FFFFD5D73D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23B77BD3973B83770B3356DAF336AAA2C5B93 -4B5E73EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060 -0000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A4B32E5D97346CAF3771B5 -3973B93A75BC3C78BF3D79C13D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AD7C3FFFFC3A8C23D7AC23D7AC23D7AC23D7AC23D7AC2 -3DA8EBFFFFEB847AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC2 -3D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23D7AC23C78BF3A74BA -3871B5366DB03369AB2C5B944B5E74EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -96A3B32E5D97346CAE3770B53972B83A75BB3C77BE3D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79D6C3FFFFC3A8C13D79C1 -3D79C13D79C13D79C13D79C13DA8EBFFFFEB8479C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13D79C13C77BE3A74B93870B5366DB03369AA2C5B934B5D73EAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA96A3B32E5D97346CAE3770B53972B83A75BB3C77BE3D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C184D5FFFFEAE16279C13D79C13D79C13D79C13D79CCA5EAFFFFEAE16279C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D79C13C77BE3A74B93870B4366DB03369AA2C5B934B5D73 -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060000000 -0000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A3B32E5D97346CAE3770B53972B8 -3A75BB3C77BE3D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D91E1E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -C3A8C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13C77BE3A74B93870B4 -366DB03369AA2C5B934B5D73EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A3B3 -2E5D97346CAE3770B53972B83A75BB3C77BE3D79C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79CCA5EAFFFFFFFF -FFFFFFFFFFFFFFFFEB8479C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13C77BE3A74B93870B4366DB03369AA2C5B934B5D73EAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA96A3B32E5D97346CAE3770B53972B83A75BB3C77BE3D79C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C13D79C1 -3D79C13D79C13D79C13D79C13D79C13C77BE3A74B93870B4366DB03369AA2C5B934B5D73EAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060000000000000 -9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A3B32D5D96346BAD366FB43872B73A74BA -3B76BE3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C90D58390C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C77BE3973B93770B4356CAF -3368A92C5A934B5D73EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A3B32D5C96 -336BAD366FB43871B73973BA3B76BD3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78D5C3FFFFFFFFFFFFFFFFFFEAE0 -6178C03C78CAA4EAFFE1BECA3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3B76BD3973B8376FB3356CAF3268A92C5A934B5D73EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA96A3B32D5C96336BAD366FB43871B73973BA3B76BD3C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C083D4FF -FFEAE06178C03CA8EAFFEAE06178C03C78C061BEF5FFEAE06178C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03B76BD3973B8376FB3356CAF3268A92C5A934B5D73EAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9F -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A3B32D5C96336BAD366FB43871B73973BA3B76BD -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78D5C3FFFFC3A8C03C78C03CA8EAFFEAE06178C03C78C03CA8EAFFFFEA8378C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03B76BD3973B8376FB3356CAF3268A9 -2C5A934B5D73EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A3B32D5C96336BAD -366FB43871B73973BA3B76BD3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78D5C3FFF5A490C03C78C03CA8EAFFEAE06178C0 -3C78C03CA8EAFFFFEA8378C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03B76BD -3973B8376FB3356CAF3268A92C5A934B5D73EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFCFCFCFCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA96A3B32D5C96336BAD366FB43871B73973BA3B76BD3C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78CAA4EAFFFFD4D5 -3C78C03CA8EAFFEAE06178C03C78C083D4FFFFEAE06178C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C03C78C0 -3C78C03C78C03C78C03B76BD3973B8376FB3356CAF3268A92C5A934B5D73EAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFAFAFADDE6E8 -82D2E881D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E7 -81D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E7 -81D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E7 -81D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E7 -81D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E7 -81D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E7 -81D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E7 -81D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E7 -81D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E7 -81D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E7 -81D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E7 -81D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E7 -81D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E7 -81D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E781D1E7 -81D1E781D1E781D1E781D1E781D1E781D1E781D1E7C2D1D5FAFAFAFDFDFDFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A3B32D5C95336AAC366EB33870B63973B93B75BC3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C90E0E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3A7BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3B75BC3972B7376EB2356BAE3267A82C5992 -4B5D73EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF9F9F9F2F2F2B9CCD12F9BB863F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF -63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF -63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF -63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF -63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF -63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF -63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF -63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF -63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF -63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF -63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF -63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF -63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF -63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF -63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF63F0FF39A8C19BA8ACF2F2F2 -F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F484848A7A7A7 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060 -0000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A3B32D5B95336AAC366EB3 -3870B63972B93B75BC3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77D5C3FFFFFFFFFFFFFFFFFFFFFFFFFFF4 -A490BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3B75BC3972B7 -376EB2356BAE3267A82C59924B5D73EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF7F7F7E9E9E9AEC1C62C92AF3DB4D289FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF89FFFF -53C4D82887A2929FA3E9E9E9F7F7F7FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7C7C7 -383838000000000000101010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -96A3B32D5B95336AAC366EB33870B63972B93B75BC3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3B75BC3972B7376EB2356BAE3267A82C59924B5D73EAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF3F3F3E1E1E1A5B8BD2C92AF -33ABCC3FBCDB7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF -7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF -7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF -7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF -7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF -7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF -7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF -7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF -7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF -7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF -7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF -7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF -7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF -7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF7CFFFF -7CFFFF7CFFFF7CFFFF50CBE031A4C42887A28B989CE1E1E1F3F3F3FBFBFBFEFEFEFFFFFFFFFFFF -FFFFFFE7E7E7585858000000000000000000000000505050FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA96A3B32D5B95336AAC366EB33870B63972B93B75BC3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3B75BC3972B7376EB2356BAD3267A82C59924B5D73 -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFA -F2F2F2DDDDDDA0B3B82C92AF33ABCC36B3D63FBEDE6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF -6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF -6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF -6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF -6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF -6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF -6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF -6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF -6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF -6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF -6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF -6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF -6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF -6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF -6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF6BF1FF4BCAE334ACCE31A4C42887A2879498DDDDDDF2F2F2 -FAFAFAFEFEFEFFFFFFF7F7F7878787101010000000000000000000101010878787F7F7F7FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060000000 -0000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A3B32D5B95336AAC366EB33870B6 -3972B93B75BC3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3CA7EAFFFFFFC3A7BF3C77CAA4E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFEA8377BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3B75BC3972B7376EB2 -356BAD3267A82C59924B5C73EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB2B72C92AE33ABCC36B3D538B6D83EBEE05ADEFE -5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE -5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE -5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE -5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE -5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE -5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE -5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE -5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE -5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE -5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE -5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE -5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE -5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE -5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE5ADEFE46C6E636B1D334ACCD31A4C3 -2887A1869397DCDCDCF1F1F1FAFAFAFEFEFEB7B7B7202020000000000000000000000000585858 -E7E7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A3B3 -2D5B95336AAC366EB33870B63972B93B75BC3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3CA7EAFFFFFFC3A7BF3C77D5C3FFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4D53C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF3C77BF -3C77BF3B75BC3972B7376EB2356BAD3267A82C59914B5C73EAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB2B72C92AE33ABCB -36B3D538B6D839B9DB3FC0E448CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF -48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF -48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF -48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF -48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF -48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF -48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF -48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF -48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF -48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF -48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF -48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF -48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF -48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF48CCEF41C2E5 -38B6D836B1D234ACCD31A4C32887A1869397DCDCDCF1F1F1D3D3D3484848000000000000000000 -0000000000004848487F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F -7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F -7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F3030300000000000009F9F9FFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA96A3B32D5B94336AAB366EB23870B53972B83B75BB3C77BE3C77BE3C77BE -3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE -3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE61BEF4FFFFEA8377BE -3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE -3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE -3C77BE3C77BE3C77BE3C77BE3C77BE3B75BB3972B6376EB1356BAC3267A72C59914B5C72EAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1 -DCDCDC9FB2B72C92AE33ABCB36B3D538B6D839B9DC3BBCDF3CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23BBBDE38B6D836B1D234ACCD31A4C32887A1869397CECECE717171000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -9F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEF0F5E7F0F4E7F0F4E7EFF4E6EEF3E5E0E9CEE1EACEE1EBCFE2EBCFE1EACE -E0E9CEEEF2E5EDF2E5EEF2E5FDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A3B32D5B94336AAB366EB23870B53972B8 -3B75BB3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE -3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE -3C77BE3CA7EAFFFFEA8377BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE -3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE -3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3C77BE3B75BB3972B6376EB1356BAC -3267A72C59914B5C72EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB2B72C92AD33AACA36B2D438B5D739B9DB3BBCDE3CBEE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13BBBDD39B6D736B1D134ACCC31A3C22887A0 -869397CECECE717171080808000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000C7C7C7FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEEEF3E6E2EBCFD6E4B9CCE0A3D1E7A6 -C8E391BDDD7BC0E17DB6DC68AAD653AFDB56B3E058B7E55BB9E75CBAE85DBBE95EBDEB5FBEEC60 -BFED61C1EE62C1EF62BFED61BDEB5FBBE95DB8E65CB6E45AB4E159B1DE57AFDB56BBE36CB9E06A -B7DE69B4DA68B2D867BCDD7BC5E090BED78DD7E6B9E2ECCFE0E9CFFDFDFDFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A2B32D5B94 -3369AB366DB2386FB53971B83B74BB3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE -3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE -3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE -3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE -3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE -3B74BB3970B6376DB1356AAC3266A72C58914B5C72EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B72D91AD34AACA37B2D3 -39B5D73AB8DA3CBBDE3DBEE03DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13CBADC39B5D7 -37B0D135ABCB32A3C22986A0869397DCDCDCF1F1F1DBDBDB484848000000000000000000000000 -0000003838387F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F -7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F -7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FB7B7B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFEFEFEFEFEFEFDFDFDF0F5E7D6E4B9CCE0A4D2E7A7BBDB7BB4D969AED956B6E35C -BFEC61C6F367CDF86DD3FB74D8FD79DBFD7CDEFE7FE1FF83E5FF86E8FF89EAFF8CEDFF8FEEFF90 -EFFF91F0FF92F0FF92F1FF93F2FF93F2FF94F2FF95F1FF93F0FF92EFFF91EDFF8FECFF8DEAFF8B -E8FF8AE7FF88E5FF86E3FF84E1FF82E0FE81DEFE7FDBFD7BD5FB75CFF96FC8F469C2EF64BAE85E -B3E059BBE16CB3D868BADA7AC3DD8FCBDFA3E3ECD0FDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA96A2B32D5B943369AB366DB2386FB53971B83B74BB3C76BE3C76BE3C76BE3C76BE -3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE -3C8FDFE1FFFFFFFFFFFFFFFFFFFFFFFFE9DF6176BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE -3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE -3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE3C76BE -3C76BE3C76BE3C76BE3C76BE3B74BB3970B6376DB1356AAC3266A72C58914B5C72EAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC -9FB1B62D91AC34AAC937B2D339B5D63AB8DA3CBBDD3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03CBADC39B5D637B0D035ABCB32A3C129869F869396DCDCDCF1F1F1FAFAFAFEFEFE -B7B7B7282828000000000000000000000000484848DFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFEFEFEFDFDFDE1EAD0CBDEA3C5E090A7D152B7E35CC5F266CDF86ED3FA74 -DAFD7BE0FE81E6FF87EBFF8DF1FF93F4FF97F7FF9AFAFF9CFBFF9EFBFF9EFBFF9EFBFF9EFAFF9D -F9FF9DF8FF9CF7FF9BF7FF9AF6FF9AF6FF99F5FF99F5FF98F4FF98F4FF98F4FF97F4FF98F5FF98 -F5FF99F6FF99F7FF9AF7FF9AF8FF9BF8FF9BF9FF9CF9FF9CF9FF9CF9FF9CF9FF9DFAFF9CF9FF9B -F8FF9AF5FF97F1FF93EDFF8FE8FF89E2FE83DCFE7ED7FC78D1FA72CBF66CBFED62B1DD57B2D767 -C1DA8ED5E3B8DFE8CFFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A2B22D5B943369AA366DB1386FB43971B73B74BA -3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD -3C76BD3C76BD3C76BD3CA6E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A48FBD3C76BD -3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD -3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD -3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3B74BA3970B5376DB1356AAC3266A7 -2C58904B5C72EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFAFAFAF1F1F1DCDCDC9FB1B62D91AC34A9C937B1D239B4D53AB7D93CBADC3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3CB9DB39B4D537AFD035ABCA32A2C029869F869396 -DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFF8F8F8F101010000000000000000000080808787878 -EFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDC4D6A0B7D579ADD856BCE95FC8F56AD3FB75DEFE80 -E9FF8CF2FF95F6FF99F8FF9BF9FF9CF9FF9CF8FF9BF6FF99F4FF97F2FF95F0FF94EEFF91ECFF90 -EAFF8FE9FF8EE8FF8DE7FF8CE6FF8BE5FF8AE5FF89E4FF89E4FF88E3FF88E3FF87E2FF87E2FF87 -E1FF86E1FF86E2FF86E2FF87E3FF87E4FF88E4FF88E5FF89E5FF89E6FF8AE6FF8BE7FF8BE8FF8C -E8FF8CE9FF8DEAFF8EECFF90EEFF92EFFF93F1FF94F2FF96F4FF97F5FF98F5FF99F6FF99F5FF97 -F3FF96ECFF8FE2FE85D7FC78CCF76DC0EE63B4E05AB5DB68B5D478E1EACEFDFDFDFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA96A2B22D5B933369AA -366DB1386FB43971B73B74BA3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD -3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76C8A4E9FFFFE9DF6176BD3C76BD3C76BD3C76BD -3C76C8A4E9FFFFD4D43C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD -3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD -3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3B74BA -3970B5376DB0356AAB3266A62C58904B5C72EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B62C90AB33A8C836B0D138B3D4 -39B6D83BB9DB3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3BB8DA38B3D436AECF -34A9C931A1BF28859E869396DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFEFEFEF707070 -000000000000000000000000404040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEEDF1E5CBDFA3A1CA4FBAE85ECEF871E0FF83 -E9FF8DF0FF94F5FF98F6FF9AF3FF98F0FF94EDFF92EBFF90E9FF8EE7FF8CE5FF8AE3FF88E1FF86 -DFFF84DDFF82DAFF80D9FF7ED7FF7DD6FE7CD5FE7BD4FE7AD3FD79D2FC78D1FC77D0FC77D0FC77 -D0FB76CFFB76CFFB76CEFB75CEFA75CEFA74CEFA75CFFB75D0FB76D0FC76D1FC77D1FC78D2FD78 -D3FD79D3FD79D4FE7AD4FE7AD5FE7BD5FE7BD7FF7DD9FF7FDBFF81DDFF83DFFF84E0FF86E2FF87 -E3FF88E5FF8AE6FF8BE8FF8DEAFF8FEDFF92EFFF94EFFF94EEFF92E8FF8CE0FE84D6FC7AC9F66D -B3DF59AACE62C2D39FFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA96A2B22C5B933369AA366DB1376FB43971B73B74BA3C76BD3C76BD3C76BD3C76BD3C76BD -3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76D4C3FFFFC3A6BD -3C76BD3C76BD3C76BD3C76BD3C76BD3CA6E9FFFFE98376BD3C76BD3C76BD3C76BD3C76BD3C76BD -3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD -3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD3C76BD -3C76BD3C76BD3C76BD3B74BA3970B5366DB0346AAB3266A62B58904B5C72EAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B6 -2C8FAA33A7C736AFD038B2D339B5D63BB8DA3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3BB7D938B2D336ADCD34A8C831A0BE28849D869396DCDCDCF1F1F1FAFAFAFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFCFCFCF404040000000000000101010FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEDDE5CDA9CD62BDEB61 -D0F974E2FF85EEFF92F1FF95EEFF92EBFF90E8FF8DE5FF8AE2FF87DEFF84DBFF81D9FF7FD7FF7D -D5FE7BD3FD79D1FC77CFFB75CDF973CAF771C8F56FC6F36DC5F16CC4F06BC3EF6AC2EE69C1ED68 -C0EC67BFEB66BEEA65BDEA65BDEA65BDE964BCE964BCE864BBE863BBE863BCE863BDE964BDE964 -BEEA65BEEB66BFEB66C0EC67C0ED67C1ED68C2EE69C2EE69C3EF6AC3F06AC5F16CC7F46EC9F670 -CBF772CDF973CFFB75D1FC77D2FD78D4FD7AD5FE7BD7FE7CD9FF7FDDFF82E0FF85E2FF88E4FF89 -E6FF8BE8FF8DE9FF8EE8FF8CD8FD7DC3F068B1DC59A4C75FE8EBE2FEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B22C5B933269AA356DB1376FB43871B73A74BA3B76BD -3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD -3B76BD3B76D4C3FFFFC3A6BD3B76BD3B76BD3B76BD3B76BD3B76BD3BA6E9FFFFE98276BD3B76BD -3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD -3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD -3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3A74BA3870B5366DB0346AAB3166A62B5890 -4B5C72EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FAFAFAF1F1F1DCDCDC9FB1B62C8FAA33A6C636AECF38B1D339B4D63BB8DA3CBADD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBADD3BB7D838B2D336ADCD34A8C831A0BE28849D869396DCDCDC -F1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF606060B7B7B7 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FBFBFBA0BA6CB6E15ED7FC7BE7FF8BE8FF8DE7FF8CE1FF87DDFF83DAFF81D8FF7ED5FD7BD1FB78 -CDF974C9F570C7F36EC5F16CC3EF6BC1EC69BFEA66BDE864BAE662B8E360B6E15EB4DF5CB3DE5B -B1DD5AB0DB59AFDA58AED957ADD856ACD755ACD755ACD654ABD654ABD654ABD654ABD553ABD553 -AAD553ABD553ABD654ACD654ACD755ACD755ADD856AED856AED957AFD957AFDA58B0DB58B0DB59 -B1DC59B3DE5BB5E05DB7E25FB9E461BBE663BDE865BFEA67C1EC68C3EE6AC4F06BC6F16DC8F46F -CCF873D0FB76D3FD7AD5FE7CD7FF7ED9FF7FDBFF81E0FF86E4FF89DDFE83CDF7739FC64C768C49 -FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B22C5B933269AA356DB1 -376FB43871B73A74BA3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD -3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD82D4FFFFE9DF6076BD3B76BD3B76BD3B76BD3B76C8 -A4E9FFFFE9DF6076BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD -3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD -3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3B76BD3A74BA3870B5 -366DB0346AAB3166A62B58904B5C72EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B62C8EA933A5C535ADCE37B0D239B3D5 -3AB6D83CB9DB3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DB3AB5D738B1D236ACCC34A7C7 -319FBD28839C869396DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFBFBFBE3E6DD7B9A3A9AC14BBBE364D8FE7DDDFF83D8FF7ED1FB78CDF874 -CAF571C7F26FC3EE6BBFEA67BBE664B8E260B5E05EB3DD5CB1DB5AAFD958ADD756ABD554AAD453 -A9D352A8D151A7D150A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D150A8D151A8D251A9D352AAD453ACD655ADD756AFD958 -B1DB5AB3DD5CB4DF5DB8E260BBE664BFEA67C3EE6BC6F16EC8F370CAF572CDF874D2FC79D8FF7E -D4F77CB0D75C8AAE41586E2AF6F6F6FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -95A2B22C5B933269A9356DB0376FB33871B63A74B93B76BC3B76BC3B76BC3B76BC3B76BC3B76BC -3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B8FDEE1FFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3A6BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC -3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC -3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC -3B76BC3B76BC3A74B93870B4366DAF346AAA3166A52B588F4B5C72EAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B62B8DA8 -32A4C435ACCD37AFD038B2D43AB5D73BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3AB4D637AFD035ABCB33A6C5309EBC27829B869296DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF8F8F8DEE1D87A993A92B7449CC449A7CF52 -BFEA67C8F370C2EC6ABCE664B9E362B5DF5EB1DB5AADD757AAD454A8D252A7D151A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D050A7D151A9D252ABD454AED857B2DC5BB6E05FB9E362 -BBE564BEE967C4EF6CBAE464A1C94F95BB4687A93F586E2AEFEFEFF8F8F8FEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA95A2B22C5B933269A9356DB0376FB33871B63A74B93B76BC3B76BC -3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC -3B76BC3B76BC3B76D3C3FFFFFFFFFFFFFFFFFFFFFFFFFFF4A48FBC3B76BC3B76BC3B76BC3B76BC -3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC -3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC -3B76BC3B76BC3B76BC3B76BC3B76BC3B76BC3A74B93870B4366DAF346AAA3166A52B588F4B5C72 -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFA -F1F1F1DCDCDC9FB0B52B8CA732A4C335ACCC37AFCF38B2D33AB5D63BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93AB4D537AFCF35AACA33A5C4309DBB27829A869296DCDCDCF1F1F1 -FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF5F5F5D8DAD2 -79983991B6439CC3499FC74BA2CB4DAFD858B1DB5AABD555A9D152A7CF50A6CE4FA6CE4FA6CE4F -A6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4F -A6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4F -A6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4F -A6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4F -A6CE4FA6CF50A7D051A9D253ABD455AFD858ADD6579EC54A9AC14894BA4586A83E576D2AE9E9E9 -F5F5F5FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B22C5A933268A9356CB0376EB3 -3870B63A73B93B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC -3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC -3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC -3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC -3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3A73B9386FB4366CAF -3469AA3165A52B588F4B5C72EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB0B52B8BA632A3C235ABCB37AECE38B1D13AB4D5 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83AB3D437AECE35A9C933A5C3309CBA -278199869296DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF3F3F3D4D6CE79973990B5439BC2489EC64BA1C94DA3CB4EA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA4CC4FA0C84C9DC44A99BF48 -93B94585A73E576C2AE4E4E4F3F3F3FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B2 -2C5A933268A9356CB0376EB33870B63A73B93B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC -3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC -3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC -3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC -3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC -3B75BC3A73B9386FB4366CAF3469AA3165A52B578F4B5C72EAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9EB0B52A8AA531A2C1 -34A9C936ACCD37AFD039B2D33AB5D63AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D639B1D2 -36ADCD34A8C732A3C22F9BB8278098869295DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFEFEFEFEFEFE -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1D2D4CC78973890B4429AC1489EC54AA0C84C -A2CA4DA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A3CC4EA0C74C9CC34998BF4793B84485A73D576C29E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA95A2B22C5A923268A9356CAF376EB23870B53A73B83B75BB3B75BC3B75BC -3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75C8 -A4E9FFE1BDC83B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC -3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC -3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC3B75BC -3B75BC3B75BC3B75BC3B75BC3B75BC3A73B9386FB3366CAE3469AA3165A52B578F4B5C72EAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFDFDFDFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1 -DCDCDC9EB0B52A8AA431A1BF34A9C836ACCB37AFCF39B2D23AB4D53AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D539B1D136ACCC34A7C632A2C12F9AB7277F98869295DCDCDCF1F1F1FAFAFA -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFC -9C9C9C0808084E4E4ECBCBCBFCFCFCFEFEFEFEFEFEFFFFFFFFFFFFFCFCFCF1F1F1D1D3CB779538 -8EB24298BF479CC4499EC74BA0C94CA2CA4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4E -A2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4E -A2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4E -A2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4E -A2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4EA2CB4E -A2CB4EA2CB4EA2CB4EA2CB4EA1CA4D9EC64B9AC14996BD4691B64383A53D556B29E1E1E1F1F1F1 -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B22C5A923268A8356CAF376EB23870B5 -3A73B83B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB -3B75BB3B75BB3B75BB3B75D2C3FFFFC3A6BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB -3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB -3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB -3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3A73B8386FB3366CAE3469A9 -3165A42B578E4B5C71EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDEBEBEB2F2F2F080808757575EBEBEBFDFDFDFEFEFE -FFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9EB0B52A89A331A1BE34A8C736ABCA37AECE39B1D13AB3D4 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D55FDBF8FFFFF182B4D53AB4D582E7FFFFFFF182B4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D55FDBF8FFFFF182B4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB4D5 -3AB4D53AB4D53AB4D53AB4D53AB4D53AB4D53AB3D439B0D036ABCB34A7C532A2C02F9AB6277F97 -869295DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFDFDFDF8F8F82D2D2D000000000000000000646464E2E2E2FCFCFCFEFEFEFFFFFF -FCFCFCF1F1F1D0D3CB7695378DB24197BF469BC3499EC64AA0C84CA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA0C94D9DC54A9AC14896BC4690B643 -83A53C556B29E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B22C5A92 -3268A8356CAF376EB23870B53A73B83B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB -3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB82D3FFFFFFE98275BB3B75BB3B75BB -3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB -3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB -3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB -3A73B8386FB3366CAE3469A93165A42B578E4B5C71EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBBEBEBE000000000000 -000000171717929292FBFBFBFDFDFDFDFDFDFAFAFAF1F1F1DCDCDC9EB0B42A89A230A0BD33A7C6 -35AAC937ADCD38B0D039B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339C0E9E1FFFFFFFFFFFFFFFFFFFFFFFFFFF181B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D35FDAF7FFFFF181B2D339B2D381E6FFFFFFF1 -81B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D35FDAF7FFFFFFFFFFFFFFFFFFFFE6E1 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -5FDAF7FFFFF181B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D338AFCF36AAC9 -34A6C431A1BF2E99B5277E96869295DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1959595000000000000000000000000 -0F0F0F828282F2F2F2FDFDFDFBFBFBF1F1F1D0D3CB7594378CB14196BD469AC2489DC54A9EC74B -A0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94D -A0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94D -A0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94D -A0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94D -A0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94DA0C94D9FC84C -9CC44A98BF4895BB468FB44281A33C546A28E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA95A2B22C5A923268A8356CAF376EB23870B53A73B83B75BB3B75BB3B75BB3B75BB -3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB -82D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9DE6075BB3B75BB3B75BB3B75BB3B75BB -3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB -3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB -3B75BB3B75BB3B75BB3B75BB3A73B8386FB3366CAE3469A93165A42B578E4B5C71EAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F7F7F7EBEBEB4D4D4D0000000000000000000000002D2D2DBABABAFAFAFAF8F8F8F0F0F0DCDCDC -9EB0B42987A1309EBC33A6C535A9C836ACCB38AFCF39B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D15FD9F7FFFFFFC2CCD139B1D139B1D139B1D181E6FF -FFFFFFC2CCD139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D15FD9F7FFFFF0 -81B1D139B1D139B1D139B1D139B1D139B1D139BFE8E1FFFFC2CCD139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D181E6FFFFFFF7 -A3BFD139B1D139B1D181E6FFC2CCD139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D15FD9F7FFFFF081B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D138AECE35A9C833A4C331A0BE2E98B4267D94869295DCDCDCF1F1F1FAFAFAFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF9F9F9EDEDEDDCDCDC -A6A6A63131310000000000000000000000001E1E1EAAAAAAF8F8F8EFEFEFCFD2CA7492378BAF40 -95BC4598C0489BC3499DC54B9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C -9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C -9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C -9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C -9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C -9EC74C9EC74C9EC74C9EC64B9AC24997BE4793BA458EB34280A23B546928E1E1E1F1F1F1FCFCFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B22C5A923268A8356CAF376EB23870B53A73B8 -3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB -3B75BB3B75BB3B75D2C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE98275BB -3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB -3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB -3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3B75BB3A73B8386FB3366CAE3469A93165A4 -2B578E4B5C71EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFCFCFCF4F4F4E6E6E6D3D3D3888888181818000000000000000000000000 -545454DDDDDDEEEEEEDBDBDB9EB0B42987A0309EBB33A5C334A8C736ABCA38AECD39B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039CCF0FFFFFFC2CCD039B1D0 -39B1D039B1D039B1D039B1D081E6FFFFFFF081B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D05FD9F7FFFFF081B1D039B1D039B1D039B1D039B1D039B1D039BFE8E1FFFFC2CCD0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1E0C2FFFFFFE6E039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D05FD9F7FFFFF081B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D037ADCC35A9C733A4C231A0BC2E97B3267D94869295 -DBDBDBF0F0F0F9F9F9FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD385C89385C89FDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFC -FBFBFBF7F7F7EDEDEDDCDCDCCACACABEBEBE8080801818180000000000000000000000003C3C3C -BFBFBFCED1C974903689AD4094BA4598BE479AC1499CC44A9EC64C9EC64C9EC64C9EC64C9EC64C -9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C -9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C -9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C -9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C -9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9EC64C9DC54B9AC14996BD4793B8458DB24180A13B -536828E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B22C5A913268A7 -356CAE376EB13870B43A73B73B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B9 -3B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B9 -3B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B9 -3B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B9 -3B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93A73B7 -386FB2366CAC3469A73164A22B568C4A5B70E7E7E7F5F5F5FAFAFAFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFAFAFAF4F4F4E6E6E6D4D4D4C4C4C4B4B4B4 -626262060606000000000000000000070707747474D1D1D19DAEB329859E2F9DBA32A4C234A7C6 -35AAC937ADCC38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF -80E5FFFFFFEF80B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38CBEFFFFFFFC2CBCF38B0CF38B0CF -80E5FFFFFFEF80B0CF38B0CF38B0CF38B0E0C2FFFFE1D8D738B0CF38B0CF38B0CF5ED8F7FFFFFF -FFFFFFFFFFFFFFE5E038B0CF38B0CF38B0CF5ED8F7FFFFEF80B0CF38B0CF5ED8F7FFFFEF80B0CF -80E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E7A2E5FFFFFFEF80B0CF38B0CF38B0CF38B0CF38CBEF -FFFFF7A2BDCF38B0CF38B0CF38B0CF38B0E0C2FFFFFFE5E038B0CF38B0CF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38BDE7E1FFFFFFFFFFFFFFFFFFFFFFC2CBCF38B0CF38B0CF38B0CF5ED8F7 -FFFFEF80B0CF80E5FFFFFFEF80B0CF38B0CF38B0CF38B0CF38CBEFFFFFFFC2CBCF38B0CF38B0CF -38BDE7E1FFFFFFFFFFFFFFFFFFF2E75EB0CF38B0CF38B0CF5ED8F7FFF2E75EBDE7E1FFFFFFFFFF -C2CBCF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF36ACCB34A8C532A3C0 -309EBB2D96B2257C93859194C5C5C5B2B2B2B8B8B8BABABABBBBBBBBBBBBBBBBBBBBBBBBBBBBBB -BBBBBB9393937C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C -7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B -7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B -7B7B7B5555553E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E -3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3C3C3C3B3B3B3838383434343030302E2E2E272727000000 -00000000000000000000000000000052535066803088AC3F92B84496BD4699C0489BC24A9CC44B -9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B -9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B -9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B -9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B -9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9CC34A99C048 -95BB4691B7448CB1417FA03A536727E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA95A2B12C5A913268A7356CAE376EB13870B43A73B73B75B93B75B93B75B93B75B93B75B9 -3B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B9 -3B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B9 -3B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B9 -3B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B93B75B9 -3B75B93B75B93B75B93A73B7386FB1356BAB193352000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000131313646F72 -27839C2F9BB831A3C133A6C435A9C836ACCB38AECD38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38AFCE38AFDEC2FFFFFFE5DE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFDE -C2FFFFFFE5DE38AFCE38AFCE80E5FFFFFFEF80AFCE38AFCE38AFCE38AFDEC2FFFFE1D8D638AFCE -38AFCE80E5FFE1D8D638AFCE38AFCE38CAEFFFFFFFE1D8D638AFCE38AFCE5ED8F7FFFFEF80AFCE -38AFCE5ED8F7FFFFEF80AFCE38AFCE38BDE7E1FFFFC2CACE38AFCE38AFCE38CAEFFFFFFFC2CACE -38AFCE38AFCE38AFCE80E5FFFFF2E75EAFCE38AFCE38AFCE38AFCE38AFCE80E5FFFFFFFFFFE5DE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38CAEFFFFFFFE1D8D638AFCE38AFCE38CAEFFFFFFF -E1D8D638AFCE38AFCE5ED8F7FFFFEF80AFCE38CAEFFFFFFFC2CACE38AFCE38AFCE38AFCE80E5FF -FFFFEF80AFCE38AFCE38CAEFFFFFFFE1D8D638AFCE38AFD6A2F2FFFFFFEF80AFCE38AFCE5ED8F7 -FFFFFFFFFFEF80AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AECD36ABCA34A6C432A2BF309DBA2D95B1257B91849093848484000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000708035F772B90B642 -94BB4597BF479AC1499BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A -9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A -9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A -9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A -9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A -9BC34A9BC34A9AC24A97BE4794BA4590B5438BAF407D9E3A516627E1E1E1F1F1F1FCFCFCFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B12B59913267A7346BAE366DB1376FB43972B73A74B9 -3A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B9 -5FBCF3FFFFFFFFFFFFFFFFFFE1BCC53A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B9 -3A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B9 -3A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B9 -3A74B93A74B93A74B93A74B93A74B93A74B93A74B93972B7376DB13468A818314F000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000B242A2C94AF31A1BF32A5C334A8C636ABCA37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC36ADDDC1FFFFFFE4DD37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC36ADDDC1FFFFFFE4DD37ADCC37ADCC80E4FFFFFFEE80ADCC37ADCC37ADCC -36ADDDC1FFFFE1D7D537ADCC37ADCC37ADCC37ADCC37ADCC37ADCC36ADD5A2F2FFFFE4DD37ADCC -37ADCC5DD7F7FFFFEE80ADCC37ADCC5DD7F7FFFFEE80ADCC37ADCC36BBE6E1FFFFC1C9CC37ADCC -37ADCC36ADD5A2F2FFFFE4DD37ADCC37ADCC36ADDDC1FFFFE1D7D537ADCC37ADCC37ADCC37ADCC -37ADCC36ADD5A2F2FFFFFFFFFFFFFFFFE4DD37ADCC37ADCC37ADCC36ADD5A2F2FFFFE4DD37ADCC -37ADCC37ADCC37ADCC80E4FFFFF2E65DADCC37ADCC5DD7F7FFFFEE80ADCC36ADD5A2F2FFFFE4DD -37ADCC37ADCC36ADDDC1FFFFE1D7D537ADCC36ADD5A2F2FFFFE4DD37ADCC37ADCC37ADCC36BBE6 -E1FFFFC1C9CC37ADCC5DD7F7FFFFFFC1C9CC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC37ADCC37ADCC35AAC833A5C331A1BE2F9CB92C93AF247A8F808C8F7F7F7F -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -1B1C1B485C2280A13B8EB24293B94597BD4799BF499AC14A9BC24A9BC24A9BC24A9BC24A9BC24A -9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A -9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A -9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A -9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A -9BC24A9BC24A9BC24A9BC24A9BC24A9BC24A9AC04996BC4793B8458FB4438AAE407D9D39516627 -E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B12B59913167A7346BAE -366DB1376FB43972B73A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B9 -3A74B93A74B93A74B95FBCF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3D03A74B93A74B93A74B9 -3A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B9 -3A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B9 -3A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93972B6366CAF -3266A4172E4B000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000373E3F226E822C95B0309FBD32A3C134A7C5 -36AAC937ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB36ACDCC1FFFF -FFE4DC37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB36ACDCC1FFFFFFE4DC37ACCB37ACCB80E4FF -FFFFEE80ACCB37ACCB37ACCB36ACDCC1FFFFE1D6D437ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -36ACD4A2F2FFFFF2E65DACCB37ACCB5DD6F7FFFFEE80ACCB37ACCB5DD6F7FFFFEE80ACCB37ACCB -36BAE6E1FFFFC1C8CB37ACCB37ACCB37ACCB5DD6F7FFFFF7A2BACB37ACCB36C8EEFFFFF7A2BACB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB36ACD4A2F2FFFFFFFFFFFFF7A2BACB37ACCB -36BAE6E1FFFFE1D6D437ACCB37ACCB37ACCB37ACCB5DD6F7FFFFF7A2BACB37ACCB5DD6F7FFFFEE -80ACCB37ACCB5DD6F7FFFFEE80ACCB37ACCB36BAE6E1FFF7A2BACB37ACCB36ACDCC1FFFFE1D6D4 -37ACCB37ACCB37ACCB36ACDCC1FFFFE1D6D437ACCB5DD6F7FFFFEE80ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB35A9C733A4C2319FBD2F9BB8 -2C92AE23788E7E8A8C8C8C8C323232313131313131303030303030303030303030303030303030 -4F4F4F606060606060606060606060606060606060606060606060606060606060606060606060 -6060606060606060606060605F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F -5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F152233152233 -7C7C7C8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E -8D8D8D8D8D8D8D8D8D8D8D8D8C8C8C8C8C8C8B8B8B8B8B8B888888838383353535000000000000 -0000000000000505055D5D5D9FA19B617A2D7D9C398BAF4092B74395BB4697BE4899C04999C049 -99C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C049 -99C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C049 -99C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C049 -99C04999C04999CAA9EEFFFFDED54999C04999C04999C04999C04999C04999C04999C04999C049 -99C04999C04999C04999C04999C04999C04999C04999C04999C04999C04998BF4895BB4692B744 -8EB24289AC3F7B9C39516526E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -95A2B12B59913167A7346BAD366DB0376FB33972B63A74B93A74B93A74B93A74B93A74B93A74B9 -3A74B93A74B93A74B93A74B93A74B93A74B93A74C5A3E9FFFFD3D03A74B93A74B93A74B93AA5E8 -FFFFF3A38DB93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B9 -3A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B9 -3A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B93A74B9 -3A74B93A74B93972B5366BAD3164A12C5B9226508220426B374454ADADADB7B7B7BBBBBBBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBBBBBBBBBBBBBBBBBB -BABABAB7B7B7B3B3B38C8C8C2A2A2A00000000000000000000000025252587878782909323758B -2B91AC2F9DBA32A2C033A5C435A8C736ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABDCC1FFFFFFE4DC36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABDCC1FFFF -E1D6D336ABCA36ABCA80E4FFFFFFED80ABCA36ABCA36ABCA36ABDCC1FFFFE1D6D336ABCA36ABCA -36ABCA80E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E55DABCA36ABCA5DD6F7FFFFED80ABCA36ABCA -5DD6F7FFFFED80ABCA36ABCA36B9E5E1FFFFC1C8CA36ABCA36ABCA36ABCA36B9E5E1FFFFE1D6D3 -36ABCA80E4FFFFF2E55DABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36B9E5E1FFFFFFF2E55DABCA36B9E5E1FFFFC1C8CA36ABCA36ABCA36ABCA36ABCA36C8EDFFFFF7 -A2B9CA36ABCA5DD6F7FFFFED80ABCA36ABCA36B9E5E1FFFFC1C8CA36ABCA5DD6F7FFF2E55DABCA -36ABCA36B9E5E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1D6D336ABCA5DD6F7FFFFED -80ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -34A7C632A3C1309EBC2E9AB72B91AD23778C7D888BC1C1C1C3C3C3BEBEBEBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE -BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE -BEBEBEBEBEBE2A45672A4567BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE -BEBEBEBEBEBEBFBFBFC0C0C0C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C0C0C0BDBDBD8B8B8B -2222220000000000000000000000003A3A3A9E9E9EB2B2B2A7A9A3617A2D7D9D398BAF4091B643 -94BA4696BC4898BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998CAA9EEFFFFDED54998BF4998BF4998BF4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4997BE4894BA4690B6448DB14288AB3F7B9B39506426E1E1E1F1F1F1FCFCFCFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA95A2B12B59903167A6346BAD366DB0376FB23972B63A74B83A74B8 -3A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74D0C2FFFFC2A5B8 -3A74B83A74B83A74B83A74D0C2FFFFC2A5B83A74B83A74B83A74B83A74B83A74B83A74B83A74B8 -3A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B8 -3A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B8 -3A74B83A74B83A74B83A74B83A74B83A74B83972B5366CAE3265A22D5B9327528521446D384656 -B1B1B1BCBCBCBFBFBFC1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C0C0C0BEBEBEAFAFAF4F4F4F0000000000000000000000000F0F0F6E6E6E -ABABABA9A9A984929623768C2B91AC2F9DBA31A1BE33A4C335A7C636AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936AAD3A2F2FFFFF2E55DAAC936AAC936AAC936AAC9 -36AAC936AAC936C8EDFFFFFFC1C8C936AAC936AAC980E3FFFFFFED80AAC936AAC936AAC936AADB -C1FFFFE1D5D336AAC936AAD3A2F2FFFFFFED80AAC936AAC936AAD3A2F2FFFFF2E55DAAC936AAC9 -5DD5F6FFFFED80AAC936AAC95DD5F6FFFFED80AAC936AAC936B9E5E1FFFFC1C8C936AAC936AAC9 -36AAC936AAD3A2F2FFFFF2E55DAADBC1FFFFE1D5D336AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC980E3FFFFFFED80AAC936B9E5E1FFFFE1D5D336AAC936AAC9 -36AAC936AAC95DD5F6FFFFF6A2B9C936AAC95DD5F6FFFFED80AAC936AAC936AAD3A2F2FFE1D5D3 -36AAD3A2F2FFE1D5D336AAC936AAC936AADBC1FFFFE1D5D336AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC95DD5F6FFFFED80AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC934A6C532A2BF309DBA2E99B52B90AB23768D7F8A8DC7C7C7CDCDCD -CCCCCCCBCBCBCACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACA -CACACACACACACACACACACACACACACACACACACACACACACACACACACACBCBCBCCCCCCCDCDCDCFCFCF -D0D0D0D0D0D0D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1 -D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D12E4C712E4C71D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1 -D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D2D2D2D4D4D4D5D5D5D6D6D6D7D7D7D7D7D7D6D6D6 -D5D5D5C4C4C44646460000000000000000000000001A1A1A808080B3B3B3BDBDBDC3C3C3B3B5AF -65802F7F9F3A8BB04090B64393B94595BC4797BE4897BE4897BE4897BE4897BE4897BE4897BE48 -97BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE48 -97BE4897BE4897BE4897BE4897C9A9EEFFFFFFFFFFFFFFFFFFFFFFDDD44897BE4897BE4897BE48 -BBEAFFFFFFC7BBBE4897BE4897BE4897BE8ADDFFFFEEDF6A97BE48BBEAFFFFFFFFFFFFFFFFFFFF -FFFFFFFFF4A9A9BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE48 -97BE4897BE4897BE4897BE4897BE4896BD4893B94590B5438CB04187AB3E7A9A384F6426E1E1E1 -F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B12B59903167A6346BAD366DB0 -376FB23972B63A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B8 -3A74B83A74D0C2FFFFC2A5B83A74B83A74B83A74B83A74D0C2FFFFC2A5B83A74B83A74B83A74B8 -3A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B8 -3A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B8 -3A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83972B5366DAF3367A5 -2F609A2A588F244A793E4E5FC5C5C5D1D1D1D5D5D5D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D3D3D38080800C0C0C000000000000000000 -050505505050A9A9A9B5B5B5BBBBBBB8B8B88D9C9F2579902C93AF309DBA31A1BE33A4C135A7C5 -36A9C736AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC85DD5F6FFFFFF -C1C8C836AAC836AAC836AAC836AAC836AAD2A2F2FFFFF2E45DAAC836AAC836AAC85DD5F6FFFFED -80AAC836AAC836AAC836B9E4E1FFFFE1D5D236AAC836B9E4E1FFFFE1D5D236AAC836AAC836AAD2 -A2F2FFFFF2E45DAAC836AAC85DD5F6FFFFED80AAC836AAC85DD5F6FFFFED80AAC836AAC836B9E4 -E1FFFFC1C8C836AAC836AAC836AAC836AAC85DD5F6FFFFF6A2D5EDFFFFF6A2B9C836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC880E3FFFFFFED80AAC836AAD2 -A2F2FFFFE3DB36AAC836AAC836AAC836AAC880E3FFFFF2E45DAAC836AAC85DD5F6FFFFED80AAC8 -36AAC836AAC85DD5F6FFF2E45DB9E4E1FFF6A2B9C836AAC836AAC836AAD2A2F2FFFFE3DB36AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC85DD5F6FFFFED80AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836A9C834A6C432A1BE309DB92E99B42B91AC -24778D828E91D1D1D1DDDDDDE1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 -E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 -E3E3E3E3E3E3E5E5E5E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 -E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E733547D33547DE7E7E7 -E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E9E9E9EAEAEAECECEC -ECECECEDEDEDECECECEBEBEBE7E7E74D4D4D0000000000000000000B0B0B626262B2B2B2BBBBBB -C8C8C8D3D3D3D7D7D7C2C4BD69853180A23B8BB0408FB54392B84494BA4695BC4796BD4896BD48 -96BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD48 -96BD4896BD4896BD4896BD4896BD4896BD4896BD4896D4C7FFFFFFEEDF6A96BD4896BD4896D4C7 -FFFFFFEEDF6A96BD4896BD48BAE9FFFFFFC7BABD4896BD4896BD4896BD8ADDFFFFEEDF6A96BD48 -96BD4896C8A9EEFFFFDDD44896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD48 -96BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4896BD4895BB4791B7458EB3438BAF40 -85A93D7999374E6325E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B1 -2B59903167A6346BAD366DB0376FB23972B63A74B83A74B83A74B83A74B83A74B83A74B83A74B8 -3A74B83A74B83A74B83A74B83A74B83A74D0C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFE9DC5F74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B8 -3A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B8 -3A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B8 -3A74B83972B6376DB03469A93164A12D5F99275183455669D9D9D9E6E6E6EBEBEBEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDECECECECECECE9E9E9BFBFBF000000 -0000000000000000003737379A9A9AB7B7B7C1C1C1CBCBCBD1D1D1C9C9C996A5AA257D942D95B1 -2F9CB931A0BD32A3C034A6C435A8C636A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C7 -36A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C7 -36A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C7 -36A9C736A9C736A9D0A2F1FFFFFFFFC1C7C736A9C736A9C736A9D0A2F1FFFFFFF6A2B9C736A9C7 -36A9C736A9C736B9E3E1FFFFE1D5D036A9C736B9E3E1FFFFFFFFFFE1D5D036A9C736A9DAC1FFFF -FFE3DA36A9C736A9C780E3FFFFFFFFFFF1E35DA9C736A9C75DD5F6FFFFED80A9C736A9C75DD5F6 -FFFFED80A9C736A9C736A9DAC1FFFFFFE3DA36A9C736A9C736A9C736A9C736A9DAC1FFFFFFFFFF -FFF1E35DA9C736A9C736A9C736A9C736A9C736A9C736C7EDFFFFED80A9C736A9C736A9C736C7ED -FFFFFFE1D5D036A9C736A9C75DD5F6FFFFFFC1C7C736A9C736A9C75DD5F6FFFFFFC1C7C736A9C7 -36A9C75DD5F6FFFFED80A9C736A9C736A9C736B9E3E1FFF6C1E3F6FFF1E35DA9C736A9C736A9C7 -36A9C736C7EDFFFFFFC1C7C736A9C736A9C736A9DAC1FFF6A2B9C736A9C75DD5F6FFFFED80A9C7 -36A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C7 -36A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C7 -36A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A9C736A8C634A5C3 -32A0BD309CB82E98B32B90AB23778C849093D8D8D8E9E9E9F0F0F0F4F4F4F4F4F4F4F4F4F4F4F4 -F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4 -F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5F5F5F5F5F5F5F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7 -F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7 -F7F7F7365A86365A86F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7 -F7F7F7F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F6F6F6EEEEEE4D4D4D000000000000454545 -A5A5A5BBBBBBC5C5C5D2D2D2DFDFDFE7E7E7E6E6E6CBCDC56C873181A33B8BAF408EB34291B644 -93B84595BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB47 -95BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB69CCF4FFFFE98A -95BB4795BB4795BB4795BB47B9E9FFFFF4A8A8BB4795BB47B9E9FFFFFFC6B9BB4795BB4795BB47 -95BB8ADDFFFFEEDE6995BB4795BB4795C7A8EEFFFFDDD24795BB4795BB4795BB4795BB4795BB47 -95BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB4795BB47 -94BA4691B6448DB2428AAE4085A83D7898374E6225E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA95A2B12B59903167A6346BAD366DB0376FB23972B63A74B83A74B83A74B8 -3A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74D0C2FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE78274B83A74B83A74B83A74B8 -3A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B8 -3A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B83A74B8 -3A74B83A74B83A74B83A74B83A74B83972B6376EB0356BAB3267A52F629F295589485A6EE4E4E4 -F2F2F2F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F7F7F7F2F2F2D1D1D10707070000001D1D1D838383B7B7B7C0C0C0CCCCCCD8D8D8E1E1E1E2E2E2 -D4D4D49CABB0267E962C94B02F9CB9309FBC32A2BF34A5C235A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535C5ECFFFFFFFFFFFFFFFFFFFFFFFF -FFE2E2A1F1FFFFFFEC80A7C535A7C535A7C535A7C55CD4F6FFFFFFFFFFFFFFFFEC80A7CFA1F1FF -E1D4CF35A7C535A7C535B6E2E1FFFFFFFFFFFFFFFFFFE2D980E2FFFFF1E25CA7C535A7C55CD4F6 -FFFFEC80A7C535A7C55CD4F6FFFFEC80A7C535A7C535A7C535C5ECFFFFFFFFFFFFFFF1E25CA7C5 -35A7C535A7C580E2FFFFFFFFC1C5C535A7C535A7C535A7C535A7C535A7C535A7C535A7C55CD4F6 -FFFFFFFFFFFFFFFFFFFFFFFFC1C5C535A7C535A7C535A7C535A7C535C5ECFFFFFFFFFFFFFFFFFF -FFFFF6A1B6C535A7C535A7C535A7C55CD4F6FFFFEC80A7C535A7C535A7C535A7CFA1F1FFFFFFFF -E1D4CF35A7C535A7C535A7C535A7C535A7C535B6E2E1FFFFFFFFFFFFFFFFFFFFF6A1B6C535A7C5 -35A7C55CD4F6FFFFEC80A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C533A4C1319FBC2F9BB72D96B22A8FA923768C849093DBDBDBEFEFEFF8F8F8 -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDF8F8F8EDEDED -D5D5D5848484A1A1A1BDBDBDC3C3C3CFCFCFDBDBDBE7E7E7F0F0F0F4F4F4EDEDEDCED0C86B8632 -81A23B8AAE3F8DB2428FB44392B74593B94694B94794B94794B94794B94794B94794B94794B947 -94B94794B94794B94794B94794B94794B94794B94794B94794B94794B94794B94794B94794B947 -94B94794C5A8EEFFFFEEDC6994B94794B94794B94794B947A7DCE3FFFFE3CBC54794B947B9E8FF -FFFFC6B9B94794B94794B94794B98ADCFFFFEEDC6994B94794B94794C5A8EEFFFFDCD04794B947 -94B94794B94794B94794B94794B94794B94794B94794B94794B94794B94794B94794B94794B947 -94B94794B94794B94794B94793B8468FB4448CB04288AC3F83A63C7796364D6125E1E1E1F1F1F1 -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B12B598F3167A5346BAC366DAF376FB1 -3972B53A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B7 -3A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B7 -3A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B7 -3A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B7 -3A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73972B5376EB0356BAB3368A5 -3064A02A578B4A5C70E9E9E9F7F7F7FCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFDFDFDFBFBFBF4F4F4E5E5E5B8B8B8929292BDBDBDC0C0C0C9C9C9D6D6D6 -E2E2E2ECECECEFEFEFECECECD9D9D99DADB1267F962C95B02F9CB8309EBB32A1BE34A4C135A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7CFA1F1FFFFFFF5A1B6C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C480E2FFFFFFEC80A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C433A3C0319FBB2F9AB62D96B12A8EA823768B -859193DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEF9F9F9EFEFEFDFDFDFCFCFCFCACACACECECED8D8D8E4E4E4EEEEEEF5F5F5FAFAFA -FAFAFAF0F0F0D0D2CA6A86317FA13A88AC3F8CB0418EB34390B54492B74692B74692B74692B746 -92B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B746 -92B74692B74692B74692B74692B74692C3A8EDFFFFDCCF4692B74692B74692B74692B74692CFC6 -FFFFE2CAC34692B746B8E7FFFFFFC6B8B74692B74692B74692B789DCFFFFEDDB6992B74692B746 -92C3A8EDFFFFDCCF4692B74692B74692B74692B74692B74692B74692B74692B74692B74692B746 -92B74692B74692B74692B74692B74692B74692B74692B74691B7458EB3438BAF4187AB3F82A53C -7595364D6025E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B12B598F -3167A5346BAC366DAF376FB13972B53A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B7 -3A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B7 -3A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B7 -3A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B7 -3A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B73A74B7 -3972B5376EAF356BAB3368A63064A12A578C4A5C70EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF6F6F6E8E8E8D7D7D7CCCCCC -CCCCCCD4D4D4DFDFDFEAEAEAF2F2F2F7F7F7F7F7F7F0F0F0DBDBDB9EAEB2267E952C94AE2F9AB6 -309DBA32A0BD33A3C035A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335C4ECFFFFF5 -A1B5C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6D7C1FFFFFFE2D735A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C333A2BF319DBA -2F99B52D95B02A8DA723758A859093DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF4F4F4E9E9E9E0E0E0DEDEDEE3E3E3ECECEC -F4F4F4F9F9F9FCFCFCFEFEFEFCFCFCF1F1F1CFD2CA6A86317FA13A87AC3E8BB0418DB2428FB544 -91B74592B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B746 -92B74692B74692B74692B74692B74692B74692B74692B74692B74692C3A8EDFFFFEDDB6992B746 -92B74692B74692B746A6DBE2FFFFE2CAC34692B746B8E7FFFFFFC6B8B74692B74692B74692B789 -DCFFFFEDDB6992B74692B74692C3A8EDFFFFDCCF4692B74692B74692B74692B74692B74692B746 -92B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B74691B645 -8DB2438AAE4186AA3E82A43C7594364C6024E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA95A2B12A598F3166A5336AAC356CAF376EB13871B53973B73973B73973B73973B7 -3973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B7 -3973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B7 -3973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B7 -3973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B7 -3973B73973B73973B73973B73871B5366EAF346AAB3267A63063A129568C4A5C70EAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F9F9F9F0F0F0E6E6E6E0E0E0E2E2E2E9E9E9F0F0F0F7F7F7FBFBFBFCFCFCF9F9F9F1F1F1DCDCDC -9EAEB2257D942B92AD2E99B52F9CB8319FBC33A2BF34A4C134A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -5BD3F5FFFFF5A1B4C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C232A1BD309CB92E98B42C94AF2A8CA6227489859093DCDCDCF1F1F1FAFAFAFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFAFAFAF5F5F5 -F0F0F0F0F0F0F4F4F4F8F8F8FBFBFBFDFDFDFEFEFEFFFFFFFCFCFCF1F1F1CFD2CA6985317D9F39 -86AA3E8AAE408CB1428EB34390B54590B54590B54590B54590B54590B54590B54590B54590B545 -90B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B545 -90B568C9F3FFFFE78890B54590B54590B54590B545B6E7FFFFF3A8A3B54590B545A3DBE2FFFFC6 -B6B54590B54590B54590C1A8EDFFFFEDDB6890B54590B54590C1A8EDFFFFDBCF4590B54590B545 -90B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B545 -90B54590B54590B5458FB5448CB14289AD4085A93E80A33B7493354B5F24E1E1E1F1F1F1FCFCFC -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B12A588F3166A5336AAC356CAF366EB13871B5 -3973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B7 -3973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B7 -3973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B7 -3973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B7 -3973B73973B73973B73973B73973B73973B73973B73973B73871B5366DAF346AAB3267A62F63A1 -29568C4A5B70EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF8F8F8F3F3F3F1F1F1F3F3F3F7F7F7FAFAFAFDFDFDFEFEFE -FEFEFEFAFAFAF1F1F1DCDCDC9EAEB2257C932B91AD2E98B52F9BB8319EBB33A1BE34A3C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A3C1329FBD309BB82E97B32C93AE2A8BA5227389859093 -DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFDFDFDFCFCFCFAFAFAFAFAFAFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFCFCFC -F1F1F1CFD2CA6883307C9E3885A83D88AC3F8AAF408CB2428FB4448FB4448FB4448FB4448FB444 -8FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB444 -A2DBE2FFFFFFDBCE448FB4448FB444A2DBE2FFFFFFDBCE448FB4448FB444A2DBE2FFFFFFDBCE44 -8FB4448FB4448FC1A8EDFFFFEDDB678FB4448FC1A8EDFFFFFFFFFFEDDB678FB4448FB4448FB488 -DBFFFFFFE7888FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB4448FB444 -8FB4448FB4448FB4448FB4448FB4448FB4448FB4448EB3438BAF4187AB3F84A73D7FA13A739234 -4B5E23E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B12A588F3166A5 -336AAB356CAE366EB13871B43973B73973B73973B73973B73973B73973B73973B73973B73973B7 -3973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B7 -3973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B7 -3973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B7 -3973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73973B73871B4 -366DAF346AAA3267A62F63A129568C4A5B70EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFBFBFBFBFBFBFCFCFC -FDFDFDFEFEFEFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9EADB2257B932B90AC2E97B42F9AB7 -319DBA339FBD34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0329EBC309AB72E96B2 -2C91AD2A8AA5227288859093DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFCFCF1F1F1CFD2CA6782307C9D3884A73D87AB3F8AAD408CB0428EB244 -8EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB244 -8EB2448EB2448EB2448EB244A2DAE2FFFFFFDBCD448EB2448EB2448EB2448ECDC5FFFFFFFFFFFF -FFFFFFFFFFE2C8C0448EB2448EB2448EB2448EB244A2DAE2FFFFFFFFFFFFFFFFC5B5B267C8F2FF -EDDA678EB2448EB2448EB2448ECDC5FFFFFFFFFFFFFFF2A8A2B2448EB2448EB2448EB2448EB244 -8EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448DB2438AAE41 -87AA3F83A63D7EA03A7291344A5D23E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA95A2B12A588E3166A4336AAB356CAD366EB03871B43973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63871B4366DAE346AAA3267A52F63A029568B4A5B70EAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB2 -257A922B8FAB2D96B32F99B6309BB9329EBC33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF329DBB3099B62E95B12C90AC2989A4227187859093DCDCDCF1F1F1FAFAFAFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1CFD2CA67812F7B9B3883A63C -87A93E89AC408BAE418DB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB143 -8EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB143 -8EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB143 -8EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB143 -8EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB1438EB143 -8EB1438EB1438DB04289AC4086A83E82A43C7E9F39718F334A5D23E1E1E1F1F1F1FCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B12A588E3166A4336AAB356CAD366EB03871B43973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63871B4366DAE346AAA3267A52F63A029568B -4A5B70EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FAFAFAF1F1F1DCDCDC9DADB22479912A8EAA2D95B22E97B5309AB8329DBB339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE319CB92F98B52D94B02B8FAB2988A3217086859093DCDCDC -F1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1 -CFD1CA66802F7A9A3783A43C86A83E88AA3F8AAD418CAF428DAF438DAF438DAF438DAF438DAF43 -8DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43 -8DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43 -8DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43 -8DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43 -8DAF438DAF438DAF438DAF438DAF438DAF438CAF4289AB4085A73E82A33C7D9D39718E334A5C23 -E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B12A588E3066A4336AAB -356CAD366EB03871B43973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63871B4366DAE -346AAA3267A52F63A029568B4A5B70EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB12479902A8EA82D94B02E97B3309AB6 -329DBA339FBC339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBC319BB82F97B42D93AF2B8FAA -2988A1217085859093DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCF1F1F1CFD1CA657F2E79983781A23B85A63D87A93E88AA408AAC428BAD42 -8BAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE42 -8CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE42 -8CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE42 -8CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE42 -8CAE428CAE428CAE428CAE428CAE428CAE428CAE428CAE428BAD428AAC4188AA4087A83F84A53D -80A13B7C9C38708D32495B22E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -95A2B12A588E3066A4336AAB356CAD366EB03871B43973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63871B4366DAE346AAA3267A52F63A029568B4A5B70EAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB124788F -2A8DA72C93AF2E96B23099B5319CB8339EBB339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBB -319AB72F96B22D92AE2B8EA92887A0216F84859093DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1CFD1CA647E2E78973680A13A83A43C -84A43F85A54187A74288A94288AA4289AA4289AB4289AB428AAC428AAC418AAD418AAD418AAD41 -8AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD41 -8AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD41 -8AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD418AAD41 -8AAD418AAD418AAD418AAD418AAD418AAD418AAC418AAC418AAC4289AB4289AB4288AA4288A942 -86A74184A43F81A13D80A03C7FA03A7B9A376F8B32485A22E1E1E1F1F1F1FCFCFCFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA95A2B12A588E3066A4336AAB356CAD366EB03871B43973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B63973B6 -3973B63973B63973B63973B63973B63973B63871B4366DAE346AAA3267A52F63A029568B4A5B70 -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFA -F1F1F1DCDCDC9DADB124778E298BA62C92AE2D95B12F98B4319AB7329CBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA329DBA -329DBA329DBA329DBA329CBA3099B62E95B12C91AC2A8DA828859F216E84859093DCDCDCF1F1F1 -FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1CFD1CA -637D2D7695357D9D3B7F9D3F819F4083A24285A44386A54386A64387A74387A84388A84388A942 -88A94288AA4289AA4189AA4189AB4189AB4189AB4189AC4189AC4089AC4089AC4089AC4089AC40 -89AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC40 -89AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC40 -89AC4089AC4089AC4089AC4089AB4189AB4189AB4189AB4188AA4188AA4188A94187A94187A842 -87A74286A74285A64284A44283A34181A03F7E9C3D7B993B7896397795376D8931485A22E1E1E1 -F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A2B12A588E3065A43369AA346BAD -366DB03870B33972B53972B53972B53972B53972B53972B53972B53972B53972B53972B53972B5 -3972B53972B53972B53972B53972B53972B53972B53972B53972B53972B53972B53972B53972B5 -3972B53972B53972B53972B53972B53972B53972B53972B53972B53972B53972B53972B53972B5 -3972B53972B53972B53972B53972B53972B53972B53972B53972B53972B53972B53972B53972B5 -3972B53972B53972B53972B53972B53972B53972B53972B53972B53972B53870B3366CAE3469A9 -3266A42F62A029558A4A5B70EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB124778D298BA52C92AD2D94B02F97B3319AB6 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB83099B52E95B02C91AB2A8DA728859E -216E83859092DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFCFCFCF1F1F1D0D2CB5C732C637C2F748F3C7C98417E9B42809E4382A04483A14483A244 -84A34484A34485A44485A54385A54386A64386A64286A64286A74286A74286A74287A74287A841 -87A84187A84187A94187A94187A94187A94187A94187A94187A94087AA4087AA4087AA4087AA40 -88AA4088AA4088AA4088AA4088AA4088AA4088AA4088AA4088AA4087AA4087AA4087AA4087AA40 -87A94087A94187A94187A94187A94187A84187A84186A84186A74186A74186A64286A64285A542 -85A54285A44284A44284A34284A34283A24382A042819F427F9D417D9B407B983E78953C75913A -6A84345A702A606C49E1E1E1F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1B1 -2A578D3065A33369AA346BAC366DAF386FB23971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53870B3366CAD3469A93266A42F629F29558A4A5B70EAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB123768C298AA4 -2B91AC2D93AF2E96B23099B5319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB72F98B3 -2D94AF2B90AA298CA527859D206D82859092DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF3F3F3E4E4E4B5BBA75E752F5B702F687F37748E3E -7D99447F9B45809C45819D45819E45829F4582A04483A14483A14483A24483A24483A24384A243 -84A34384A34384A34384A44384A44285A44285A54285A54285A54285A54285A54285A54185A541 -85A54185A54185A54185A54185A64185A64185A64185A64185A64185A64185A64185A64185A641 -85A64185A64185A54185A54185A54185A54284A54284A54284A44284A44284A34283A34283A342 -83A24283A24283A14282A14282A04282A042819F43819F43809E437F9D427E9B427D9A417C9841 -7A964076913D6D8738617831526629576737ABAFA3E4E4E4F3F3F3FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA95A1B12A578D3065A33369AA346BAC366DAF386FB23971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53870B3366CAD3469A83266A42F629F29558A4A5B70EAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1 -DCDCDC9DACB023758B2889A32B8FAA2C92AD2E95B12F98B4319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB62F96B22D92AE2B8EA9298AA427839C206C81858F92DCDCDCF1F1F1FAFAFA -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7505050000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -888B838E9A74607631596C30667B386E853C748D407A94437D9845809B45809C45819D45819D45 -819E45819E45829E45829F45829F44829F44829F4482A04482A04483A04483A14383A14383A143 -83A14383A14383A14383A14383A14283A14283A14283A14283A14283A14283A24283A24283A242 -83A24283A14283A14283A14283A14283A14283A14283A14282A14382A14382A04382A04282A042 -829F42819F43819F43819E43819E43809D43809D43809C437F9C437F9B437F9B437E9A437D9943 -7C97427A9441768F3F70893C6980385D713051642A5A6A387E876CB2B4ADD0D0D0E9E9E9F5F5F5 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1B12A578D3065A33369AA346BAC366DAF -386FB23971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53870B3366CAD3469A83266A4 -2F629F29558A4A5B70EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DACB022748A2788A22A8FA92B91AC2D94AF2E97B23099B4 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B53099B5 -3099B53099B53099B53099B53099B53099B53099B42E96B12C92AD2A8EA8298AA326839B1F6C80 -858F92DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF787878000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000999999BBBBBBADB0A5909D747383505D7231596D315C7033637837 -6B813B718A3F7891427C96447D98457E99457F9A467F9B457F9B457F9B45809B45809C45809C45 -809C45809D44809D44809D44809D44809D44809D44809D44809D43809D43809D43809D43809D43 -809D43809D43809D43809D43809D43809D43809D43809D43809D43809D43809D43809D43809C43 -809C437F9C437F9B437F9B437F9B437F9B437E9A437E9A437E99437D99437D98437C98437C9743 -7A9543789241758E406F873C677D385F7433586B2F53652C52652B5D6D3A838D6EB4B4B4BBBBBB -CCCCCCDBDBDBEFEFEFF8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1B12A578D -3065A33369AA346BAC366DAF386FB23971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3870B3366CAD3469A83265A42F629F29558A4A5B70EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DACB02274892788A12A8EA8 -2B91AB2D93AE3096B03297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13096B02C91AB -2A8DA72989A226829A1F6B7F858F92DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000A4A4A4CBCBCBC2C2C2B9B9B9B3B3B3 -A9ADA19EA5908A97717485515F7532596D31596C325F7435637837677D396B813B6E853D718A3F -758D417790427993437B95447D97457D98457E99457E99457E99457E99457E99457E99457E9944 -7E99447E99447E99447E99447E99447E99447E9A447E9A447E99447E99447E99447E99447E9944 -7E99447E99447E99447D99447D98447C98447C97447C97437B96437A9442789141758F40728B3F -6F883D6B833B677E396379375F74345B6F3257692F54662D5E6E3C69774B818B6C999E8EAFAFAF -B3B3B3B9B9B9C2C2C2CBCBCBDBDBDBE7E7E7F6F6F6FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA95A1B12A578D3065A33369AA346BAC366DAF386FB23971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B53971B5 -3971B53971B53971B53971B53870B2366CAD3469A83265A42F629F29558A4A5B70EAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC -9DACB02173882786A0298DA72B90AA3092AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3092AB2A8CA62888A12581991F6A7E848F92DCDCDCF1F1F1FAFAFAFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9F -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF5F5F5EEEEEE -E2E2E2DADADACFCFCFC7C7C7C0C0C0BBBBBBB7B7B7B3B3B3B0B0B0A6A9A0949E81808E62748552 -6F7F505F74335B6F31596C31596C32596C325C6F34607436637838677D3A697F3B6A813C6B823C -6C833D6D853E6E863E6F873E70883F71893F728A40738B40748C41748D41758E41758E41748D41 -738C40738C40738B40728A3F728A3F71893F6F873E6D843D6B823C697F3A677D39657A38637837 -5F73355B6F32586B3156682F55682F576A2F60713E63743F75815C828C6E87926F9CA290B0B0B0 -B3B3B3B7B7B7BBBBBBC0C0C0C7C7C7CFCFCFDADADAE2E2E2EDEDEDF4F4F4FBFBFBFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1B029568D3064A23268A9346AAB356CAE376EB1 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B4376FB2356BAC3368A83165A32E619E -2854894A5B6FEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFAFAFAF1F1F1DCDCDC9DACB021728727859E298CA6308FA83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A8318EA62887A02580981F6A7D848F92 -DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFBFBFBF8F8F8F2F2F2EDEDEDE5E5E5DEDEDED7D7D7D1D1D1CBCBCBC6C6C6C1C1C1 -BFBFBFBCBCBCB9B9B9B5B5B5B2B2B2B1B1B1AAADA2A8ABA19EA491939C808894707E8B61728251 -6E7D4F6677416576415C70315B6F315A6E31596C31586C31586B31586B31576A31576A31586A31 -586B31586A31586A31576A31576A30576930566930566930566930566930576A30586B2F586C2F -61733F63743F64763F6D7C4E78845E838E6E8893709CA18F9FA692B1B1B1B1B1B1B2B2B2B5B5B5 -B9B9B9BCBCBCBFBFBFC1C1C1C6C6C6CBCBCBD1D1D1D7D7D7DEDEDEE5E5E5EDEDEDF2F2F2F8F8F8 -FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1B029568D3064A2 -3268A9336AAB356CAE376EB13870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4376FB1 -356BAC3368A73164A32E619E2854894A5B6FEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DACAF21718627849D308BA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -318AA1257F971F697C848F92DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFAFAFAF8F8F8F3F3F3EFEFEFEAEAEA -E5E5E5E0E0E0DBDBDBD6D6D6D3D3D3D0D0D0CBCBCBC6C6C6C2C2C2C0C0C0BFBFBFBEBEBEBBBBBB -B6B6B6B4B4B4B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B1B1B1B0B0B0A7ABA0A5A89EA4A79D -A2A69CA2A59C9BA18E9AA08D99A08D929B7F999F8D999F8D9AA08D9AA08D9AA08D9BA28E9DA38F -A6A9A0A9ACA2B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B4B4B4B7B7B7BBBBBBBEBEBE -BFBFBFC0C0C0C2C2C2C6C6C6CBCBCBCFCFCFD3D3D3D6D6D6DBDBDBE0E0E0E5E5E5EAEAEAEFEFEF -F3F3F3F8F8F8FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA95A1B029568D3064A23268A9336AAB356CAE376EB13870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B4376FB1356BAC3368A73164A32E619E2854894A5B6FEAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DABAF -2170852C819737859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A37859A -37859A37859A37859A37859A37859A2D7E941E687B848F91DCDCDCF1F1F1FAFAFAFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FDFDFDFBFBFBFAFAFAF7F7F7F6F6F6F2F2F2EFEFEFECECECE9E9E9E7E7E7E3E3E3DDDDDDDADADA -D8D8D8D7D7D7D4D4D4D0D0D0CBCBCBC7C7C7C5C5C5C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C3C3C3 -C0C0C0BCBCBCB8B8B8B6B6B6B5B5B5B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4 -B4B4B4B5B5B5B6B6B6B8B8B8BCBCBCC0C0C0C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5 -C7C7C7CBCBCBD0D0D0D4D4D4D7D7D7D8D8D8DADADADDDDDDE3E3E3E7E7E7E9E9E9ECECECEFEFEF -F2F2F2F6F6F6F7F7F7FAFAFAFBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1B029568D3064A23268A9336AAB356CAE376EB13870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B4376FB1356BAC3368A73164A32E619E285489 -4A5B6FEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FAFAFAF1F1F1DCDCDC9DABAF2366792A63732A63732A63732A63732A63732A63732A63732A6373 -2A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A6373 -2A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A6373 -2A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A6373 -2A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A6373 -2A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A6373 -2A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A6373 -2A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A6373 -2A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A6373 -2A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A6373 -2A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A6373 -2A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A6373 -2A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A6373 -2A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A63732A6373 -2A63732A63732A63732A63732A63732A63732A63732A63732A63732A6373226070848E91DCDCDC -F1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060 -0000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFBFBFBFAFAFAF8F8F8F7F7F7 -F6F6F6F4F4F4F0F0F0EEEEEEEDEDEDECECECEAEAEAE7E7E7E2E2E2DEDEDEDDDDDDDCDCDCDCDCDC -DCDCDCDCDCDCDCDCDCDBDBDBD8D8D8D2D2D2CECECECACACAC9C9C9C8C8C8C8C8C8C8C8C8C8C8C8 -C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C9C9C9CACACACECECED3D3D3D8D8D8DBDBDBDCDCDCDCDCDC -DCDCDCDCDCDCDDDDDDDDDDDDDEDEDEE2E2E2E7E7E7EAEAEAECECECEDEDEDEEEEEEF0F0F0F4F4F4 -F6F6F6F8F8F8F8F8F8FAFAFAFBFBFBFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1B029568D2F64A23268A9 -336AAB356CAE376EB13870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4376FB1356BAC -3368A73164A32E619E2854894A5B6FEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF2F2F2DDDDDDB2B9BC6E919A6A8D966A8D966A8D966A8D96 -6A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D96 -6A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D96 -6A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D96 -6A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D96 -6A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D96 -6A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D96 -6A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D96 -6A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D96 -6A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D96 -6A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D96 -6A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D96 -6A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D96 -6A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D96 -6A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D966A8D96 -6B8E9771949D9EABAFDDDDDDF2F2F2FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFCFCFCFBFBFBFAFAFAF9F9F9F9F9F9F8F8F8F6F6F6F3F3F3 -F2F2F2F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0EFEFEFEDEDEDE8E8E8E5E5E5E2E2E2E1E1E1 -E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E5E5E5E8E8E8 -EDEDEDEFEFEFF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F2F2F2F3F3F3F6F6F6F8F8F8F9F9F9 -F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -95A1B029568C2F63A23268A8336AAB356CAE376EB13870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B43870B4 -3870B43870B4376EB1356BAC3367A73064A32E619E2854894A5B6FEAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF3F3F3E1E1E1CBCBCBBDBDBD -B6B6B6B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B6B6B6BDBDBDCBCBCBE1E1E1F3F3F3FBFBFBFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFDFDFDFDFDFDFCFCFCFBFBFBFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF9F9F9 -F7F7F7F5F5F5F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3 -F3F3F3F3F3F3F5F5F5F7F7F7F9F9F9FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFBFBFB -FCFCFCFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA95A1B029558C2F63A13267A83369AA356BAD376DB0386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3376EB0356AAB3366A63063A22E609D2853884A5A6F -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -F7F7F7E9E9E9D9D9D9CECECEC9C9C9C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C9C9C9CECECED9D9D9E9E9E9F7F7F7 -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060000000 -0000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1B029558C2F63A13267A83369AA -356BAD376DB0386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3376EB0356AAB3366A6 -3063A22E609D2853884A5A6FEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF9F9F9F2F2F2E9E9E9E3E3E3DFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -E3E3E3E9E9E9F2F2F2F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1B0 -29558C2F63A13267A83369AA356BAD376DB0386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3376EB0356AAB3366A63063A22E609D2853884A5A6FEAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFAFAFAF6F6F6F4F4F4F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F4F4F4F6F6F6FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA95A1B029558C2F63A13267A83369AA356BAD376DB0386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3376EB0356AAB3366A63063A22E609D2853884A5A6FEAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FEFEFEFDFDFDFCFCFCFCFCFCFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFCFCFCFCFCFCFDFDFDFEFEFEFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060000000000000 -9F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1B029558C2F63A13267A83369AA356BAD -376DB0386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3376EB0356AAB3366A63063A2 -2E609D2853884A5A6FEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1B029558B -2F63A13267A73369AA356BAC376DB0386FB2386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3386FB3 -376EB0356AAA3366A63063A12E609D2853884A5A6FEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA95A1B029558B2F63A03267A73369A9356BAC376DAF386FB2386FB2386FB2386FB2 -386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2 -386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2 -386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2 -386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2 -386FB2386FB2386FB2386FB2376EAF356AAA3366A53063A12E609C2853874A5A6EEAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9F -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1B029558B2F62A03266A73369A9356BAC376DAF -386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2 -386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2 -386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2 -386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2 -386FB2386FB2386FB2386FB2386FB2386FB2386FB2386FB2376DAF3569AA3366A53063A12E609C -2853874A5A6EEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1B029558B2F62A0 -3266A73368A9356AAC376CAF386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2 -386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2 -386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2 -386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2 -386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2376DAF -3569AA3265A53062A12E5F9C2852874A5A6EEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA95A1B029558B2F62A03266A63368A9356AAC376CAF386EB2386EB2386EB2386EB2386EB2 -386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2 -386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2 -386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2 -386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2386EB2 -386EB2386EB2386EB2376CAF3569AA3265A53062A12E5F9C2852874A5A6EEAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1B029558A2F629F3266A53368A8356AAB376CAE386EB1 -386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1 -386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1 -386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1 -386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1 -386EB1386EB1386EB1386EB1386EB1386EB1386EB1376CAE3569A93265A43062A02E5F9B285287 -4A5A6EEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060 -0000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1B029558A2F629F3266A5 -3368A8356AAB376CAE386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1 -386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1 -386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1 -386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1 -386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1386EB1376CAE3569A9 -3265A43062A02E5F9B2852874A5A6EEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -95A1B029558A2F629F3166A53368A8346AAB366CAE376EB1376EB1376EB1376EB1376EB1376EB1 -376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1 -376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1 -376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1 -376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1 -376EB1376EB1366CAE3469A93265A43062A02E5F9B285287495A6EEAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA95A1B028558A2E629F3166A53268A8346AAB366CAE376EB1376EB1 -376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1 -376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1 -376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1 -376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1 -376EB1376EB1376EB1376EB1376EB1376EB1366CAE3469A93165A42F62A02D5F9B275287495A6E -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060000000 -0000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1B028558A2E629F3166A53268A8 -346AAB366CAE376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1 -376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1 -376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1 -376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1 -376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1376EB1366CAE3469A83165A4 -2F629F2D5F9B275286495A6EEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1AF -2855892E629E3166A43268A7346AAA366CAD376EB0376EB0376EB0376EB0376EB0376EB0376EB0 -376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0 -376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0 -376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0 -376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0 -376EB0366CAD3469A83165A32F629F2D5F9A275286495A6EEAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA95A1AF2855892E619E3165A43268A7346AAA366CAD376EB0376EB0376EB0 -376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0 -376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0 -376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0 -376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0376EB0 -376EB0376EB0376EB0376EB0376EB0366CAD3469A83165A32F629F2D5F9A275286495A6EEAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060000000000000 -9F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1AF2854892E619E3165A43267A73469AA -366BAD376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0 -376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0 -376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0 -376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0 -376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0366BAD3468A83164A32F619F -2D5E9A275186495A6EEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1AF285489 -2E619E3165A43267A73469AA366BAD376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0 -376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0 -376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0 -376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0 -376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0376DB0 -366BAD3468A83164A32F619F2D5E9A275186495A6EEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA95A1AF2854892E619D3165A33267A63469A9366BAC376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF366BAC3467A73164A22F619E2D5E99275185495A6EEAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9F -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1AF2854882E619D3165A33267A63469A9366BAC -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF366BAC3467A73164A22F619E2D5E99 -275185495A6EEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1AF2854882E619D -3165A33267A63469A9366BAC376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF366BAC -3467A73164A22F619E2D5E99275185495A6EEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFCFCFCFCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA95A1AF2854882E619D3165A33267A63469A9366BAC376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF366BAC3467A73164A22F619E2D5E99275185495A6EEAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFAFAFADDE6E8 -6BC9E36BC9E36AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E2 -6AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E2 -6AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E2 -6AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E2 -6AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E2 -6AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E2 -6AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E2 -6AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E2 -6AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E2 -6AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E2 -6AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E2 -6AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E2 -6AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E2 -6AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E26AC8E2 -6AC8E26AC8E26AC8E26AC8E26AC8E26BC9E36BC9E3C2D2D6FAFAFAFDFDFDFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1AF2854882E619D3165A33267A63469A9366BAB376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF376DAF -376DAF376DAF376DAF376DAF376DAF376DAF376DAF366BAC3467A63164A22F619D2D5E99275185 -495A6EEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF9F9F9F2F2F2B9CCD12F9BB865F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF -65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF -65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF -65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF -65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF -65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF -65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF -65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF -65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF -65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF -65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF -65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF -65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF -65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF -65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF65F2FF349DB69BA8ACF2F2F2 -F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060 -0000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A1AF2854872E619C3165A2 -3267A53469A8366BAB376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE -376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE -376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE -376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE -376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE366BAB3467A5 -3164A12F619D2D5E98275184495A6DEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF7F7F7E9E9E9AEC1C62C92AF3DB4D28AFFFF8AFFFF8AFFFF -8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF -8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF -8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF -8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF -8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF -8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF -8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF -8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF -8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF -8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF -8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF -8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF -8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF -8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF8AFFFF -47B9D12887A2929FA3E9E9E9F7F7F7FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -95A1AF2854872E619C3165A23267A53469A8366BAB376DAE376DAE376DAE376DAE376DAE376DAE -376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE -376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE -376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE -376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE376DAE -376DAE376DAE366BAB3467A53164A12F619D2D5E98275184495A6DEAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF3F3F3E1E1E1A5B8BD2C92AF -33ABCC3FBCDB7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF -7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF -7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF -7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF -7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF -7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF -7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF -7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF -7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF -7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF -7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF -7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF -7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF -7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF7BFEFF -7BFEFF7BFEFF7BFEFF50CBE031A4C42887A28B989CE1E1E1F3F3F3FBFBFBFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA95A0AF2853872E609C3164A23266A53468A8366AAB376CAE376CAE -376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE -376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE -376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE -376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE -376CAE376CAE376CAE376CAE376CAE376CAE366AAB3466A53163A12F609C2D5D9827518449596D -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFA -F2F2F2DDDDDDA0B3B82C92AF33ABCC36B3D63FBEDE6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF -6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF -6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF -6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF -6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF -6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF -6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF -6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF -6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF -6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF -6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF -6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF -6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF -6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF -6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF6AF0FF4BCAE334ACCE31A4C42887A2879498DDDDDDF2F2F2 -FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060000000 -0000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A0AF2853872E609C3164A23266A5 -3468A8356AAB376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE -376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE -376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE -376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE -376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE376CAE366AAB3366A53163A1 -2F609C2D5D9827518449596DEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB2B72C92AE33ABCC36B3D538B6D83EBEE059DDFE -59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE -59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE -59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE -59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE -59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE -59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE -59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE -59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE -59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE -59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE -59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE -59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE -59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE -59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE59DDFE46C6E636B1D334ACCD31A4C3 -2887A1869397DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A0AF -2853872E609C3164A13266A43468A7356AAA376CAD376CAD376CAD376CAD376CAD376CAD376CAD -376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD -376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD -376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD -376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD -376CAD366AAA3366A53163A02F609C2D5D9827518349596DEAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB2B72C92AE33ABCB -36B3D538B6D839B9DB3DBFE247CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE -47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE -47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE -47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE -47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE -47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE -47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE -47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE -47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE -47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE -47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE -47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE -47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE -47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE47CBEE40C2E5 -38B6D836B1D234ACCD31A4C32887A1869397DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF0F5E8F1F6E8E3ECD0E4EED1D7E5BAD9E8BB -DAE9BBCBDFA4CCE0A4CCE0A3CDE2A4CEE3A4CFE4A5CFE5A5CEE3A4CCE1A4CBDFA3D9E8BAD8E7BB -D7E6BAD6E4BAE4EED1E3EDD1E3ECD0F1F6E8F1F5E8F0F5E7FEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA95A0AF2853872E609B3164A13266A43468A7356AAA376CAD376CAD376CAD -376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD -376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD -376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD -376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD -376CAD376CAD376CAD376CAD376CAD366AAA3366A43163A02F609B2D5D9727518349596DEAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1 -DCDCDC9FB2B72C92AE33ABCB36B3D438B6D839B9DB3BBCDF3CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE23CBFE2 -3CBFE23CBFE23CBFE23BBBDE38B6D836B1D234ACCD31A4C32887A1869397DCDCDCF1F1F1FAFAFA -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F585858B7B7B7FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF606060000000000000 -9F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFE -FEFEFEFEFEFEF0F5E7E4EDD1D8E6BACFE4A6C5E090BDDE7CB6DD69AFDB56B3E059B8E55CBCE95E -BFED61C3F164C7F467CAF66ACBF76BCDF86CCEF86DCFF96ED0F96FD0FA70D1FA71D2FB72D1FA70 -CFF96FCDF86DCBF76BC9F669C7F467C5F366C3F164C1EF62BFED61BDEB5FBAE85EB8E65CB4E259 -BCE36CB4DA68BBDB7BC4DE8FCDE1A4D7E5B9E4EDD1F0F4E7FEFEFEFEFEFEFEFEFEFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA95A0AF2853872E609B3064A13266A43468A7 -356AAA376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD -376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD -376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD -376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD -376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD376CAD356AAA3366A43163A02F609B -2D5D9727518349596DEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB2B72C92AD33AACA36B2D438B5D739B9DB3BBCDE3CBEE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE1 -3CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13CBFE13BBBDD39B6D736B1D134ACCC31A3C22887A0 -869397DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7C7C7383838000000 -000000101010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFE -F1F6E7CBDEA4D5EBA9BFDF7DA9D353B2DE59BAE75EC2EF64C9F56AD0F970D6FC76DCFE7DE2FF83 -E7FF89EAFF8CEDFF8FF0FF92F2FF94F4FF96F6FF98F7FF9AF8FF9BF8FF9BF8FF9BF9FF9BF9FF9B -F9FF9CF9FF9CF9FF9CF9FF9CF8FF9BF8FF9BF7FF9AF6FF98F5FF98F4FF96F3FF96F2FF94F1FF93 -EFFF92EEFF90EDFF8FEAFF8CE4FF86DEFE80D9FD79D3FB73CDF86EC7F368C0EE62B9E65DB2DE58 -B9E06BB2D767C5DF90D8E7BBE0E9CFFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA94A0AF275387 -2D609B3064A13166A43368A7346AAA366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD -366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD -366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD -366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD -366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD -356AAA3266A43063A02E609B2C5D9726518349596DEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B72D91AD34AACA37B2D3 -39B5D73AB8DA3CBBDE3DBEE03DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE1 -3DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13DBEE13CBADC39B5D7 -37B0D135ABCB32A3C22986A0869397DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFE7E7E7 -585858000000000000000000000000404040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEEFF3E6 -D5E3B9CFE4A6BBDB7BACD755BCE95FC9F56AD4FB75DCFE7EE2FF84E8FF8AEEFF8FF2FF94F6FF98 -F8FF9AFAFF9DFAFF9DFAFF9DF8FF9CF8FF9BF7FF9AF6FF99F5FF98F4FF97F3FF96F2FF95F1FF95 -F1FF95F0FF94F0FF94EFFF93EFFF93EEFF92EEFF92EFFF92EFFF93F0FF93F0FF94F1FF94F1FF95 -F2FF95F3FF96F3FF96F4FF97F4FF98F5FF98F5FF99F6FF9AF8FF9BF8FF9BF9FF9BF7FF9AF6FF98 -F3FF95EFFF91EBFF8DE6FF88E1FE82DBFD7CD1FA72C4F166B8E55CB9E06BB9D87ABBD38CE2EBD0 -FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA94A0AF2753862D609B3064A13166A43368A6346AA9366CAD366CAD366CAD366CAD -366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD -366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD -366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD -366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD366CAD -366CAD366CAD366CAD366CAD356AA93266A43063A02E609B2C5D9726518349596DEAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC -9FB1B62D91AC34AAC937B2D339B5D63AB8DA3CBBDD3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE03DBEE0 -3DBEE03DBEE03CBADC39B5D637B0D035ABCB32A3C129869F869396DCDCDCF1F1F1FAFAFAFEFEFE -FFFFFFF7F7F7878787101010000000000000000000080808787878EFEFEFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6060600000000000009F9F9F -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEE1EACFD1E6A6ABD655C0ED63CCF76DD6FC78E1FF83EBFF8EF3FF96F7FF9BF8FF9CF8FF9B -F6FF9AF4FF98F2FF96F0FF94EEFF92ECFF90EAFF8EE8FF8CE6FF8AE5FF8AE4FF89E3FF88E2FF87 -E1FF86E0FF85DFFF84DEFF83DEFF83DDFF83DDFF82DCFF82DCFF81DBFF81DBFF80DCFF81DCFF81 -DDFF82DDFF83DEFF83DFFF84DFFF84E0FF85E0FF85E1FF86E1FF86E2FF87E3FF87E4FF88E6FF8A -E8FF8CE9FF8EEBFF8FECFF91EEFF92EFFF93F1FF95F2FF96F3FF97F4FF98F3FF96EEFF91E6FF89 -DBFD7DD0FA72C5F368BAE75EACD855A5C760E0E9CFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA94A0AF2753862D5F9A3064A03166A33368A6346AA8 -366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC -366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC -366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC -366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC -366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC356AA83266A330639F2E609A2C5D96 -26518249596DEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFAFAFAF1F1F1DCDCDC9FB1B62D91AC34A9C937B1D239B4D53AB7D93CBADC3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF -3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3DBDDF3CB9DB39B4D537AFD035AACA32A2C029869F869396 -DCDCDCF1F1F1FAFAFAFEFEFEB7B7B7202020000000000000000000000000484848DFDFDFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -6060600000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFED1DEB8ABCF63B4E15AC7F46ADBFE7EEBFF8FF0FF94F4FF98F4FF98F1FF95 -EEFF93EBFF8FE8FF8CE5FF8BE3FF89E1FF87DFFF85DDFF83DCFF81D9FF7FD7FF7DD5FE7BD3FD79 -D2FC78D1FC77D0FB76CFFB75CEFA74CDF973CCF872CBF872CAF771CAF771CAF771C9F670C9F670 -C8F56FC8F56FC9F56FC9F670CAF771CBF771CBF872CCF872CCF973CDF973CEFA74CEFA74CFFB75 -CFFB76D0FB76D1FC77D3FD79D5FE7BD7FF7DD9FF7FDBFF81DCFF82DEFF83DFFF85E1FF86E2FF87 -E4FF89E8FF8CEBFF8FECFF91EDFF92EDFF92EAFF8EE3FF87D9FD7DC4F168AEDA56A6C960C0D09F -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA94A0AE2753862D5F9A -3064A03166A33368A6346AA8366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC -366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC -366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC -366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC -366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC366CAC356AA8 -3266A330639F2E609A2C5D9626518249596DEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B62C8FAB33A8C836B0D138B3D4 -39B6D83BB9DB3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE -3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3CBCDE3BB8DA38B3D436AECF -34A9C931A1BF28859E869396DCDCDCF1F1F1D3D3D3484848000000000000000000000000000000 -3838387F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F -7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F -7F7F7F7F7F7F7F7F7F7F7F7F3030300000000000009F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEBECE9DA6D051C6F26ADBFE7FE8FF8CF0FF93ECFF91 -E9FF8DE6FF8BE3FF88E0FF86DDFF83D9FF7FD6FE7CD3FD7AD1FC78D0FB76CEF974CCF872C9F570 -C7F36EC5F16CC3EF6AC1EC68BFEB67BEEA66BDE965BCE864BBE762BAE661B9E460B8E460B8E460 -B7E35FB7E35FB7E35FB6E25EB6E25EB6E15DB6E25EB7E35EB7E35FB8E460B9E460B9E561BAE661 -BBE662BBE763BCE863BDE864BDE964BEE965BFEB66C1ED68C3EF6AC5F16CC7F36EC9F570CBF772 -CDF973CEFA74D0FB76D1FC77D3FD79D7FE7DDBFF80DDFF83DFFF85E1FF87E3FF88E5FF8AE7FF8C -E3FF88D1FA76BFEB65A3CC4EA7B982FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA94A0AE2752862D5F9A3063A03165A33367A63469A8366BAC366BAC366BAC366BAC366BAC -366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC -366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC -366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC -366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC -366BAC366BAC366BAC3569A83266A330629F2E5F9A2C5C9626508249596DEAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B6 -2C8FAA33A7C736AFD038B2D339B5D63BB8DA3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD3CBBDD -3CBBDD3BB7D938B2D336ADCD34A8C831A0BE28849D869396CECECE717171000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000009F9F9FFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFB7A993AABD557DAFE7F -E3FF88E5FF8AE3FF88DCFF82D8FF7ED5FE7CD2FC79CFFA76CBF773C7F36FC4EF6CC2ED69C0EB68 -BEE966BBE764B9E562B7E260B5E05DB3DE5BB0DB59AED957ADD856ACD755ABD654ABD554AAD553 -AAD452A9D352A9D352A9D351A8D351A8D251A8D251A8D251A8D251A8D251A8D251A8D351A8D351 -A9D351A9D352A9D452AAD452AAD453AAD553ABD554ABD654ACD654ACD755ADD856AFDA58B1DC5A -B3DE5CB5E05EB7E260B9E461BBE663BDE865BFEA66C0EB68C2EE6AC6F26ECAF671CEF975D0FB77 -D2FD79D4FE7BD6FE7DDBFF81E0FF86E0FF86D5FC7CA3CB51718E36E0E1DFFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA94A0AE2752862D5E9A3063A03165A33367A63469A8366BAC -366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC -366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC -366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC -366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC366BAC -366BAC366BAC366BAC366BAC366BAC366BAC366BAC3569A83265A330629F2E5F9A2C5C96265082 -49596DEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FAFAFAF1F1F1DCDCDC9FB1B62C8EA933A6C636AECF38B1D339B4D63BB7D93CBADC3CBADD3CBADD -3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD -3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD -3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD -3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD -3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD -3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD -3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD -3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD -3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD -3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD -3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD -3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD -3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD3CBADD -3CBADD3CBADD3CBADD3CBADD3CBADC3BB6D838B2D336ADCD34A8C831A0BE28849D869396CECECE -717171000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000C7C7C7FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFB -E3E6DD7A9A3A93B944A4CC50C8F16FD9FF7FD3FC7ACDF874C7F26FC5EF6CC2EC6ABEE866BAE462 -B6E05FB2DC5BB0DA59AED857ACD655AAD454A9D352A8D251A8D151A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050A7D050 -A7D050A7D050A7D050A7D050A7D150A8D151A8D252A9D352AAD454ACD555ADD756AFD958B2DC5B -B5E05EB9E462BDE765C1EB69C3EE6BC5F06DC8F26FCDF774D2FC79D1F778A9CF568BAF416B8632 -BEBFBCFBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA94A0AE2752852D5E9A3063A0 -3165A23367A53469A8366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB3569A73265A3 -30629E2E5F9A2C5C9526508249596DEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B62B8EA933A5C535ADCE37B0D139B3D5 -3AB6D83CB8DB3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC -3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB9DC3CB8DB3AB5D738B0D236ACCC34A7C7 -309FBD28839C869396DCDCDCF1F1F1D3D3D3484848000000000000000000000000000000383838 -7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F -7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F -7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FB7B7B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEF8F8F8DEE1D87A993A91B7449CC449A0C84CB1DB5BC3EE6BBCE765B6E160 -B3DD5CAFD959ACD656A9D353A7D151A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50 -A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50 -A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50 -A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50A6CF50 -A6CF50A6CF50A6CF50A7D050A8D151A9D353ACD556AFD959B3DD5CB6E05FB9E362BEE967B2DC5D -9BC24996BD468AAE416A8532BABBB8F8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -94A0AE2752852D5E9930639F3165A23367A53469A7366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB3569A73265A230629E2E5F992C5C9526508149596CEAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB1B62B8DA8 -32A4C435ACCD37AFD038B2D43AB5D73BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA3BB7DA -3AB4D637AFD035ABCB33A6C5309EBC27829B869296DCDCDCF1F1F1FAFAFAFEFEFEB7B7B7202020 -000000000000000000000000484848DFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF5F5F5D8DAD279983991B5439BC2489FC74B -A2CA4DA6CE50ACD555A8D151A6CE50A6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4F -A6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4F -A6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4F -A6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4F -A6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CE4FA6CF50 -A8D051AAD354A5CD509EC54A9AC14895BB458AAD406A8431B6B7B4F5F5F5FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA94A0AE2752852D5E9930639F3165A23367A53469A7366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB3569A73265A230629E2E5F992C5C9526508149596C -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFA -F1F1F1DCDCDC9FB0B52B8CA732A4C335ACCC37AFCF38B2D33AB5D63BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D93BB7D9 -3BB7D93BB7D93BB7D93BB7D93AB4D537AFCF35AACA33A5C4309DBB27829A869296DCDCDCF1F1F1 -FAFAFAFEFEFEFFFFFFF7F7F7878787101010000000000000000000080808787878EFEFEFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF3F3F3D4D6CE -79973990B5439BC2489EC64BA1C94DA3CB4EA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA5CD4F -A5CD4FA5CD4FA5CD4FA5CD4FA5CD4FA4CD4FA1C94D9DC54A9AC04895BB4589AC40698431B2B3B0 -F3F3F3FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA94A0AE2752852D5E9930639F3165A2 -3367A53469A7366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB3569A73265A230629E -2E5F992C5C9526508149596CEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9FB0B52B8BA632A3C235AACA36ADCE38B1D13AB4D5 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D8 -3BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D83BB6D839B2D337AECE35A9C833A4C3309CB9 -278199869296DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFE7E7E7585858000000000000 -000000000000404040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFCFCFCF1F1F1D2D4CC7896388FB34299C0479DC54AA0C84CA1CA4DA3CB4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4E -A4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA4CC4EA3CB4EA0C84C9CC34998BF47 -93B94488AB3F688331B0B1AEF1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA94A0AE -2752852D5E9930629F3165A23367A53469A7366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB3569A73265A230629E2E5F992C5C9526508149596CEAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9EB0B52A8AA531A2C1 -34A9C936ACCD37AFD039B2D33AB5D63AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D7 -3AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D73AB5D639B1D2 -36ADCD34A8C732A3C22F9BB8278098869295DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFC7C7C7383838000000000000101010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1D1D3CB7795388EB24198BF479CC3499EC64B -A0C84CA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4D -A2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4D -A2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4D -A2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4D -A2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4DA2CA4D -A1CA4D9EC64B9BC24997BE4792B84487AA3E678230B0B1AEF1F1F1FCFCFCFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA94A0AE2752852D5E9930629F3165A23367A53469A7366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB366BAB -366BAB366BAB366BAB366BAB366BAB3569A73265A230629E2E5F992C5C9526508149596CEAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1 -DCDCDC9EB0B52A8AA431A1BF34A9C836ACCB37AFCF39B2D23AB4D53AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D63AB4D6 -3AB4D63AB4D63AB4D539B1D136ACCC34A7C632A2C12F9AB7277F98869295DCDCDCF1F1F1FAFAFA -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F484848AFAFAFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1D0D3CB769537 -8DB24197BE469BC3499EC64A9FC84CA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4DA1CA4D -A1CA4DA1CA4DA1CA4DA1CA4DA1C94D9EC64B9AC14896BD4691B74387A93E678130B0B1AEF1F1F1 -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA94A0AE2751842D5E9830619E3164A13366A4 -3468A6366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA -366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA -366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA -366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA -366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA366AAA3568A63264A130619D2E5E98 -2C5B94264F8149596CEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFDFDFDFDFDFDFEFEFEFFFFFF -FFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9EB0B52A89A331A1BE34A8C736ABCA37AECE39B1D13AB3D4 -3AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D4 -3AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D4 -3AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D4 -3AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D4 -3AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D4 -3AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D4 -3AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D4 -3AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D4 -3AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D482E7FFFFFFF1 -82B3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D4 -3AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D4 -3AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D4 -3AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D4 -3AB3D43AB3D43AB3D43AB3D43AB3D43AB3D43AB3D439B0D036ABCA34A7C532A2C02F9AB6277F97 -869295DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCF1F1F1D0D3CB7593378CB04096BD4699C1489CC44A9EC64B9FC84C9FC84C9FC84C9FC84C -9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C -9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C -9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C -9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C -9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9FC84C9CC44A99C04895BC4690B643 -85A83D668030B0B1AEF1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA94A0AE275184 -2D5D982F619E3164A13266A43468A6356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -3468A63264A130619D2E5E982C5B94264F8149596CEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDEBEBEB2F2F2F -080808757575EBEBEBFDFDFDFEFEFEFEFEFEFAFAFAF1F1F1DCDCDC9EB0B42A88A2309FBD33A7C6 -35AAC936ADCC38B0D039B2D239B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339CDF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1DADB39B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339CDF1FFFFFFC2CDD339B2D339B2D339B2D339B2D35FDAF7FFFFFF -C2CDD339B2D339B2D339B2D339B2D339CDF1FFFFFFC2CDD339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D381E6FFFFFFF181B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D3 -39B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D339B2D238AFCF36AAC9 -33A5C431A1BF2E99B5267E96869295DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFEFEFEFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1D0D3CB7492378AAF4094BB4598C0489BC3499DC54B -9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C -9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C -9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C -9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C -9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC74C9EC64C -9BC34A97BE4794BA458FB44284A73D657F2FB0B1AEF1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA94A0AE2751842C5D982F619E3064A13266A43368A6356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA3368A63164A12F619D2D5E982B5B94264F8149596CEAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFBFBFBBEBEBE000000000000000000171717929292FBFBFBFCFCFCF9F9F9F1F1F1DCDCDC -9EB0B42987A1309EBC33A6C535A9C836ACCB38AFCF39B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139CCF0FFFFF7A3BFD139B1D139B1D139CCF0FFFFFF -FFE6E139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39BFE8E1FFFFC2CCD139B1D139B1D139B1D139B1D139B1D139BFE8E1FFFFE1D9D939B1D139B1D1 -39B1D139B1D9A3F2FFFFFFFFFFE6E139B1D139B1D139B1D139B1D181E6FFFFFFF081B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139BFE8E1FFFFC2CCD1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D139B1D1 -39B1D139B1D138AECE35A9C833A4C331A0BE2E98B4267D94869295DCDCDCF1F1F1FAFAFAFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF4F4F44E4E4E -3636368C8C8CFBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1D0D3CB7391368AAE3F -94BA4597BE479AC1499CC34A9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B -9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B -9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B -9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B -9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B9DC54B -9DC54B9DC54B9DC54B9DC54B9AC14997BD4793B9458EB34283A53C647E2FB0B1AEF1F1F1FCFCFC -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA94A0AE2751842C5D982F619E3064A13266A43368A6 -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA3368A63164A12F619D2D5E982B5B94 -264F8149596CEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF7F7F7EBEBEB4D4D4D0000000000000000000000002D2D2D -B9B9B9F6F6F6EFEFEFDBDBDB9EB0B42987A0309EBB33A5C334A8C736ABCA38AECD39B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039CCF0FFFFF7A3BFD0 -39B1D039B1D039B1D081E6FFFFF2E85FB1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039BFE8E1FFFFC2CCD039B1D039B1D039B1D039B1D039B1D039B1D8 -A3F2FFFFF2E85FB1D039B1D039B1D039B1E0C2FFFFFFFFFFFFF2E85FB1D039B1D039B1D039B1D8 -A3F2FFFFE6E039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039BFE8E1FFFFC2CCD039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D039B1D0 -39B1D039B1D039B1D039B1D039B1D039B1D037ADCC35A9C733A4C231A0BC2E97B3267D94869295 -DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFBFBFBBFBFBF000000000000000000262626AAAAAAFBFBFBFDFDFDFEFEFEFFFFFFFCFCFC -F1F1F1D0D3CB72903688AC3F92B84496BC4698BF489AC2499CC44B9CC44B9CC44B9CC44B9CC44B -9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B -9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B -9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B -9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B -9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC44B9CC34A99BF4895BB4691B7448DB14182A43C -647D2EB0B1AEF1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA94A0AE2751842C5D98 -2F619E3064A13266A43368A6356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA3368A6 -3164A12F619D2D5E982B5B94264F8149596CEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF4F4F4E6E6E6D3D3D3888888 -181818000000000000000000000000525252D5D5D5D9D9D99DAEB329869F2F9DBA32A4C234A7C5 -35AAC937ADCC38AFCF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF -38B0CF38CBEFFFFFF7A2BDCF38B0CF38B0CF38B0D7A2F2FFFFF2E75EB0CF38B0CF38B0CF38BDE7 -E1FFFFFFFFFFFFFFFFFFF2E75EB0CF38B0CF38B0CF5ED8F7FFF2E75EB0E0C2FFFFFFFFFFFFFFFF -E1D8D738B0CF38B0CF38B0CF38B0CF38BDE7E1FFFFFFFFFFFFFFFFFFFFFFC2CBCF38B0CF38B0CF -38B0CF5ED8F7FFF2E75EBDE7E1FFFFFFFFFFC2CBCF80E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E7 -5EB0CF38B0CF38B0CF38B0CF5ED8F7FFFFF7A2BDCF38B0CF38B0CF38CBEFFFFFF7A2D8EFFFFFF7 -A2BDCF38B0CF38B0CF38BDE7E1FFFFE1D8D738B0CF5ED8F7FFF2E75EBDE7E1FFFFFFFFFFC2CBCF -38B0CF5ED8F7FFFFEF80B0CF80E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E75EB0CF38B0CF38BDE7 -E1FFFFFFFFFFFFFFFFFFF2E75EB0CF38B0CF38B0CF5ED8F7FFF2E75EBDE7E1FFFFFFFFFFC2CBCF -38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF -38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF38B0CF36ACCB34A7C532A3C0 -309EBB2D96B2257C93869295DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8E6E6E62A2A2A0000000000000000000000003D3D3D -C9C9C9FCFCFCFEFEFEFBFBFBF1F1F1D0D3CB718F3587AB3E91B74395BB4597BE4799C0499BC24A -9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A -9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A -9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A -9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A -9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC34A9BC24A98BE48 -94BA4591B6438CB04081A33B637C2EB0B1AEF1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA94A0AE2751842C5D982F619E3063A13265A33368A6356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA356AAA -356AAA356AAA356AAA3367A63164A12F619D2D5E972B5B93264E7F48586BE8E8E8F5F5F5FAFAFA -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFAFAFA -F4F4F4E6E6E6D4D4D4C4C4C4B4B4B462626206060600000000000000000007070769696996A7AA -28849D2F9BB831A3C133A6C435A9C836ACCB38AECD38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38CAEFFFFFF7A2BDCE38AFCE38AFCE38CAEFFFFFFFE1D8D6 -38AFCE38AFCE38CAEFFFFFFFE1D8D638AFCE38AFD6A2F2FFFFFFEF80AFCE38AFCE5ED8F7FFFFFF -FFFFF7A2BDCE38AFCE38CAEFFFFFFFE1D8D638AFCE38AFCE38CAEFFFFFFFE1D8D638AFCE38AFCE -38CAEFFFFFFFE1D8D638AFCE38AFCE5ED8F7FFFFFFFFFFEF80AFCE38AFCE38AFCE38AFCE38BDE7 -E1FFFFC2CACE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38CAEFFFFFFFC2CACE38AFCE38AFCE -5ED8F7FFF2E75EBDE7E1FFFFE1D8D638AFCE38AFCE38CAEFFFFFF7A2BDCE38AFCE5ED8F7FFFFFF -FFFFEF80AFCE38AFCE38AFCE38AFCE5ED8F7FFFFEF80AFCE38AFCE38BDE7E1FFFFC2CACE38AFCE -38AFCE38AFCE38CAEFFFFFFFE1D8D638AFCE38AFD6A2F2FFFFFFEF80AFCE38AFCE5ED8F7FFFFFF -FFFFEF80AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE38AFCE -38AECD36ABCA34A6C432A2BF309DBA2D95B1257B92869295DCDCDCF1F1F1FAFAFAFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF5F5F5E7E7E7CECECE6A6A6A -0C0C0C000000000000000000000000646464E2E2E2F9F9F9F0F0F0D0D3CB718D3587A93E90B543 -94B94596BC4798BF489AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A -9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A -9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A -9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A -9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A9AC14A -9AC14A9AC14A9AC04A97BD4893B94590B4438BAE4080A13B627B2EB0B1AEF1F1F1FCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA94A0AE2750832C5D972F609D3063A03265A33367A53569A9 -3569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A9 -3569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A9 -3569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A9 -3569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A9 -3569A93569A93569A93569A93569A93569A93569A93367A53163A02F609B2C5C95152C48000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000E10101A54642D99B531A1BF32A5C334A8C636ABCA37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC36C9EEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFEE80ADCC37ADCC37ADCC36ADD5A2F2FFFFE4DD37ADCC37ADCC37ADCC36BBE6E1FFFF -C1C9CC37ADCC5DD7F7FFFFFFC1C9CC37ADCC37ADCC37ADCC80E4FFFFF2E65DADCC36ADD5A2F2FF -FFE4DD37ADCC37ADCC37ADCC37ADCC80E4FFFFF2E65DADCC37ADCC5DD7F7FFFFFFC1C9CC37ADCC -37ADCC37ADCC37ADCC36BBE6E1FFFFC1C9CC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC36ADDD -C1FFFFFFE4DD37ADCC36ADD5A2F2FFFFE4DD36ADD5A2F2FFFFE4DD37ADCC37ADCC80E4FFFFF2E6 -5DADCC37ADCC5DD7F7FFFFFFC1C9CC37ADCC37ADCC37ADCC37ADCC5DD7F7FFFFEE80ADCC37ADCC -36BBE6E1FFFFC1C9CC37ADCC37ADCC36ADD5A2F2FFFFE4DD37ADCC37ADCC37ADCC36BBE6E1FFFF -C1C9CC37ADCC5DD7F7FFFFFFC1C9CC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC37ADCC -37ADCC37ADCC37ADCC37ADCC37ADCC35AAC833A5C331A1BE2F9CB92C94B0247B91859194DCDCDC -F1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFBFBFB -F4F4F4E7E7E7D4D4D4C4C4C4A9A9A94C4C4C000000000000000000000000070707797979E5E5E5 -CED0C96F8B3485A83D8FB44292B84495BB4697BD4898BF4999C04999C04999C04999C04999C049 -99C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C049 -99C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C049 -99C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999CAA9EEFFFFDED549 -99C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C04999C049 -99C04999C04999C04999C04999C04999C04998BF4995BB4792B7448EB34289AD3F7FA03A617A2D -B0B1AEF1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA949FAE2750832C5D972F609D -3062A03265A33367A53569A93569A93569A93569A93569A93569A93569A93569A93569A93569A9 -3569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A9 -3569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A9 -3569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A9 -3569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93367A53163A0 -2F5F9B2C5A93142A45000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000C2A312E99B632A3C134A7C5 -36AAC937ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -36C8EEFFFFF7A2BACB37ACCB36C8EEFFFFFFE1D6D437ACCB37ACCB36ACDCC1FFFFE1D6D437ACCB -37ACCB37ACCB36ACDCC1FFFFE1D6D437ACCB5DD6F7FFFFEE80ACCB37ACCB37ACCB37ACCB5DD6F7 -FFFFEE80ACCB36BAE6E1FFFFE1D6D437ACCB37ACCB37ACCB37ACCB5DD6F7FFFFF7A2BACB37ACCB -5DD6F7FFFFEE80ACCB37ACCB37ACCB37ACCB37ACCB36BAE6E1FFFFC1C8CB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB80E4FFFFFFEE80ACCB36ACDCC1FFFFC1C8CB37ACCB5DD6F7FFFFEE -80ACCB36ACD4A2F2FFE1D6D437ACCB37ACCB5DD6F7FFFFEE80ACCB37ACCB37ACCB37ACCB37ACCB -5DD6F7FFFFEE80ACCB37ACCB36BAE6E1FFFFC1C8CB37ACCB37ACCB36ACDCC1FFFFE1D6D437ACCB -37ACCB37ACCB36ACDCC1FFFFE1D6D437ACCB5DD6F7FFFFEE80ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB -37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB37ACCB35A9C733A4C2319FBD2F9BB8 -2C93AF247A90849093DBDBDBEFEFEFF8F8F8FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCCDCDCDBDBDBD -BDBDBDBDBDBDBDBDBDBCBCBCBCBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB -BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C -7C7C7C7C7C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B -6C6C6C3E3E3E3E3E3E3E3E3E3C3C3C3A3A3A3737373333333030302E2E2E111111000000000000 -0000000000000000001515158485816D893384A63D8EB34292B74494BA4696BC4798BE4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998CAA9EEFFFFDED54998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF49 -98BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BF4998BE4994BA4791B644 -8DB24289AC3F7EA03A60792DB0B1AEF1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -949FAE2750832C5C972F609D3062A03265A33367A53569A93569A93569A93569A93569A93569A9 -3569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A9 -3569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A9 -3569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A9 -3569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A9 -3569A93569A93367A531639F2E5E9A2B588F132842000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000E2E37 -257F972E99B630A0BF33A4C335A8C736ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36C8EDFFFFF7A2B9CA36ABCA36ABCA5DD6F7FFFFF7A2B9CA36ABCA -36B9E5E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1D6D336ABCA5DD6F7FFFFED80ABCA -36ABCA36ABCA36ABCA5DD6F7FFFFF7A2B9CA36B9E5E1FFFFC1C8CA36ABCA36ABCA36ABCA36ABCA -36C8EDFFFFF7A2B9CA36ABCA5DD6F7FFFFED80ABCA36ABCA36ABCA36ABCA36ABCA36B9E5E1FFFF -C1C8CA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36C8EDFFFFF7A2B9CA36C8EDFFFFED -80ABCA36ABCA36C8EDFFFFFFC1C8CA36B9E5E1FFFFC1C8CA36ABCA36ABCA5DD6F7FFFFED80ABCA -36ABCA36ABCA36ABCA36ABCA5DD6F7FFFFED80ABCA36ABCA36B9E5E1FFFFC1C8CA36ABCA36ABCA -36B9E5E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1D6D336ABCA5DD6F7FFFFED80ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA36ABCA -34A7C632A3C1309EBC2E9AB72B92AD24798E849093808080000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000001A210C7999378BB14190B643 -92B84595BB4796BD4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE48 -97BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE48 -97BE48A9DFE3FFF4A9A9C9A9EEFFFFFFFFFFDDD44897BE48A9DFE3FFF4A9A9BE8ADDFFFFFFFFFF -FFFFFFEEDF6A97BE4897BE48BBEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A9A9BE4897BE4897BE48 -97BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE4897BE48 -97BE4896BD4893B94690B5438CB14187AB3E7D9E3960782CB0B1AEF1F1F1FCFCFCFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA949FAE2750832C5C972F609D3062A03265A33367A53569A93569A9 -3569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A9 -3569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A9 -3569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A9 -3569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A93569A9 -3569A93569A93569A93569A93569A93569A93367A531639F2E5E982A578D254E801E3E66374352 -ADADADB7B7B7BBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBBBBBBBBBBBBBBBBBBBABABAB7B7B7B3B3B38C8C8C2A2A2A000000000000000000 -000000222222616B6E206B7F2888A12E98B3309FBC33A3C235A7C636AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936C8EDFFFFF6A2B9C936AAC936AAC9 -36B9E5E1FFFFE1D5D336AAC936AADBC1FFFFE1D5D336AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC95DD5F6FFFFED80AAC936AAC936AAC936AAC95DD5F6FFFFED80AAC936B9E5E1FFFFE1D5D3 -36AAC936AAC936AAC936AAC95DD5F6FFFFF6A2B9C936AAC95DD5F6FFFFED80AAC936AAC936AAC9 -36AAC936AAC936B9E5E1FFFFC1C8C936AAC936AAC936AAC936AAC936AAC936AAC936AAC936B9E5 -E1FFFFE1D5D35DD5F6FFF2E55DAAC936AAC936AADBC1FFFFE1D5D35DD5F6FFFFED80AAC936AAC9 -36AAC95DD5F6FFFFED80AAC936AAC936AAC936AAC936AAC95DD5F6FFFFED80AAC936AAC936B9E5 -E1FFFFC1C8C936AAC936AAC936AADBC1FFFFE1D5D336AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC95DD5F6FFFFED80AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC936AAC9 -36AAC936AAC936AAC936AAC934A6C532A2BF309DBA2E99B52B91AC24778E828E91828282000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000383837 -5B722A7D9E3A89AE3F8EB34291B74493B94695BC4795BC4795BC4795BC4795BC4795BC4795BC47 -95BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC47 -95BC4795BC4795BC4795BC4795BC47A8DEE3FFFFFFFFFFC6B9BC4795BC4795BC4795BC47A8DEE3 -FFFFFFFFFFE3CCC84795BC4795D3C6FFFFFFEEDE6995BC4795BC4795C8A8EEFFFFDDD34795BC47 -95BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC4795BC47 -95BC4795BC4795BC4795BC4795BC4795BB4792B8458EB4438BAF4086AA3E7C9D395F782CB0B1AE -F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA949FAE2650832C5C972E609D3062A0 -3165A33367A53469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A9 -3469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A9 -3469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A9 -3469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A9 -3469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93367A531639F2E5E99 -2A588E264F811E4069384454B2B2B2BCBCBCBFBFBFC1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C0C0C0BEBEBEAFAFAF4F4F4F000000 -0000000000000000000F0F0F6A6A6A9C9C9C79878A216C802989A22E97B3309FBC33A3C035A7C5 -36A9C736AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836C8ED -FFFFF6A2B9C836AAC836AAC836AAD2A2F2FFFFF2E45DAAC836AAD2A2F2FFFFE3DB36AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC85DD5F6FFFFF6A2B9C836AAC836AAC836AAD2A2F2FFFFF2E4 -5DAAC836AAD2A2F2FFFFE3DB36AAC836AAC836AAC836AAC880E3FFFFF2E45DAAC836AAC85DD5F6 -FFFFED80AAC836AAC836AAC836AAC836AAC836B9E4E1FFFFC1C8C836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAD2A2F2FFFFE3E4A2F2FFE1D5D236AAC836AAC836AAC880E3FFFFF2E4 -A2E3FFFFE3DB36AAC836AAC836AAC85DD5F6FFFFED80AAC836AAC836AAC836AAC836AAC85DD5F6 -FFFFED80AAC836AAC836B9E4E1FFFFC1C8C836AAC836AAC836AAD2A2F2FFFFE3DB36AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC85DD5F6FFFFED80AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC836AAC8 -36AAC836AAC836AAC836AAC836AAC836AAC836AAC836A9C834A6C432A1BE309DB92E99B42B90AB -23768C7F8A8D7C7C7C000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000001F1F1F313131313131 -313131313131313131313131313131313131303030303030303030303030303030303030303030 -303030303030303030303030303030606060606060606060606060606060152334152334606060 -6060605F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6B6B6B -8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8B8B8B8888887373731A1A1A000000000000000000 -0000001B1B1B818181AAABA560792D7B9B3889AC3F8DB24290B54493B84594BA4795BA4795BA47 -95BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA47 -95BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA47A8DDE3FFFFFFDDD24795BA47 -95BA4795BA4795BA47A8DDE3FFFFFFDDD24795BA4795BA4795BA47B9E8FFFFF4A8A8BA4795BA47 -95C6A8EEFFFFDDD24795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA47 -95BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4795BA4794BA4791B6458EB2428AAE40 -86A93D7B9C395E772CB0B1AEF1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA949FAE -2650832C5C972E609C2F629F3164A23266A53468A83469A93469A93469A93469A93469A93469A9 -3469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A9 -3469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A9 -3469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A9 -3469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A93469A9 -3469A93266A430639F2D5F992A59912752872145703E4B5CC5C5C5D1D1D1D5D5D5D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 -D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D3D3D3 -8080800C0C0C0000000000000000000505054F4F4FA7A7A7AFAFAFABABAB8491962272872A8DA8 -2E99B6319FBC32A3C034A6C435A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C6 -35A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C6 -35A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C6 -35A8C635A8C635A8C635C6EDFFFFF6A1B8C635A8C635A8C635A8C65CD5F6FFFFFFC1C6C635A8C6 -35C6EDFFFFFFC1C6C635A8C635A8C635A8D9C1FFF6A1B8C635A8C65CD5F6FFFFFFFFFFF6A1B8C6 -35A8C635C6EDFFFFFFC1C6C635A8C635A8C65CD5F6FFFFFFC1C6C635A8C635A8C65CD5F6FFFFFF -C1C6C635A8C635A8C65CD5F6FFFFED80A8C635A8C635A8C635A8C635A8C635A8D9C1FFFFFFE3D9 -35A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C65CD5F6FFFFFFFFFFFFC1C6C635A8C6 -35A8C635A8C65CD5F6FFFFFFFFFFFFC1C6C635A8C635A8C635A8C65CD5F6FFFFED80A8C635A8C6 -35A8C635A8C635A8C65CD5F6FFFFED80A8C635A8C635A8D9C1FFFFFFE3D935A8C635A8C635A8C6 -35C6EDFFFFFFC1C6C635A8C635A8C635A8D9C1FFF6A1B8C635A8C65CD5F6FFFFED80A8C635A8C6 -35A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C6 -35A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C6 -35A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C635A8C634A5C2 -32A0BD309CB82E97B32B8FA922758A7D888BC1C1C1C3C3C3BEBEBEBCBCBCBBBBBBBBBBBBBABABA -B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8 -B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9BABABABBBBBBBBBBBBBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBC294566294566BCBCBCBDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE -BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBCBCBCB9B9B96565650B0B0B -0000000000000000000505055A5A5AACACACB7B7B7ADAFA8617A2D7A9A3887AA3E8CB0418FB443 -91B64593B84693B84693B84693B84693B84693B84693B84693B84693B84693B84693B84693B846 -93B84693B84693B84693B84693B84693B84693B84693B84693B84693B84693B84693B84693B846 -A7DCE2FFFFC6B9B84693B84693B84693B84693B846A7DCE2FFFFC6B9B84693B84693B84693B846 -A7DCE2FFFFC6B9B84693B84693C4A8EDFFFFDCD04693B84693B84693B84693B84693B84693B846 -93B84693B84693B84693B84693B84693B84693B84693B84693B84693B84693B84693B84693B846 -93B84690B5448CB14289AD3F84A73D7A9A385D752BB0B1AEF1F1F1FCFCFCFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA949FAD264F822C5C962E5F9C2F619F3164A13266A43468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83265A430629F2E5E9A2B5A9329568D234978435264D9D9D9 -E6E6E6EBEBEBEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED -ECECECECECECE9E9E9BFBFBF0000000000000000000000003737379A9A9AB6B6B6BEBEBEC4C4C4 -BFBFBF909FA424798F2B91AD2F9BB8309EBB32A2BF34A4C235A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535C5ECFFFFF6A1B6C535A7C535A7C535A7C5 -35B6E2E1FFFFFFE2D935A7C535A7C535B6E2E1FFFFFFFFFFFFFFFFFFFFF6A1B6C535A7C535A7C5 -5CD4F6FFFFEC80B6E2E1FFFFFFFFFFFFFFFFC1C5C535A7C535A7C535A7C535A7C535C5ECFFFFFF -FFFFFFFFFFFFFFFFF6A1B6C535A7C535A7C535A7C55CD4F6FFFFEC80A7C535A7C535A7C535A7C5 -35A7C535A7C535C5ECFFFFFFFFFFFFFFF1E25CA7C535A7C535A7C535A7C535A7C535A7C535B6E2 -E1FFFFFFFFEC80A7C535A7C535A7C535A7C535B6E2E1FFFFFFFFF6A1B6C535A7C535A7C535A7C5 -5CD4F6FFFFEC80A7C535A7C535A7C535A7C535A7C55CD4F6FFFFEC80A7C535A7C535A7C535C5EC -FFFFFFFFFFFFFFF1E25CA7C535A7C535B6E2E1FFFFFFFFFFFFFFFFFFFFF6A1B6C535A7C535A7C5 -5CD4F6FFFFEC80A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C535A7C5 -35A7C535A7C535A7C533A3C1319FBC2F9BB72D96B22A8EA822748A7E8A8CC3C3C3C6C6C6C3C3C3 -C2C2C2C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 -C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C6C6C6C7C7C7 -C9C9C9CACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACA -CACACACACACACACACACACACACACACA2C4A6D2D4A6ECCCCCCCDCDCDCFCFCFD0D0D0D1D1D1D1D1D1 -D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0CECECE -A4A4A42525250000000000000000000000003434349D9D9DB7B7B7C2C2C2C7C7C7B7BAB3637E2F -7C9D3887AB3F8BB0418EB34390B54492B74692B74692B74692B74692B74692B74692B74692B746 -92B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B746 -92B74692B74692B74692B746A6DBE2FFFFC6B8B74692B74692B74692B74692B746A6DBE2FFFFC6 -B8B74692B74692B74692B746A6DBE2FFFFE2CAC34692B74692C3A8EDFFFFDCCF4692B74692B746 -92B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B74692B746 -92B74692B74692B74692B74692B7468EB4438BB04188AB3F83A63C7999385C752BB0B1AEF1F1F1 -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA949FAD264F822B5C962E5F9C2F619F3164A1 -3266A43468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83265A430629F2E5F9B2C5C95 -2A5890244C7D475669E4E4E4F2F2F2F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F7F7F7F2F2F2D1D1D10707070000001D1D1D838383B7B7B7 -C0C0C0CBCBCBD5D5D5D8D8D8CECECE98A8AC257D942C94AF2F9BB7309EBB32A1BE34A4C135A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C45CD4F5FFFFEC80A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C435A7C4 -35A7C435A7C435A7C435A7C435A7C435A7C435A7C433A3C0319FBB2F9AB62D96B12A8DA7237589 -808C8ECCCCCCD6D6D6D7D7D7D7D7D7D7D7D7D9D9D9DBDBDBDCDCDCDDDDDDDDDDDDDDDDDDDDDDDD -DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD -DDDDDDDDDDDDDEDEDEE0E0E0E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 -E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E232527A32537BE4E4E4E5E5E5 -E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 -E7E7E7E7E7E7E5E5E5D2D2D21414140000000000000000001B1B1B7C7C7CB4B4B4BFBFBFCCCCCC -D7D7D7DADADAC4C6BF6781307D9E3986AA3E8BAF408DB2428FB44391B64591B64591B64591B645 -91B64591B64591B64591B64591B64591B64591B64591B64591B64591B64591B64591B64591B645 -91B64591B64591B64591B64591B64591B64591B64591B645A5DBE2FFFFC6B8B64591B64591B645 -91B64591B645A5DBE2FFFFC6B8B64591B64591B64591B645A5DBE2FFFFC6B8B64591B64591C2A8 -EDFFFFDBCF4591B64591B64591B64591B64591B64591B64591B64591B64591B64591B64591B645 -91B64591B64591B64591B64591B64591B64591B64591B64591B6458EB3438AAF4187AB3E82A53C -7899375C742AB0B1AEF1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA949FAD264F82 -2B5C962E5F9C2F619F3164A13266A43468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3265A430629F2E5F9B2C5C962A5991254D7F48586BE9E9E9F7F7F7FCFCFCFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFBFBFBF4F4F4E5E5E5B8B8B8 -929292BDBDBDC0C0C0C9C9C9D6D6D6E1E1E1E8E8E8E7E7E7D8D8D89CACB0267E942C93AE2E9AB6 -309DB932A0BD33A3C035A5C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C35CD4F5FFFFEC80A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C3 -35A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C335A6C333A2BE319DBA -2F99B52D95B02A8DA7237589838E91D4D4D4E5E5E5E9E9E9ECECECEDEDEDEEEEEEF0F0F0F1F1F1 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4 -F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4 -F4F4F4F5F5F5F5F5F5F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7 -F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F1F1F1E8E8E8070707000000060606606060AFAFAF -BCBCBCC8C8C8D6D6D6E2E2E2EAEAEAE8E8E8CBCEC66783317D9E3985AA3D89AE408BB0418DB343 -8FB44490B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B545 -90B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B545A3DBE2 -FFFFC6B6B54590B54590B54590B54590B545A3DBE2FFFFE2C9C14590B54590B54590B568C9F3FF -FFF3A8A3B54590B54590C1A8EDFFFFDBCF4590B54590B54590B54590B54590B54590B54590B545 -90B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B54590B5458FB444 -8CB14289AD4085A93E81A43B7797375B732AB0B1AEF1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA949FAD264F822B5C962E5F9C2F619F3164A13266A43468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83265A430629F2E5F9B2C5C962A5992254D7F48586BEAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FCFCFCF6F6F6E8E8E8D7D7D7CCCCCCCCCCCCD4D4D4DFDFDFEAEAEAF1F1F1F3F3F3EEEEEEDBDBDB -9DADB1257D942B92AD2E99B52F9CB8319FBB33A2BF34A4C134A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C25BD3F5 -FFFFEB7FA5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C234A5C2 -34A5C234A4C132A1BD309CB82E98B42C94AF2A8CA6227489848F92D9D9D9EDEDEDF5F5F5F8F8F8 -FAFAFAFAFAFAFBFBFBFBFBFBFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFBFBFBF5F5F5E8E8E8ADADAD -6E6E6EAAAAAABDBDBDC5C5C5D2D2D2DFDFDFEAEAEAF3F3F3F6F6F6EEEEEECED1C96883307C9D38 -85A83D88AC3F8AAF408CB1428FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB344 -8FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB344A2DAE2FFFFFF -DBCD448FB3448FB344A2DAE2FFFFC5B6B3448FB3448FB3448FB3448FB344A2DAE2FFFFFFFFFFE2 -C8C1448FB3448FCDC5FFFFFFDBCD448FB3448FB3448FB388DBFFFFFFE7888FB3448FB3448FB344 -8FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB3448FB344 -8FB3448FB3448FB3448EB3448BB04188AC3F85A83D80A23A7696365A7229B0B1AEF1F1F1FCFCFC -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA949FAD264F822B5C962E5F9C2F619F3164A13266A4 -3468A73468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A83468A8 -3468A83468A83468A83468A83468A83468A83468A83468A83265A330629F2E5F9B2C5C962A5992 -254D7F48586BEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF9F9F9F0F0F0E6E6E6E0E0E0E2E2E2E9E9E9F0F0F0F7F7F7 -FAFAFAF8F8F8F0F0F0DCDCDC9EAEB2257C932B91AD2E98B52F9BB8319EBB33A1BE34A3C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C134A4C1 -34A4C134A4C134A4C134A4C134A4C134A3C1329FBD309BB82E97B32C93AE2A8BA5227389859093 -DBDBDBF0F0F0F9F9F9FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FDFDFDF7F7F7EAEAEAD9D9D9CBCBCBC9C9C9D0D0D0DBDBDBE7E7E7F0F0F0F7F7F7FBFBFBFAFAFA -F0F0F0CFD2CA6782307B9C3884A63C87AA3E89AD408BAF428EB1438EB2448EB2448EB2448EB244 -8EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB244 -8EB2448EB244A2DAE2FFFFFFDBCD448EB2448EB244A2DAE2FFFFC5B5B2448EB2448EB2448EB244 -8EB244A2DAE2FFFFC5B5C0A8EDFFFFFFFFFFFFFFFFDBCD448EB2448EB2448EB2448EB2448ECDC5 -FFFFFFFFFFFFFFF2A8A2B2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB2448EB244 -8EB2448EB2448EB2448EB2448EB2448EB2448EB2448DB1438AAE4187AA3F84A63D7FA13A759436 -5A7129B0B0AEF1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA949FAD264F822B5C95 -2E5F9B2F619E3164A03266A33468A73468A73468A73468A73468A73468A73468A73468A73468A7 -3468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A7 -3468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A7 -3468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A7 -3468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73265A3 -30629E2E5F9A2C5C952A5991254D7E48586BEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF8F8F8F3F3F3F1F1F1 -F3F3F3F7F7F7FAFAFAFDFDFDFDFDFDFAFAFAF1F1F1DCDCDC9EADB2257B932B90AC2E97B42F9AB7 -319DBA339FBD34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0 -34A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C034A2C0329EBC309AB72E96B2 -2C91AD2A8AA5227288859093DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF9F9F9F0F0F0E5E5E5DDDDDDDEDEDEE5E5E5EEEEEEF5F5F5 -FAFAFAFDFDFDFEFEFEFCFCFCF1F1F1CFD1CA66812F7B9B3783A53C86A93E88AB3F8BAE418DB042 -8DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB043 -8DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB043 -8DB0438DB0438DB0438DB0438DB043A1D8E2FFFFC5B4B0438DB0438DB0438DB0438DB0438DB043 -8DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB043 -8DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438DB0438AAC40 -86A93E83A53C7E9F3A759335597029B0B0AEF1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA949FAD264F812B5C952E5F9B2F619E3164A03266A33468A63468A73468A73468A73468A7 -3468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A7 -3468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A7 -3468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A7 -3468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A7 -3468A73468A73468A73265A230629E2E5F9A2C5C952A5991254D7E48586BEAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFDFDFDFBFBFBFBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB2 -257A922B8FAB2D96B32F98B6309BB9329EBC33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF33A0BF -33A0BF319DBB2F99B62D95B12B90AC2989A4227187859093DCDCDCF1F1F1FAFAFAFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF8F8F8F2F2F2EFEFEF -F0F0F0F5F5F5F9F9F9FCFCFCFEFEFEFFFFFFFFFFFFFCFCFCF1F1F1CFD1CA667F2F7A993782A33B -86A73D88AA3F8AAC408CAE428DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43 -8DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43 -8DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43A1D8E2FFFFC5B4AF438DAF43 -8DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43 -8DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF438DAF43 -8DAF438DAF438CAE4289AB4086A73E82A33C7E9E39749235596F29B0B0AEF1F1F1FCFCFCFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA949FAD264F812B5B952E5F9B2F619E3163A03265A33467A6 -3468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A7 -3468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A7 -3468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A7 -3468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A73468A7 -3468A73468A73468A73468A73468A73468A73468A73265A230629E2E5F992C5B952A5891254D7E -48586BEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFEFEFE -FAFAFAF1F1F1DCDCDC9DADB22479912A8EA92D95B12E97B5309AB8329DBB339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE339FBE -339FBE339FBE339FBE339FBE339FBE319CB92F98B52D94B02B8FAB2988A2217086859093DCDCDC -F1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFDFDFDFBFBFBFAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1 -CFD1CA657E2E79983681A23B84A63D86A83F87A84089AA428AAB428AAC428BAD428BAD428BAD42 -8BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD42 -8BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD42 -9FD7E2FFFFC5B3AD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD42 -8BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD428BAD42 -8BAD428BAD428BAD428BAD428AAC4289AB4286A73F84A53E84A53D81A23B7C9C39739134586E28 -AFB0AEF1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA949FAD264E812B5A952E5E9B -2F609E3162A03265A33467A63467A73467A73467A73467A73467A73467A73467A73467A73467A7 -3467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A7 -3467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A7 -3467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A7 -3467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73264A230619E -2E5E992C5B952A5890254C7E48586BEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB12479902A8EA82D94B02E97B3309AB6 -329DBA339FBC339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD -339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBD339FBC319BB82F97B42D93AF2B8FAA -2988A1217085859093DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCF1F1F1CFD1CA647D2E78973680A13A81A13D82A14084A34186A64287A743 -88A84388A94288A94289AA4289AA4189AB4189AC4189AC4189AC4189AC4189AC4089AC4089AC40 -89AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC40 -89AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC40 -89AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC41 -89AC4189AC4189AC4189AB4189AB4188AA4188A94288A84287A74285A54183A23F809F3D7D9C3B -7C9C397B9B38728F33576D28AFB0AEF1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA -949FAD264E812B5A952E5E9B2F609D3162A03265A33467A63467A73467A73467A73467A73467A7 -3467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A7 -3467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A7 -3467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A7 -3467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A73467A7 -3467A73467A73264A230619E2E5E992C5B952A5890254C7E48586BEAEAEAF8F8F8FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB124788F -2A8DA72C93AF2E96B23099B5319CB8339EBB339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC -339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBC339EBB -319AB72F96B22D92AE2B8EA92887A0216F84859093DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1CFD1CA60782C718D337B993D7E9B40 -809E4182A04284A24484A34485A44486A54486A64387A74387A74387A84287A84288A94288A942 -88A94288AA4288AA4188AA4188AA4189AB4189AB4189AB4089AB4089AB4089AB4089AB4089AB40 -89AB4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC4089AC40 -89AC4089AC4089AC4089AC4089AC4089AB4089AB4089AB4089AB4089AB4189AB4188AB4188AB41 -88AA4188AA4188A94188A94188A94287A84287A84287A74286A64286A64285A54284A44283A342 -82A141809F407D9B3E7A973C77943A7491386B8731526726AFB0AEF1F1F1FCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF8F8F8EAEAEA949FAD264E802B5A942E5E9A2F609D31629F3265A23467A53467A6 -3467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A6 -3467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A6 -3467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A6 -3467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A6 -3467A63467A63467A63467A63467A63467A63264A130619D2E5E982C5B942A588F254C7E48586B -EAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFA -F1F1F1DCDCDC9DADB124778E298BA62C92AE2D95B12F98B4319AB7329CBA329CBA329CBA329CBA -329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA -329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA -329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA -329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA -329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA -329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA -329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA -329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA -329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA -329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA -329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA -329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA -329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA329CBA -329CBA329CBA329CBA329CBA3099B62E95B12C91AC2A8DA828859F216E83859093DCDCDCF1F1F1 -FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1E1E1E1 -7D8F565B712C6B843877923E7D9A427F9C43819E44819F4482A04483A14483A24484A24484A343 -84A44385A44385A44385A54385A54385A54285A54285A64286A64286A64286A74186A74186A741 -86A74186A74186A74186A74186A84186A84186A84186A84186A84186A84087A84087A84087A840 -87A84087A84087A84086A84086A84086A84186A84186A84186A84186A84186A74186A74186A741 -86A74185A74185A64185A64185A64185A54284A54284A44284A44283A34283A34283A24282A242 -82A14281A042809E427F9D417E9B417D9A407A963E77933C718C3A657E325267274A5631E1E1E1 -F1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA949FAD264E802B5A942E5E9A2F609D -31629F3265A23467A53467A63467A63467A63467A63467A63467A63467A63467A63467A63467A6 -3467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A6 -3467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A6 -3467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63467A6 -3467A63467A63467A63467A63467A63467A63467A63467A63467A63467A63264A130619D2E5E98 -2C5B942A588F254C7D48586BEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB124778D298BA52C92AD2D94B02F97B3319AB6 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB8 -329CB8329CB8329CB8329CB8329CB8329CB8329CB8329CB83099B52E95B02C91AB2A8DA728859E -216E83859092DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDF3F3F3E4E4E4C0C4B98898685B702F5C71316A81397790417C97447F9A45809C45 -809D45819E45829E45829F4582A04482A04482A04483A14483A14483A14483A14483A24383A243 -84A24384A34384A34384A34384A34284A34284A34284A34284A34284A34284A34284A44284A442 -84A44284A44284A44284A44284A44284A44284A44284A44284A44284A44284A44284A44284A342 -84A34284A34284A34284A34283A24283A24283A24283A14282A14382A14382A04382A043819F43 -819F43819E43809E43809D437F9C437E9B437D99427C98427A9641789340718A3B657C35586C2D -4D5F26747F5DBBBCB7E4E4E4F3F3F3FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA949FAD -254E802B5A942D5E9A2E609D30629F3165A23367A53367A63367A63367A63367A63367A63367A6 -3367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A6 -3367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A6 -3367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A6 -3367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A6 -3367A63164A12F619D2D5E982B5B9429588F244C7D48586BEAEAEAF8F8F8FDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DADB123768C298AA4 -2B91AC2D93AF2E96B23099B5319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7 -319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB7319BB72F98B3 -2D94AF2B90AA298CA527859D206D82858F92DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF5F5F5E9E9E9D0D0D0BFBFBFA7AAA18995705E7431 -5A6D31617635687E396F873D758F407B95437E9945809B45809C45809C45809C45809D45819D45 -819D45819D44819E44819E44819E44819F44829F44829F43829F43829F43829F43829F43829F43 -829F43829F43829F43829F4382A04282A04282A04282A04282A04282A04282A04282A04282A042 -82A043829F43829F43829F43819F43819F43819F43819E43819E43819E43809D43809D43809C43 -809C437F9C437F9B437F9B437E9A437E9A437E99437D99437C9643789241738C3E6D853B657B36 -5E723255682C5163297C84698D947FBFBFBFD0D0D0E9E9E9F5F5F5FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDF8F8F8EAEAEA949FAD254E802A5A942D5E9A2E609D30629F3165A23367A53367A63367A6 -3367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A6 -3367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A6 -3367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A6 -3367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A63367A6 -3367A63367A63367A63367A63367A63164A12F619D2D5E982B5B9429588F244C7D48586BEAEAEA -F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1 -DCDCDC9DACB023758B2889A32A8FAA2C92AD2E95B02F98B3319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6319AB6 -319AB6319AB6319AB62F96B22D92AD2B8EA9298AA427839C206C81858F92DCDCDCF1F1F1FAFAFA -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF8F8F8EFEFEFDBDBDB -CCCCCCBBBBBBB4B4B4A6AA9F949E817F8E61697C415B6F31596C315D7134657A386C833C738B40 -768F417892437A95447C97447D98457E99457F9A457F9A457F9A457F9B457F9B457F9B457F9B45 -7F9B447F9B447F9B447F9B447F9B447F9B447F9B447F9B437F9B437F9B437F9B437F9C437F9C43 -7F9B437F9B437F9B437F9B437F9B437F9B437F9B437F9B437F9B437E9A437E9A437E9A437E9943 -7D99437D99437D98437D98447C97437B96437A9443789242768F40738C3F70883D6B813A637836 -5B6F3255682E53662C5D6D3B68764A818B6CADADADB4B4B4BBBBBBCCCCCCDBDBDBEFEFEFF8F8F8 -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA949FAD254E802A5A932D5E9A2E609C30639F -3265A23367A43367A53367A53367A53367A53367A53367A53367A53367A53367A53367A53367A5 -3367A53367A53367A53367A53367A53367A53367A53367A53367A53367A53367A53367A53367A5 -3367A53367A53367A53367A53367A53367A53367A53367A53367A53367A53367A53367A53367A5 -3367A53367A53367A53367A53367A53367A53367A53367A53367A53367A53367A53367A53367A5 -3367A53367A53367A53367A53367A53367A53367A53367A53367A53265A22F629D2D5E982B5B94 -29588F244C7D48586AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DACB022748A2788A22A8FA92B91AC2D94AF2E97B23099B4 -3099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B4 -3099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B4 -3099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B4 -3099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B4 -3099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B4 -3099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B4 -3099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B4 -3099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B4 -3099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B4 -3099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B4 -3099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B4 -3099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B4 -3099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B43099B4 -3099B43099B43099B43099B43099B43099B43099B42E96B12C92AD2A8EA8298AA326839B1F6C80 -858F92DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFBFBFBF6F6F6E7E7E7DBDBDBCBCBCBC2C2C2B9B9B9B3B3B3AFAFAFACACACA4A89D9BA18E -8190617182505D7232596D31596C325B6D325D7134617536657A38687E3A6C833C70873E728B40 -768E417891437993437A94447A94447B95447B95447B96447C96447C97447C97447C97447D9844 -7D98447D98447D98447D98447D98447D98447D98447D98447D97447C97447C97447B96447B9543 -7A9443799342779142769041758E40738B3F6F873D6B823B677D396378375F73345B6E32586B30 -55682F55672E56692E60713D7E876A848F6DA2A59CACACACAFAFAFB3B3B3B9B9B9C2C2C2CBCBCB -DBDBDBE7E7E7F6F6F6FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA949FAD254E80 -2A5A932D5E992E619C30639F3466A13567A23567A23567A23567A23567A23567A23567A23567A2 -3567A23567A23567A23567A23567A23567A23567A23567A23567A23567A23567A23567A23567A2 -3567A23567A23567A23567A23567A23567A23567A23567A23567A23567A23567A23567A23567A2 -3567A23567A23567A23567A23567A23567A23567A23567A23567A23567A23567A23567A23567A2 -3567A23567A23567A23567A23567A23567A23567A23567A23567A23567A23567A23567A23567A2 -3567A131639E2E5F992B5B9429588E244C7D48586AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DACB02274892788A12A8EA8 -2B91AB2D93AE3196B03297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B1 -3297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13297B13196B02C91AB -2A8DA72989A226829A1F6B7F858F92DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF5F5F5EEEEEEE2E2E2DADADACFCFCFC7C7C7 -C0C0C0BBBBBBB7B7B7B3B3B3B0B0B0AFAFAFA7AB9FA5A89E9BA18E919A7E87926F7C8A60708050 -6678405C7132596D31586B31596B325A6D335B6F345D70345E72355F7336607436617637627737 -637838647939657B39667C3A677D3A687F3B69803B697F3B687E3A677D3A677D39667C39657B39 -657A386479386277376074365E72345C6F335A6D32586B31576A3056692F56692F576B2F60713D -6A794D76825D818B6C85906E989E8C9BA18EADADADAFAFAFB0B0B0B3B3B3B7B7B7BBBBBBC0C0C0 -C7C7C7CFCFCFDADADAE2E2E2EDEDEDF4F4F4FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -F8F8F8EAEAEA949FAD254E802A5A932D5E992F619C34659F37679F37679F37679F37679F37679F -37679F37679F37679F37679F37679F37679F37679F37679F37679F37679F37679F37679F37679F -37679F37679F37679F37679F37679F37679F37679F37679F37679F37679F37679F37679F37679F -37679F37679F37679F37679F37679F37679F37679F37679F37679F37679F37679F37679F37679F -37679F37679F37679F37679F37679F37679F37679F37679F37679F37679F37679F37679F37679F -37679F37679F37679F37679F37679F36669E2F609A2B5B9429578F244C7D48586AEAEAEAF8F8F8 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC -9DACB02173882786A0298DA72B90AA3193AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC3393AC -3393AC3393AC3393AC3091AB2A8CA62888A12581991F6A7E848F92DCDCDCF1F1F1FAFAFAFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF8F8F8 -F2F2F2EDEDEDE5E5E5DEDEDED7D7D7D1D1D1CBCBCBC6C6C6C1C1C1BFBFBFBCBCBCB9B9B9B5B5B5 -B2B2B2B1B1B1B1B1B1B0B0B0AEAEAEACACACA4A89DA2A59C9AA08D90997E88947087926F85906F -7D8B617B885F7A875F7181506F7F4F6E7E4F6D7C4E65784064764063754063743F63743F63743F -63754063753F64763F6477406C7B4E6D7C4F6F7E4F78855F7A885F848E6E85916E87936F90997E -999F8DA3A69DACACACAEAEAEB0B0B0B1B1B1B1B1B1B2B2B2B5B5B5B9B9B9BCBCBCBFBFBFC1C1C1 -C6C6C6CBCBCBD1D1D1D7D7D7DEDEDEE5E5E5EDEDEDF2F2F2F8F8F8FBFBFBFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA949FAD254E802A59932D5E9935639C39669C39669C -39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C -39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C -39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C -39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C -39669C39669C39669C39669C39669C39669C39669C39669C39669C39669C38659B2E5C9529578F -244C7D48576AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFAFAFAF1F1F1DCDCDC9DACB021728727859E298CA6308FA83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A83590A8 -3590A83590A83590A83590A83590A83590A83590A83590A8318DA62887A02580981F6A7D848F92 -DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFDFDFDFAFAFAF8F8F8F3F3F3EFEFEFEAEAEAE5E5E5E0E0E0DBDBDBD6D6D6 -D3D3D3D0D0D0CBCBCBC6C6C6C2C2C2C0C0C0BFBFBFBEBEBEBBBBBBB6B6B6B4B4B4B2B2B2B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B1B1B1B0B0B0AEAEAEACACACABABABAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABACACACAEAEAEB0B0B0B1B1B1B2B2B2 -B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B4B4B4B7B7B7BBBBBBBEBEBEBFBFBFC0C0C0C2C2C2C6C6C6 -CBCBCBCFCFCFD3D3D3D6D6D6DBDBDBE0E0E0E5E5E5EAEAEAEFEFEFF3F3F3F8F8F8FAFAFAFDFDFD -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EAEAEA949FAD254E7F2A5993 -3662993B65993B65993B65993B65993B65993B65993B65993B65993B65993B65993B65993B6599 -3B65993B65993B65993B65993B65993B65993B65993B65993B65993B65993B65993B65993B6599 -3B65993B65993B65993B65993B65993B65993B65993B65993B65993B65993B65993B65993B6599 -3B65993B65993B65993B65993B65993B65993B65993B65993B65993B65993B65993B65993B6599 -3B65993B65993B65993B65993B65993B65993B65993B65993B65993B65993B65993B65993B6599 -3B65993B65993964982C5990244C7C48576AEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DACAF21718627849D308BA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3378DA3 -3289A1257F971F697C848F92DCDCDCF1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFBFBFBFAFAFAF7F7F7 -F6F6F6F2F2F2EFEFEFECECECE9E9E9E7E7E7E3E3E3DDDDDDDADADAD8D8D8D7D7D7D4D4D4D0D0D0 -CBCBCBC7C7C7C5C5C5C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C3C3C3C0C0C0BCBCBCB8B8B8B6B6B6 -B5B5B5B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5B6B6B6B8B8B8 -BCBCBCC0C0C0C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C7C7C7CBCBCBD0D0D0D4D4D4 -D7D7D7D8D8D8DADADADDDDDDE3E3E3E7E7E7E9E9E9ECECECEFEFEFF2F2F2F6F6F6F7F7F7FAFAFA -FBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8 -EAEAEA949FAD254E7F315989385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A -385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A -385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A -385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A -385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A385D8A -385D8A385D8A385D8A385D8A385D8A385D8A385D8A355B88264D7C48576AEAEAEAF8F8F8FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1DCDCDC9DABAF -2170852D7F95368498368498368498368498368498368498368498368498368498368498368498 -368498378498378498378498378498378498378498378498378498378498378498378498378498 -378498378498378498378498378498378498378498378498378498378498378498378498378498 -378498378498378498378498378498378498378498378498378498378498378498378498378498 -378498378498378498378498378498378498378498378498378498378498378498378498378498 -378498378498378498378498378498378498378498378498378498378498378498378498378498 -378498378498378498378498378498378498378498378498378498378498378498378498378498 -378498378498378498378498368498368498368498368498368498368498368498368498368498 -368498368498368498368498368498368498368498368498368498368498368498368498368498 -368498368498368498368498368498368498368498368498368498368498368498368498368498 -368498368498368498368498368498368498368498368498368498368498368498368498368498 -368498368498368498368498368498368498368498368498368498368498368498368498368498 -368498368498368498368498368498368498368498368498368498368498368498368498368498 -368498368498368498368498368498368498368498368498368498368498368498368498368498 -3684983684983684983684983684982F7E941E687B848F91DCDCDCF1F1F1FAFAFAFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFBFBFBFAFAFAF8F8F8F7F7F7F6F6F6F4F4F4F0F0F0EEEEEE -EDEDEDECECECEAEAEAE7E7E7E2E2E2DEDEDEDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDBDBDB -D8D8D8D2D2D2CECECECACACAC9C9C9C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8 -C8C8C8C9C9C9CACACACECECED3D3D3D8D8D8DBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDD -DEDEDEE2E2E2E7E7E7EAEAEAECECECEDEDEDEEEEEEF0F0F0F4F4F4F6F6F6F8F8F8F8F8F8FAFAFA -FBFBFBFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8F8F8EAEAEA949FAD2849702A486B2A486B2A486B2A486B2A486B2A486B -2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B -2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B -2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B -2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B -2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B2A486B29476A -4A5A6DEAEAEAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FAFAFAF1F1F1DCDCDC9DABAF236475296272296272296272296272296272296272296272296272 -296272296272296272296272296272296272296272296272296272296272296272296272296272 -296272296272296272296272296272296272296272296272296272296272296272296272296272 -296272296272296272296272296272296272296272296272296272296272296272296272296272 -296272296272296272296272296272296272296272296272296272296272296272296272296272 -296272296272296272296272296272296272296272296272296272296272296272296272296272 -296272296272296272296272296272296272296272296272296272296272296272296272296272 -296272296272296272296272296272296272296272296272296272296272296272296272296272 -296272296272296272296272296272296272296272296272296272296272296272296272296272 -296272296272296272296272296272296272296272296272296272296272296272296272296272 -296272296272296272296272296272296272296272296272296272296272296272296272296272 -296272296272296272296272296272296272296272296272296272296272296272296272296272 -296272296272296272296272296272296272296272296272296272296272296272296272296272 -296272296272296272296272296272296272296272296272296272296272296272296272296272 -296272296272296272296272296272296272296272296272296272296272235F6F848E91DCDCDC -F1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFDFDFDFDFDFD -FDFDFDFCFCFCFBFBFBFAFAFAF9F9F9F9F9F9F8F8F8F6F6F6F3F3F3F2F2F2F0F0F0F0F0F0F0F0F0 -F0F0F0F0F0F0F0F0F0EFEFEFEDEDEDE8E8E8E5E5E5E2E2E2E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1 -E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E5E5E5E8E8E8EDEDEDEFEFEFF0F0F0F0F0F0 -F0F0F0F0F0F0F0F0F0F0F0F0F2F2F2F3F3F3F6F6F6F8F8F8F9F9F9F9F9F9FAFAFAFBFBFBFCFCFC -FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8ECECECC3C8CEB1B6BCA5AAB0A1A6AC -9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA -9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA -9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA -9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA -9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA9FA4AA -9FA4AAA0A5ABA4A9AFAEB3B9D7D7D7ECECECF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF2F2F2DDDDDDB2B9BC809AA27A949C79939B79939B79939B -79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B -79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B -79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B -79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B -79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B -79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B -79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B -79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B -79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B -79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B -79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B -79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B -79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B -79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B79939B -7A949C819BA3B2BBBDDDDDDDF2F2F2FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFC -FBFBFBFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF9F9F9F7F7F7F5F5F5F3F3F3F3F3F3 -F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F5F5F5F7F7F7 -F9F9F9FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFBFBFBFCFCFCFCFCFCFDFDFDFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF0F0F0 -E0E0E0CFCFCFC6C6C6C2C2C2C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 -C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C2C2C2C6C6C6D0D0D0E0E0E0F0F0F0FAFAFAFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF3F3F3E1E1E1CBCBCBBDBDBD -B6B6B6B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 -B3B3B3B3B3B3B3B3B3B3B3B3B6B6B6BDBDBDCBCBCBE1E1E1F3F3F3FBFBFBFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFD -FDFDFDFCFCFCFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEFCFCFCF6F6F6ECECECE2E2E2DDDDDDDBDBDBDADADADADADADADADADADADADADADA -DADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADA -DADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADA -DADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADA -DADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADA -DADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADDDDDDE3E3E3ECECEC -F7F7F7FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -F7F7F7E9E9E9D9D9D9CECECEC9C9C9C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 -C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C9C9C9CECECED9D9D9E9E9E9F7F7F7 -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFBFBFBF6F6F6F0F0F0EDEDEDECECECEBEBEB -EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB -EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB -EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB -EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB -EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB -ECECECEDEDEDF0F0F0F5F5F5FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF9F9F9F2F2F2E9E9E9E3E3E3DFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF -E3E3E3E9E9E9F2F2F2F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFC -FAFAFAFAFAFAF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 -F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFAFAFAF6F6F6F4F4F4F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 -F2F2F2F2F2F2F2F2F2F2F2F2F4F4F4F6F6F6FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FEFEFEFDFDFDFCFCFCFCFCFCFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFCFCFCFCFCFCFDFDFDFEFEFEFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A -385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF385D8A385D8A -385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF -385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A -385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A -385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFF -FFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A -385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A -385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8A -FFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A -385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF -385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A -385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A -385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFF -FFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A -385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A -385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8A -FFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A -385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF -385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A -385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A -385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFF -FFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A -385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A -385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8A -FFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A -385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF -385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A -385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A -385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFF -FFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A -385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A -385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8A -FFFFFFFFFFFF385D8A385D8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A -385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A -385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8A -FFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A -385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF -385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A -385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A -385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFF -FFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A -385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A -385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8A -FFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A -385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF -385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A -385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A -385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFF -FFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A -385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A -385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8A -FFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A -385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF -385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A -385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A -385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFF -FFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A -385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A -385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8A -FFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A -385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF -385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A -385D8AFFFFFFFFFFFF385D8A385D8A385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A385D8A -385D8A385D8A385D8A385D8AFFFFFFFFFFFF385D8A517199FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - -end -%%PageTrailer -%%Trailer -%%EOF diff --git a/doc/DistributionSystem.eps b/doc/DistributionSystem.eps deleted file mode 100644 index 3350f21..0000000 --- a/doc/DistributionSystem.eps +++ /dev/null @@ -1,7265 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%Title: (/srv/www/vhosts/git_exclude/save/processed/e/7/b/e7b70b20-24db-4a38-ba1b-dd4205e4ca06/01_c43df27e8b44ed7b45f71cd3e6b6db7a_png_intermediate_eps/DistributionSystem.eps) -%%CreationDate: (2019-05-27T03:11:03+00:00) -%%BoundingBox: -0 -0 137 103 -%%HiResBoundingBox: 0 0 137.008 103 -%%DocumentData: Clean7Bit -%%LanguageLevel: 1 -%%Pages: 1 -%%EndComments - -%%BeginDefaults -%%EndDefaults - -%%BeginProlog -% -% Display a color image. The image is displayed in color on -% Postscript viewers or printers that support color, otherwise -% it is displayed as grayscale. -% -/DirectClassPacket -{ - % - % Get a DirectClass packet. - % - % Parameters: - % red. - % green. - % blue. - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - compression 0 eq - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/DirectClassImage -{ - % - % Display a DirectClass image. - % - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { DirectClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayDirectClassPacket } image - } ifelse -} bind def - -/GrayDirectClassPacket -{ - % - % Get a DirectClass packet; convert to grayscale. - % - % Parameters: - % red - % green - % blue - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 eq - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/GrayPseudoClassPacket -{ - % - % Get a PseudoClass packet; convert to grayscale. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 eq - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassPacket -{ - % - % Get a PseudoClass packet. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - compression 0 eq - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassImage -{ - % - % Display a PseudoClass image. - % - % Parameters: - % class: 0-PseudoClass or 1-Grayscale. - % - currentfile buffer readline pop - token pop /class exch def pop - class 0 gt - { - currentfile buffer readline pop - token pop /depth exch def pop - /grays columns 8 add depth sub depth mul 8 idiv string def - columns rows depth - [ - columns 0 0 - rows neg 0 rows - ] - { currentfile grays readhexstring pop } image - } - { - % - % Parameters: - % colors: number of colors in the colormap. - % colormap: red, green, blue color packets. - % - currentfile buffer readline pop - token pop /colors exch def pop - /colors colors 3 mul def - /colormap colors string def - currentfile colormap readhexstring pop pop - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { PseudoClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayPseudoClassPacket } image - } ifelse - } ifelse -} bind def - -/DisplayImage -{ - % - % Display a DirectClass or PseudoClass image. - % - % Parameters: - % x & y translation. - % x & y scale. - % label pointsize. - % image label. - % image columns & rows. - % class: 0-DirectClass or 1-PseudoClass. - % compression: 0-none or 1-RunlengthEncoded. - % hex color packets. - % - gsave - /buffer 512 string def - /byte 1 string def - /color_packet 3 string def - /pixels 768 string def - - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - x y translate - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - currentfile buffer readline pop - token pop /pointsize exch def pop - x y scale - currentfile buffer readline pop - token pop /columns exch def - token pop /rows exch def pop - currentfile buffer readline pop - token pop /class exch def pop - currentfile buffer readline pop - token pop /compression exch def pop - class 0 gt { PseudoClassImage } { DirectClassImage } ifelse - grestore -} bind def -%%EndProlog -%%Page: 1 1 -%%PageBoundingBox: 0 0 137 103 -userdict begin -DisplayImage -0 0 -137.008 102.756 -12 -348 261 -0 -0 -005FAF005FAF005FAF005FAF005FAF005DAD005DAD005EAE005EAE005EAE005EAE005EAE005DAD -005EAE005BAB005EAE005FAF0060AC0060AC005DAA005FAB005FAB005FAB005FAB005FAB005EAB -0060AD0060AD005DAA005DAD005DAD005EAE005EAE005EAE005EAE005CAC005EAE005FAF005EAE -005EAE005EAE005CAC005EAE005DAD005FAF005FAF005FAF005DAD005EAE005EAE005EAE005EAE -005EAE005CA9005EAB005BB1005EB4005DAE0060AC0260B0005DB0015FB1005FB0005CAE015EB0 -005DAE005FAF005EAE005EAE005DAD005DAD005FAF005EAF005FAF005DAE005DAE005DAE005FAF -005EAF005FAF005DAE005EAE005EAE005DAE005DAE005DAE005DAE005DAE005DAE005DAD005DAE -005CAD025FAF005FAE005BAC005CAD005DAE005DAE005DAE005DAE005DAE005DAE005DAE005DAE -005DAE005DAE005DAD005FAF005EAF005FAF005FAF005FAF005FAF015DAB015DAC015DAC015EAC -015EAC015EAC015DAA015DAA015DAA015DAA015DAA015DAA005FAA005FAA005FAA005FAA005FAA -005FAA015DAA015DAA015DAA015DAA015DAA015EAB015EAB015EAB015EAB015EAB005DA80061AD -0065AF0061AE0061AE0261AE0161AE0561AF0662B10D60B00E63B10C63B00B63AC0864AA0A63AA -0B63AA0C63AA0C64AA0B63AA0B63AA0B61A90766AA0665A90564A80665AA0564A80563A7005FAF -0364B3005FAE0162B10061B00061B00263B20263B20061B00263B20263B20263B20263B20364B3 -0364B30061B00263B20263B20161AE0262AF0162AF005FAC0060AD0060AD0160AD0161AE0161AE -0161AE0161AE0161AE0161AE0161AE0161AE0161AE0161AE0161AC0061B00061B0005FAE0162B1 -0162B10162B1005FAE0061B00061B00061B00061B00061B00061B00061B00061B00061B00061B0 -0061B00061B00061B0005FAE0163B20364B3005FAE0060AF0061B00061B00061B0005FAE0263B2 -005FAE0061B0005FAE0062B10062B1005FAE0061AC0061AE0061AE0061AE0061AE0061AE0161AE -0161AE0161AE0161AE0161AE0161AE0161AE0161AE0161AE0161AE0161AE0161AE005EAB0060AD -005EAB0061AE0061AE0061AE005DAA0060AD005DAA0060AD0060AD0060AB005CAE005EAE005EAE -005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE -005EAE005CAC005FAF005EAE005CAC005DAD0160B00160B0005CAC005EAE005CAC005FAF005FAF -005CAC005DAD005DAD005DAD005DAD005DAD005DAD005DAD005DAD005DAD005CAC005FAF005FAF -005CAC005EAE005BAB005DAD005DAD005DAD005CAC005FAF005FAF005FAF005FAF005CAC005CAC -005FAF005FAF005BAB005DAD005EAC005BAB005DAA005BA8015EAB015EAB015EAB015EAB015EAB -015EAB015EAB015EAB015EAB005BA8005DAA005BA8015EAB015EAB015EAB005DAD005DAD005EAE -005EAE005EAE015EAE015EAE005DAD005CAC005DAD005DAD005CAC005DAD005EAE005DAD005EAE -005EAE005FAE005FAD005DAB005EAC005EAC005EAC005EAC005EAC005EAC005FAD005FAD005DAC -005EAE005CAC005DAD005DAD005EAE005EAE005DAD005EAE005EAE005FAF005FAF005FAF005DAD -005EAE005DAD005FAF005FAF005FAF005DAD005EAE005EAE005DAD005DAD005EAD005EAA005EAC -005CAE005DB1005CAD005FAC005FAF005DB2005FB3005DB1005EB4005FB3005CAE005EAD005EAE -005EAE005DAD005DAE005FAE005EAE005FAE005EAC005DAD005DAD005EAC005EAB005EAD005DAC -005EAE005EAE005EAE005EAC005EAD005DAC005DAD005DAD005EAB005EAB005EAB005DAB005EAB -005EAC005DAD005DAD005DAC005EAD005EAD005EAD005EAD005EAD005EAD005EAD005EAD005EAD -005FAE005EAE005EAC005FAD005FAD005FAD005EAB005DAC005DAC005DAB005DAB005DAB005EAB -005DAA005DAA005EAB005EAB005EAB005FAA005FAA005FAA005FAA005FAA005FAA005EAA005DAA -005DAA005DAA005DAA005EAB005CA9015EAB015EAB015EAB005DA90061AC0063AE0061AD0060AD -0060AD0161AE0360AE0560AF0960AF0C62B20C61AF0E61AE1164AE1162AE1163AD1263AC1263AC -1465AE1565AF1767B00F68B00F66AE0F66AE0D64AB0C63AC0C63A90063B30061B00264B30263B2 -0263B20263B20162B10263B20061B00364B30364B30364B30162B10364B30364B30061B00263B2 -0263B20061AE0262AF0262AF0061AE0061AE0061AE015FAC0161AE0161AE0161AE0161AE0161AE -0161AE0161AE0161AE0161AE0161AE0161AC0061B00061B0005FAE0162B10162B10162B1005FAE -0061B00061B00061B00061B00061B00061B00061B00061B00061B00061B00061B00061B00061B0 -005FAE0162B10061B00062B1005FAE0061B00061B00060AF0060AF0061B00060AF0061B00060AF -0060AF0061B00060AF0060AC0061AE0061AE0061AE0061AE0061AE0161AE0161AE0161AE0161AE -0161AE0161AE0161AE0161AE0161AE0161AE0161AE0161AE005EAB0060AD005EAB0061AE0061AE -0061AE005FAC005FAC0060AD005FAC0060AD0060AB005CAE005EAE005EAE005EAE005EAE005EAE -005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005CAC005FAF -005EAE005CAC005DAD0160B00160B0005CAC005EAE005CAC005FAF005FAF005CAC005DAD005DAD -005DAD005DAD005DAD005DAD005DAD005DAD005DAD005CAC005FAF005FAF005CAC005EAE005BAB -005DAD005DAD005DAD005CAC005FAF005FAF005FAF005FAF005CAC005CAC005FAF005FAF005BAB -005DAD005EAC005BAB005DAA005BA8015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB -015EAB005BA8005DAA005BA8015EAB015EAB015EAB005DAD005DAD005CAC005EAE005DAD015EAE -005DAD005DAD005CAC005DAD005DAD005BAB005CAC005EAE005EAE005EAE005DAD005FAF005FAF -005CAC005EAE005EAE005DAE005EAE005DAE005DAE005DAE005DAE005EAE005EAE005BAB015EAE -005DAD005EAE005EAE005EAE005EAE005DAD005FAF005FAF005FAF005DAD005EAE005DAD005FAF -005FAF005FAF005DAD005EAE005EAE005DAD005DAD005DAD005CAD005DAE005EAD005DAD005EAE -005DAE005DAD005EAD005DAD005DAC005DAC005DAD005DAD005DAD005DAD005DAD005EAE005DAE -0060AC0060AC0060AC005EAB005FAB005FAB0360AC005BA7025FAC005DAB015EAE015DAD005EAD -005EAA005EAA005FAB005FAB005FAB005FAA005FAA005FAA005FAA005FAA005FAA005EAB005FAB -005FAB0060AC0060AC0060AC0060AC0060AC0060AC0060AC0060AC0060AC0060AC0060AC005DAA -005FAB005FAB005FAB005FAB005FAB005FAB005EAB005EAB005FAB005EAA005FAB005FAB0060AD -0060AC0060AD005EAB005FAB005FAB005FAB005FAC005FAC005FAC005FAC005FAC005FAC005FAC -005EAB005BA8015EAB015EAB015EAB015DAA0160AC0061AC0060AC005FAC005FAC005FAD0461AF -045FAE0661B00B62B20E60B1125FB01D66B61C63B31C63B01C63B01C64B01B62AF1F64B12268B6 -1767B01967B21564AF1564AE1463AD1462AC0164B40263B20364B30162B10162B10364B30061B0 -0162B10061B00263B20263B20263B20364B30162B10364B30061B00263B20263B20161AE0262AF -0162AF005FAC005FAC0060AD0160AD0161AE0161AE0161AE0161AE0161AE0161AE0161AE0161AE -0161AE0161AE005FAC0061B00061B0005FAE0162B10162B10162B1005FAE005FAE0061B0005FAE -005FAE005FAE005FAE005FAE0060AF005FAE0060AF005FAE0061B00061B0005FAE0162B10060AF -0566B5005FAE0061B00061B00061B00263B2005EAD0061B00061B00061B0005EAD0061B00062B1 -005FAC0060AD005FAC0061AE0061AE0061AE0161AE0161AE0161AE0161AE0161AE0161AE0161AE -0161AE0161AE0161AE0161AE0161AE005EAB005FAC005EAB0061AE005FAC005FAC0262AF005EAB -0262AF005EAB005EAC0060AB005CAE005CAC005CAC005CAC005CAC005CAC005CAC005CAC005CAC -005CAC005CAC005CAC005CAC005CAC005CAC005CAC005CAC005CAC005FAF005DAD005BAB005DAD -0160B00160B0005CAC005EAE005CAC005FAF005EAE005BAB005BAB005BAB005BAB005BAB005BAB -005BAB005BAB005BAB005BAB005CAC005FAF005FAF005CAC005DAD005AAA005BAB005BAB005DAD -005CAC005FAF005FAF005FAF005EAE005BAB005CAC005FAF005FAF005BAB005BAD005EAC005BA9 -005CA8005BA8015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB005BA8005DAA -005BA8015EAB005CA9015EAB005FAF005FAF005EAE005DAD005DAD005DAD005DAD005BAB005CAC -005CAC005DAD005BAB005CAC005EAE005DAD005DAD005DAD005FAF005FAF005CAC005EAE005DAD -005DAD005DAD005DAD005EAE005EAE005EAE005DAD005BAB005FAF0060B0005EAE005DAD005DAD -005DAD005DAD005DAD005FAF005EAE005EAE005DAD005EAE005DAD005FAF005FAF005FAF005EAE -005DAD005DAD005FAF005FAF005FAF005CAC0060B0005EAE005EAE005DAD005DAD005FAF005BAB -005EAE005CAC0060B0005DAD005EAE005FAF005FAF005FAF005CAC005DAD005BB2005DB1005FB1 -0161AD045EAC035CAA065DAC055DAA0458A5075CA9005EAD005FAF005DAD005DAE005EAE005CAC -005FAF005FAF005FAF005CAC005EAE005CAC005FAF005FAF005FAF005CAC005EAE005DAE005DAE -005DAE005DAE005DAE005DAE005DAE005DAE005DAE005BAC0262B2005DAE005BAB005EAE005DAE -005DAE005DAE005DAE005DAE005DAE005DAE005EAE005DAE005EAE005CAC005FAF005EAF005FAF -005FAF005FAF005FAF015CAA015EAC015DAC015DAC015DAC015DAC015DA9015EAB015EAB015EAB -015EAB015CAB005FAB005EAA005EAA005EAA005EAA005FAA015CAA005DAA005DAA005DAA005DAA -005DAA005DAA005DA9005DAA005DAA005DA9005DA9005DA9005EAA005EA9005CAA005BA80D60AD -1463B11565B21562B00262B00263B20263B20465B40465B40465B40364B30364B30364B30363B2 -0263B20263B20263B20465B40364B30061B00162B10263B20060AD0062AF0162AF0162AF0162AF -005FAC0060AD0161AE0161AE005FAC0161AE0161AE005EAB005EAB005EAB0061AE005FAC0262AE -0060B00061B0005FAE0061B00162B10162B10061B00162B10061B00062B10162B10162B10162B1 -0162B10061B00263B20060AF0364B3005FAE0061B0005FAE0061B00263B20060AF0061B00162B1 -0060AF005EAD005EAD0060AF005EAD005EAE005EAD0162B10062B10061B10062AD0062AF0162AF -005FAC0061AE0061AE0161AE0161AE0161AE0161AE005EAB0161AE005EAB005FAC005EAB0161AE -0161AE0161AE0061AE0061AE0060AD0162AF0062AF0162AF005FAC0161AE005FAC0161AE0161AE -0161AD005DAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005DAD005DAD005FAF -005CAC005FAF005CAC0060B0005EAE005DAD005EAE005EAE005EAE005EAE005DAD005EAE0060B0 -005EAE005DAD005EAE005CAC005EAE005EAE005EAE0060B0005EAE005DAD005DAD005DAD005DAD -005CAC005DAD0060B0005CAC005CAC005CAC0060B0005EAE005DAC015EAC015EAB015EAB015EAB -015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB005BA8005DAA005BA8015EAB0360AD -015DAA005FAF005FAF005FAF005FAF005FAF005DAD005CAC005DAD005CAC005CAC005DAD005CAC -005DAD005DAD005FAF005CAC005EAE005FAF005FAF005CAC005EAE005FAF0160B0005FAF005CAC -005EAE005EAE005EAE005BAB005CAC005FAF005DAD005FAF005FAF005FAF005FAF005DAD005EAE -005DAD005DAD005DAD005EAE005EAE005DAD005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005EAE005FAF005FAF005FAF005FAF005EAE005FAF005FAF005EAE005DAD -005EAE005FAF005FAF005FAF005EAE005EAE005DAC005BB2005EB3005CAC0061AB0060B2005DB2 -0060B4005DB1005EB3005EB3005DAD005FAF005DAD005EAE005DAD005DAD005FAF005EAF005FAF -005CAD005DAE005CAD005FAF005EAF005FAF005CAD005EAE005EAD005DAE005DAE005DAE005DAE -005DAE005DAE005DAD005DAD005DAC015FAF005EAD005CAD005DAE005DAE005DAE005DAE005DAE -005DAE005DAE005DAE005DAE005DAE005DAE005CAD005FAF005FAF005FAF005FAF005FAF005FAF -015CAA015DAC015DAC015EAC015EAC015EAC015DA9015DAA015DAA015DAA015DAA015CAA005FAA -005FAA005FAA005FAA005FAA005FAA015CAA015DAA015DAA015DAA015DAA015EAB015EAB015EAB -015EAB015EAB005EA9005EA9005DA9005FAB005FAB005EAB005CA9055EAC0A60AC085EAC065BA9 -0960AF0163B10263B10262B10263B20263B20263B20162B10162B10163B20163B20162B10162B1 -0162B10263B20061B00061B00061B00061B00162AE0062AF0062AF0062AF0061AE005FAC0161AE -0161AE0060AD0161AE0161AE005FAC0060AD0060AD005FAC0160AC005FAC0262B00060B00061B0 -0060AF0162B10162B10162B10160AF0162B10060AF0162B10161B10161B00062B10162B00061B0 -0162B00365B30060AF0061AF0060B00061B00061B00061B0005FAD0162B10061AF005EAD0060AF -0060AE0060AE0060AE0060AF005FAE0060AF0060AF0060AD0060AD0060AD0060AD0061AE0061AE -0061AE0161AE0161AD0161AE005EAB0161AE005EAB0060AC005EAB0161AD0161AE0061AE0060AE -0061AE0060AD0060AD0060AD0060AD0160AD0161AD0161AD0161AD0161AE0161AC005DAF005FAE -005FAE005EAF005EAE005FAE005FAE005FAF005EAF005EAF005EAF005FAF005FAE005FAE005EAE -005EAE005FAE005FAE005EAE005FAE005FAE005FAE005FAE005FAE005FAF005CAC005FAF005FAF -005BAB005FAF005CAC005EAE005EAE005EAE005EAE005CAC005FAF005BAB005FAF005CAC005EAE -005EAE005EAE005EAE005EAE005CAC005DAD0061B1005CAC005EAE005CAC0061B1005DAD005CAC -005EAE005EAE005EAE005CAC005DAE0061B0015CAA015EAB015EAB015EAB015EAB015EAB015EAB -015EAB015EAB015EAB015EAB015EAB005BA8005DAA005BA8025FAC005BA8025FAC005FAF005FAF -005FAF005FAF005FAF025DAD025DAD025DAD025FAF025EAE025EAE005FAF005FAF005DAD005FAF -005CAC005EAE005FAF005FAF005CAC005EAE005FAF0160B0005FAF005CAC005EAE005EAE005EAE -005BAB005CAC005FAF005DAD005FAF005FAF005FAF005EAE005CAC005EAE005DAD005CAC005CAC -005EAE005EAE005DAD005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005EAE005CAC005CAC005FAF005DAF -005FAF005DAE005FAF005DAC0059B1005EB4005CAC0262AA0060B7005DB70062BA005DB50062BC -005EB6005DAD005FAF005EAE005EAE005CAC005EAE005FAF005DAF005FAF005CAE005CAE005CAE -0061AF005EAF005FAF005CAE005EAE005EAC005CAE005CAE005CAE005CAE005CAE005CAE005EAD -005DAD005EAD005CAD005EAD005EAF005CAE005CAE005CAE005CAE005CAE005CAE005CAE005CAE -005CAE005CAE005CAE005CAE005FAF005EAF005FAF005FAF005FAF005FAF015CAA015CAC015CAC -015EAC015EAC015EAC015CA9015CA9015CA9015CA9015CA9015CA9005FA9005FA9005FA9005FA9 -005FA9005FA9015CA9015CA9015CA9015CA9015CA9015EAB015EAB015EAB015EAB015EAB005EA8 -005EA8005DA9005FAB005FAB005EAB005CA9025FAA0462AD0360AC0564AD025FAB0061B10061AF -0061B00263B20261B10263B00061B00061B00061B00061AF0060B00060B00061B10263B20062AF -005FAE005FAE0060AF0062AF0162AF0061AF0061AF0060AD0060AC015FAD0061AE0263AE0262AF -0060AF005EAB0060AD0060AD0060AC015FAD0060AC0262B1005FAF005FAF0060AF0162B00160B1 -0162B00060AF0061B10060AE0061B10061B1005FAF0161B10060B00162B10162B10060AF0263B2 -005FAE0060AE005FAE005FAF0061AF005EAC0062B10061B0005EAD0060AF0060AE0060AD0060AE -005FAE005EAE005EAE0060AE005EAB005EAB005EAB0061AD0061AD005FAE0061AB0061AD005FAC -0060AD005EAB0160AD005EAB005FAC005EAB0061AD0061AD0060AE0060AD0061AE0061AC0060AC -005FAD005FAC0060AE0061AD005FAD0061AC0061AE0160AD005EAF005FAE005FAE005EAE005EAD -005DAD005FAE005FAF005EAE005EAE005EAE005DAF005FAD005FAD005EAD005EAD005DAE005DAE -005EAE005FAE005DAE005DAE005FAE005FAE005EAF005CAC005FAF005CAD0060B0005EAC005DAD -005EAD005EAE005EAE005EAE005CAC005DAD005FAF005DAD005DAD005EAE005EAE005CAC005EAE -005CAC0060B0005DAD005DAD005DAD005EAE005DAD005DAD005DAD0060B0005CAE005CAE005CAE -0060B0005DAE005CAC015EAA015EAB015EAB015EAB015EAB015EAB015CAB015CAB015CAB015CAB -015CAB015EAB005BA8005CA9005BA8015EAB0360AD015DAA005FAF005FAF005EAE005EAE005EAE -0060B0005FAF0060B0005EAE005FAF005EAE0160B00160B0005DAD005CAC005EAE005EAE005CAC -005CAC005EAE005EAE005CAC005CAC005CAC005EAE005EAE005EAE005EAE005EAE005CAC005DAD -005FAF005DAD005CAC005CAC005EAE005EAE005DAD005FAF005FAF005FAF005DAD005EAE005DAD -005FAF005FAF005FAF005DAD005CAC005CAC005CAC005CAC005CAC005EAE005EAE005EAE005DAD -005CAC005CAC005CAC005CAC005CAC005CAC005FAF005DAF005FAC0060AB0060AB005FAA005EAA -005BAC005FB0005CAC005EAE005DAD005BAB0060AF005BAA0060AF005AA90060AF005BAB005BAB -005BAB005CAC0060B0005CAC0060AB0060AB0060AB005EAA005FAA005FAC005BA80460AD005BA8 -005EAB015EAE015CAF0060AD0060AB0060AD005EAA005FAA005FAA005FAA005FAA005DAA0060AA -005CA80060AB005DAA005FAA005EAA0060AD0060AB0060AB0060AB0060AB0060AB0060AB0060AB -0060AB0060AB0060AC005DA9005FAA005FAA005FAA005FAC005FAC005FAC005CA9005DA9005CA9 -005FAC005FAC005EAB0060AD0060AD0060AD005DAB005FAC005FAC005FAC005FAC005FAC005FAC -005FAC005FAC005FAC005FAC005CA9005CA9015EAA015DAA015DAA015EAB015EAB015EAB005BA8 -005BA8005BA8005CA90163B10B63B41064AE0461A9016AB70065B80060C00061B70064A90064AB -0060B50263B80660B9075FAF0464AB0067B80065C50068B8025FAC035FB80062C20061BE0461AE -0361AC055CA20E60A40D5EA40A61AD015CAE0064B3005DA90A52B10267BF0062A919549F025FAB -035DAC035FAC0060B3005FB6005EB30362AE0362A90564A80163A90063AD0063B90663AF0E60A1 -0066BF0466AE0462A1036CBF095EAD0066C6125DAA065DB60061C0085CA80063BF0062B30163AA -0262AB0060B1005FB9005FBE0060B70061B0005EB0005EB4005DB7005DB3005FAD0261A7015FAA -005EB70063AF0062B20061B3005FB10061B20063B011609D0361AD0063BA0460B1075FAE0760B4 -0061B5045EAF035EB60061C10160B60F5D9F0162A7055FAA075CB0075DB00261AD0063A60061AE -0063B30061B80060B6025EAE065DA5005FAE0459B60658B60060AC0064B6005FC4035BB1025EAE -015FAA0460A9045FAB0460AC025CB7005DB7005DB70060B80060B50060B4005EB3005DB20261B4 -0060B2005EB3005CB0035DB2015EAF005CAB005DAC025DAF045DB1005BB2015CAF015BAB025DAA -015DAC005FB0005DAC005FAF005DAD005DAD005EAE005CAD005FAF005CAC005FAF005CAC005EAE -005EAE005EAE005EAE005EAE005EAE005EAE005CAE005FAA005FAA005FAA005DAA005FAA005FAC -015CA9015EAB015EAB015EAB015EAB015CAB005FAB005FAB005FAB005FAB005FAB005FAB015DAB -015EAB015EAB015EAB005CA9015EAB005FAF005FAF005DAD005BAB005BAB005DAD005DAD005CAC -005FAF005EAE005EAE0160B00160B0005DAD005EAE005DAD005EAE005DAD005EAE005EAE005EAE -005EAE005EAE005EAE005DAD005EAE005EAE005EAE005EAE005CAC005EAE005FAF005DAD005EAE -005EAE005DAD005DAD005EAE005FAF005FAF005FAF005DAD005EAE005DAD005FAF005FAF005FAF -005DAD005DAD005EAE005EAE005EAE005EAE005CAC005BAB005BAB005EAE005EAE005EAE005EAE -005EAE005EAE005CAC005FAF005DAF005FAC0060AD0060AD005EAB005FAD005DAE005EAD005DAD -005EAE005CAD005EAD005EAE005DAD005DAD005DAD005DAD005DAD005DAD005DAD005EAE005EAE -005DAE0060AB0060AD0060AD005DAA005FAC005EAB025FAB005BA8025FAD005CAB015EAE015CAF -005EAC005EAB005EAB005EAB005FAC005FAC005FA9005FAA005EAA005FAB005FAB005FAA005EAC -005FAC005DAA0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD -005DAA005FAC005FAC005FAC005FAC005FAC005EAB005EAB005EAB005EAB005EAB005FAC005DAA -0060AD0060AD0060AD005DAA005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC -005FAC005EAB005CAA005EAD005EAD005EAD005DAC005EAC005EAC005CAB005EAC005EAC005DAC -0060B00061AC0060A80662AF0561B0005BA5015FB0015EAE0161A90161AC005FB00160AF025EB0 -035FAC025FAB005EAD0062B30061AA0660A9025BAA0060B2015FB0035FAE0061B5005FB30060B2 -0262B2005CAD005BAC0060B0035EA80B59AA0361B10062AE0859AA015FAE025CAB025DAB005EAC -005EAC005FAC0161AE005FAB005FAA0160AC005FAC005FB10360AE045EA80061B70462AE035BA2 -0063B40063AD0061B1015FA40262AC0064B40061A8005FAE0060AD0061AB0060AC005FAB005EAD -015EAF015FAD0160AB015FAC015EAE015FAE015EAC015FAC0160AC005FAC005EAD005EAC005EAB -005EAD005FAE005FAD005FAD0460BD0060BC005EB7005EAD0164AC0168AC015BA9065DAC065CAA -035EB1005DB0025DAC005FB3005FB2015FAD025EAD0060AE0060AD005DAB005FAC005FAE005EAE -015FAD025DAB005EAD035BAF045CAF005FAC0060AF015BB2025CAD015EAD0260AD005FAC005EAE -005DAC015DB0015EB1005DB0005EAE015DAD015EAC015DAC015DAC025FAE015EAE015DAE015EAE -005DAD015DAD005CAB015EAC005CAB015EAE005DB0005EB1005EB0005EAE005EAE005DAC005FAF -005DAD015FAE005CAB005DAC005CAB005DAC0160AF005DAB005DAC005DAC005DAC005EAC005DAC -005EAB005EAC005EAC005DAC005FAA005FAB005EAB005EAB005EAB005EAB015DAA015EAB015EAB -015EAB015EAB015CAB005FAB005FAB005FAB005FAB005FAB005FAB015CAB015EAB015EAB015EAB -015EAB015EAB005FAF005FAF005EAE005EAE005EAE015EAE005EAE005EAE0060B0005FAF005FAF -0160B00160B0005DAD005BAB0060B0005DAD005FAF005BAB005EAE005EAE005EAE005EAE005CAC -0060B0005DAD005EAE005EAE005DAD0160B0005AAA015EAE005DAD005EAE005DAD005EAE005EAE -005CAC005EAE005FAF005FAF005DAD005EAE005EAE005DAD005EAE005FAF005EAE005EAE005CAC -005EAE005EAE005EAE005CAC005FAF005EAE005DAE005EAE005EAE005EAE005EAE005EAE005DAD -005DAD005CAE005FAC005EAB005EAB005FAB005EAC0060B0005CAC005EAE005DAD005CAC005FAF -005BAB005FAF005CAC0060B0005CAC005FAF005EAE005EAE005FAF005BAB005FAF0060AB0060AD -0060AD005DAA005FAC005EAB015EAB005DAA015EAC005CAB015EAE015DAF005DAA005DA9005CA9 -005FAC005FAC005FAC005FA9005FAB005FAB005DA90061AD005DA9005FAC005FAC005DAA0060AD -0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD005DAA005FAC005FAC -005FAC005EAB005EAB005DAA0060AD005FAC0060AD005DAA005EAB005BA8005BAB005EAC0060AD -005DAA005EAB005EAB005FAC005FAC005FAC005EAB005EAB005EAB005FAC005FAC005EAA005CAA -005FAF005FAF005FAF005DAE005EAE005EAE005CAC005FAF005FAF005FAF005DAD005CAC005DAE -005DAE005DAD005FB0005DAC005EAE005DAE005DAE005DAD005DAD005DAD005DAE005DAE005DAD -005DAC005EAB005EAB005DAA005AA8005DAE005FAF005CAB005CAC005CAC005FAF005CAC005CAC -005DAD005FAF005FAF005DAD005EAF005FAF0060B1005CAC005CAC0060AE0060AD0060AD005EAB -005EAC005EAC015FAC015DAA015DAA005DAB005CAD015DAD005DAD005CA9005BA8005DAA005EAB -005EAC005EAA005EAA005EAB005DA80060AC0060AC005DAA005FAC005FAB005EAB0060AD0060AD -0060AD0060AC0060AC0060AD0060AD0060AD0060AD0060AD005FAB005DAA005FAB005EAB005EAB -005FAE005FAE005FAD005CAE005BAD005BAB005BAA0061B10263B5015AA9045FAE015CAD005DB2 -005FB3005EB5005FB0005EAD005FAF005FAF005CAC005DAE005FAF005FAF005FAF005DAE005DAE -005EAD005FAF005EAF005FAF005CAB005EAE005FAF005FAF005FAF005FAF005FAF005EAD005DAD -005CAB005BAB005BAB005EAE005EAF005CAC005EAE005DAD005DAD005FAF005CAC005EAE005EAE -005EAE005EAE005CAC005EAD005FAF005FAE005FAF005FAF005DAD005CAC005CAC0360AF005CAA -005DAB005CAA005EAB025FAD015DA9005BA8005BA8005BA8015EAA025FAC005DA9005CA8005CA8 -005FAB005FAB005FAB005CA9005BA8005BA8015EAB015EAB015EAB015EAB015EAB015EAB015CAB -005FAB005FAB005FAB005FAB005FAB005FAB015DAB015EAB015EAB015EAB015EAB015EAB005FAF -005FAF005FAF005FAF005FAF005DAD005CAC005CAC005EAE005EAE005EAE0160B00160B0005EAE -005FAF005DAD005FAF005CAC005FAF005DAD005EAE005EAE005DAD005EAE005DAD005FAF005DAD -005DAD005DAD005DAD005DAD005EAE005EAE005DAD005DAD005FAF005EAF005CAC005DAE005FAF -005FAF005DAD005EAE005EAE005CAC005DAD005FAF005FAF005EAF005CAC005DAE005DAD005DAD -005EAE005CAD005EAF005DAD005DAD005DAD005DAD005DAD005DAD005EAE005DAD005DAE005FAB -005DAA0056A60055A8005EAC005FB0005DAD0056A90053A9005AAC005FAF005BAB005AAB0053A8 -005CAF005CAC005FAF005FAF005FAF005EAE005CAC005EAF0060AB005FAC005FAC005DAA005FAC -005FAC015DAA015EAB005DAB005DAC015EAE005DAF005DAA005DAA005DAA005EAB005FAC005FAC -005FA9005FAB005EAA005CA80059A80053A30055A70059AA005DAA005FAC005FAC005FAC0060AD -0060AD0060AD005FAC005FAC005FAC0060AD0060AD005DAA005FAC005FAC005EAB005EAB005EAB -005EAB0060AD0060AD0060AD005EAB005BA90B6EB83980BC1869AE005EAC005EAB005EAB005EAB -005EAB005FAC005EAB005EAB005EAB005EAB005DAA0056A60053A50052A50055A90056AA005CAE -005DAD005EAE005CAC0054A80057AC005DAF005FAF005DAE005DAD005EAE005EAD005EAD005EAE -0060B0005DAB005EAD005EAD005DAD005DAD005DAD005DAD005EAE005DAE0056A80057A7005BA9 -0262B0297EBD3273B2005AAD005FAF005FAF005FAF005FAF005FAF005FAF005FAF005CAC005CAC -005FAF005FAF005FAF005DAD005FAF005FAF005DAC005DAA0056A50056A8005DAB005FAC015DAA -015EAB015EA9005DAB025FAF015EAC005CAD005FAB0060AD005FAC005FAC005FAC005FAA005FAB -005FAB005FAB0060AC005DA9005BA80056A70055A60055A7005AA9005DAA005EAB005FAC005FAC -005EAB005DAA005DAA005EAB0060AD005FAC005DAA005FAC005FAC005FAB005DAD005CAC005EAE -005DAC005CAC005DAE005CB00261B10060AF025FAE015CAA055EAD025BA8055DAB055BA8015CAB -005FAF005DAD005CAC005EAE005DAD005FAF005FAF005FAF005DAD005EAE005DAD005FAF005FAF -005FAF005EAE005EAE005CAC005CAC005CAC005CAC005CAC005CAC005EAE005EAE005EAE005EAE -005DAD005DAD005EAE005DAD005EAE005EAE005CAC005EAE005EAE005EAE005EAE005EAE005EAE -005EAE005CAC005FAF005FAF005FAF005FAF005FAF005FAF005DAB015EAC015EAC015EAC015EAC -005CAC015EAA015EAB015EAB015EAB015EAB015CA9005FAB005FAB005FAB005FAB005FAB005FAB -015DAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB005CA8005CA9005CA8 -005FAB005FAB005FAB005BA8005CA9005BA8015EAB015EAB015EAB005FAF005FAF005FAF005FAF -005FAF005EAE005EAE005EAE005DAD005DAD005DAD005EAE005FAF005DAD005DAD005EAE005DAD -005EAE005CAC005EAE005CAC005DAE005DAE005CAC005FAF005DAD005DAE005EAE005DAE005FAF -005CAC005DAD005DAE005DAD005DAD0060AE005FAD005EAD005FAD005FAD005FAD005DAE005EAE -005EAE005EAE005EAE005FAF005FAF005FAF005FAD005FAE005FAD005FAD005FAD0060AF005FAE -005FAD005FAD005FAD005DAE005DAE005EAD005EAD005EAF005DB0005DAB0769B463AADB91ACC5 -0554A9005EAE0057A8419EDC8DB9D1416AB3005BAD005AAA1A86CF94B3D44379B20059AC005FAF -005FAF005EAE005DAD005FAF005DAE0056A4004FA4005AA9005FAC005FAC005FAC015CA9015EAB -005CAB025FAD025FAE005CAE005DAA0060AC0060AD005DAA005FAC005FAC005FA9005FAB005CA7 -005CB24A9CCF7FB0D47FAFD44A83B6025DA9005DAB005EAB005DAA005FAC005FAC005FAC005DAA -005EAB005DAA0060AD0060AD005DAA005FAC005FAC005DAA005FAC005FAC005FAC0060AD0060AD -0060AD0060AD0055A547BCF7FFFFFF8C97B70059AB0060AD0060AD0060AD005DAA005FAC005DAA -0060AD0060AD005EAC0566B25EA7D984B0D57FADD481B0D775A9CB2766A90054AB005CAC0567B4 -5EAADD91A3C30B56AC005FAD005FAE0060AF0060AF0060AF005FAE005DAC0052A70055AA0060B0 -005FB10060AE005FAD005EAD005EB1085EAA05559A49A2DE8FAAC82E63A81078CFEBFFFFFFD7CE -0052AB005FAF005FAF005FAF005FAF005FAF005FAF005DAD005EAE005EAE005DAD005FAF005DAD -0055A8004EA7005DAD005FAE0057A547A3DC8FA9C93268AC005DAB015DAA015EAB015EAA005DAB -025FAE015EAC005CAD005FAA0060AD005EAB005FAC005FAC005FAA005FAB005FAB005EAA0060AC -0059A90866B75DA8D384B0D67AACD03772AD005BAB005FAC005EAB005EAB005FAC005FAC005FAC -005EAB0060AD005FAC005DAA005FAC005FAC005FAB0059A9004FA70056AB005DAA005CAD005CB1 -005DB2005FB00060AD035FAC015DAC045DAD045FAC0159A7045DA9005DAC005FAF005DAD005EAE -005EAE005DAD005FAF005FAF005FAF005DAD005EAE005DAD005FAF005EAF005FAF005DAD005EAE -005EAE005EAE005EAE005EAE005EAE005EAE005EAE005DAE005DAE005DAD0261B0005FAF005BAB -005CAC005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAD005FAF -005FAF005FAF005FAF005FAF005FAF015DAB015EAC015EAC015EAC015EAC015EAC015EAA015EAB -015EAB015EAB015EAB015EAB005FAB005FAB005FAB005FAB005FAB005FAB015DAB015EAB015EAB -015EAB015EAB015EAB015EAB015EAB015EAB015EAB005EA8005EAA005CA8005FAB005FAB005FAB -005BA8005DAA005BA8015EAB015EAB015EAB005FAF005FAF005FAF005DAF005DAF005FAF005DAE -005EAE005DAD005FAF005FAF005CAC005FAF005CAC005FAF005DAE005FAF005CAC005DAD005FAD -005DAE005FAC0060AD0060AD005DAA005EAC005FAC005EAC005FAC005EAC005FAC005EAC005EAC -005FB0005EAE005DAC005EAD005EAE005EAD005EAD005EAD005CAC005EAE005EAE005EAE005DAD -005EAE005EAE005DAD005FAF005EAF005FAF005FAF005DAD005FAE005FAF005FAE005EB3005FAF -005FAC005FAB005DAE005DB4195C990F5B9D1161A60063B49BE2FFFFFFFA545DA6005CAD0048B7 -CFFFFFFFFFFFCFA6BB0056AB004EB37EDEFBFFFFF9687DAA0056AB005AAD005AAC0058AB005DAE -005BAB0055A8229FE3EBF3EA7074B10057A9005EAC005FAC005AA70059A80057A9005AAB005EAD -005CAE005DA9005CA9005DAC0059A8005BAA005EAC005FA9005FAB004E9C6CC9FDFFFFFFFFFFFF -FFFFFFFFF1E52E6FAD005AAA005AA9005CAB005EAB005CAA0059A8005BAA005FAC005AA8005CAB -005EAB0058A8005AA9005DAB005EAB005DAA0059A8005CAA005CAA005BAA005CAB0060AD0055A5 -40B4F1FFFFF98092B50056A9005BAA005EAC0060AD005CAA005BA90059A80060AD0060AD005CAA -0B71BBC7F8FFFFFFFFFFFFFFFFFFFFFFFFFFF6ECEB758AB70050A60C73CBD8FFFFFFFBDD1F4EA8 -005BAC005AAC005AAC005AAD005DAE005AAA0069C0A8D6F2C1C9CF184DAA005AAF005CAA005BA7 -005BAB005BB2005AA8004BA3A4F9FFFFFFEF726FB20674CFD9FFFFFFCDCB004EA8005AAC005BAD -005FAF005FAE005BAC005AAD005DAE005DAD0059AA0059AC005BAD005FB464BAEAEBF4E42F4AA6 -005BAA004FACA5FBFFFFFFEF7775AE005BAB005CAA005AA80058A80058AA005CAE005CAD005CAB -005BA9005CAB005CAA0059A9005AA9005DAA005FAB005FAB005EAA005DAA0467B49BD9FDFFFFFF -FFFFFFFFFFFFFFDDD20050A60059A80059A8005CA9005EAB005DAA0059A8005CAB005FAC005AA9 -0058A8005AAA005EAC0058A50076CDEEF3F2969DC00250A3005DAB005BB0005DB40056AB005BA8 -005CB0005BB50060B7005DB2005BB6005DB50059AD005AAC005AAD005DAD0059AA0058AB005BAD -005DAF005FAF005DAE005CAE005CAE005FAF005EAE005FAF005EAE005EAE005EAE005CAE005CAE -005CAE005CAE005CAE005CAE005DAD005DAD005DAD005DAD005EAD005DAD005CAE005CAE005CAE -005CAE005CAE005CAE005CAE005CAE005CAE005CAE005CAE005CAE005FAF005DAF005FAF005FAF -005FAF005FAF015DAB015CAC015CAC015EAC015EAC015EAC015CAA015CA9015CA9015CA9015CA9 -015CA9005FA9005FA9005FA9005FA9005FA9005FA9015DA9015CA9015CA9015CA9015CA9015EAB -015EAB015EAB015EAB015EAB005EA8005EA9005CA8005FAB005FAB005FAB005BA8005DAA005BA8 -015EAB005CA9015EAB005EAE005EAE005EAE005FAF005FAF005FAF005DAC005EAE005DAD005EAE -005FAF005CAC005EAE005CAC005EAE005FAF005EAE005CAC005CAC005FAF005DAF0060AB005FAC -005FAC005EAA005FAC005FAB005FAB005FAB005EAB005EAB005EAB005DA90060B0005DAD005CAC -005DAD005DAD005DAD005CAC005EAE005EAE005CAC005CAC005CAC005EAE005EAE005DAD005DAD -005FAF005FAF005EAE005EAF005CAC005EAE005EAE005FAE005CAF005CAD005DAA005EAC0160B1 -0161B5055CA7035BA80259AB0058B35FB8EDFFFFFF9F8EA90054A90073D1FFFFFFFFFFFFFFD7D1 -004EA70065C2BBF0FFF8E5DF3058A4005DB0257BBC317CBE327FBF1F68B00058AD0464B45FC6F6 -FFFFFCA998C42175B50A5EAA005AA7005FB22B7BBB327CBC317BB7085FAD0057AB0060AD257EC0 -2367AC1879BD3377B50560AB005EA9005CA7006ACDFFFFFFFFD7D5004E970057BA90B8D22671AD -0061B32F83BE2B6FAE0058A70063B02C7BBB2C74B10058AA1373B92F78B50E63B12A7BBB317DBA -1363AC005AAA0260AF2B7FBB1A5DA81875BB3380BD2D77B50057AA0055A540B4F1FFFFF97D8FB6 -006AB9397FBB1467AD005DAC005EAB1C77BC3B7FB6055BAB0060AD005CAA0A6FBABCF2FFFFFCDF -0035970051A53E9BD6FFFFFFFFF3E63E6AAC0057AA0D69B51A69B00059AB005AAD1471B9337FBF -327BBB1D60AB005CAD128BD4E2FAFFF8ECE05272B81D66AC005DAF257BC22567B1197DC23477B7 -025AA80B68B51C69B00057A51873C6D8FFFFFCC5C90169B9337FBF2D76B70055AB005AAF1A78BD -347CBC0F60AB0059AB1272BC397EBA0E5DAB0B7BC89FDEFCFFFFF66970B92170B1005AA70869B4 -196BB0005EAB005CAA005BAA1772B9337DBB337DBB2670B30054AA005AAB1374BA2F78B50E62AF -2A7BBC317CBA1363AB005BA9005FAB005EAA0057A52CA0E7FFFFFFF3BBBB00369D0670C5B4C1CA -0058AE257CBE3A75B00059A8005BA80067B63A81BB216CAE0058AC267BBA317DBB347BB70B59A6 -0062AE1498E1FFFFFFCEBFD13E7BBB105CA9005BAC0058B0267ABD317CBE337CB91366AC0058AB -005CAF247BBC246BB40E67B5337DBC3076B40052A80F70BE2E7EBE2E76B30057A80060AB005FAA -005FAA005FAC005BA70460AD015DAB005CAA015EAE015DAE005FAE0060AB0060AC005EAB005FAA -005FAA005FAA005FAA005FAA0060AC005CA8005FAA005EAC005FAA005FAA0060AD0060AB0060AB -0060AB0060AB0060AB0060AB0060AB0060AB0060AB0060AB005DAA005FAA005FAA005FAA005FAC -005FAC005FAC005DAA005CA9005CA9005FAC005FAC005FAC0060AD0060AD0060AD005EAC005FAC -005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005EAB005BA8015EAB015EAB -015EAB015EAB015EAB015EAB005BA8005BA8005BA8005DAA005DAA005CA9005CA90360AD005CA9 -005CAC005DAD005CAC005FAF005FAF005FAF005FAF005FAF005FAF005CAC005EAE005EAE005DAD -005EAE005CAC0160B0005EAE005CAC005CAC005FAF005DAF0060AB005FAC005CA9005FAC005FAC -005FAC005FAC005FAC005DAA0060AD0060AD005DAA005DAE005EAE005DAD005EAE005EAE005EAE -005CAC005FAF005FAF005CAC005CAC005CAC005EAE005EAE005CAC005FAF005FAF005FAF005CAC -005EAE005EAE005DAD005DAD005DAE005CAA005DAC005BAF005DB00161B10160AE035EAD035DAB -065DAD0053A43696D8F6FFFFDEC1C4004AA329A7EBFFFFFFEEF5FBFFFFEC2943A20081CEE4FDFF -DFC1C30046AD5CBBE7FFFFFFFFFFFFFFFFFFF6DEE23B67A742BDFAFFFFFFFFFFFFFFFFFFFFFFED -4B61A20065BBA4D6FAFFFFFFFFFFFFFFFFFCB3B1C5025AA70971BCD0FFFFFEDBE2EAFFFFFFFFEC -3670AC005CA9005DA70058C4F6FFFFFCEAE77390B70047A00050A60057A62280DAFFFFFFF1BABD -004EA30D85D0F7FFFFF7D5CB0046A96FD5FBFFFFF8CFD6F0FFFFFFFFFFFFDFC3D20B5BA61276CB -EDFFFFE7CAE0EEFFFFFFFFFFFFFFFA757DAE004FA340B4F1FFFFF97889B327ADF4FFFFFFA6A3BE -0053A7076EBFC9FFFFFFF7DC024FA7005EAD005BAA0A70BBBCF2FFFFFEE2174CA4005BAC0048A0 -55CAFFFFFFFDA586B5006BBCCDFFFFFFF3DA0047A81F88D0D0F7FDFFFFFFFFFFFFFCCBCD0F68BC -DBFFFFFFFFFFFFFFFFFFFFFFD49FB80069BED0FFFFFDDAE3EAFFFFFFFFEC2660A395EFFFFFFFEC -336BA90D70C5D7FFFFFADFE8EAFFFFFFFFFFFFFFF9757BAC0047B69AEFFFFFFFF75C72A5004EA6 -6FD7FFFFFFF55E6CA89CF4FFFFFFFFFFFFFFFFFFFFFBD2D4094F9D97F2FFFFFFEC3572AD005DAE -56A9DFE0FBFFFFFFFFFFFFFFFFF5F0777EAC004BAB73D4FBFFFFF8CFD4EFFFFFFFFFFFFFDFC4D2 -1664AA005DAA005FAB0057A4258DDFFFFFFFF3DDD9366EAD004AA2004FA50872C4C6FBFFFFFFE5 -0A49A50052A73EB6F0FFFFFF908FBA309FD9FFFFFFFFFFFFFFFFFFA893AF2C92DAFFFFFFFFFFFF -FFFFFFFFFFFF7B69A3005FB657ABE6FFFFFFFFFFFFFFFFFFD7CBD22667AA0048B0CAFFFFFFE6F0 -D2E8FEFFFFFFFFFFF790B3DBD6F7FFFFFFFFFFFFF9777FB0005BAB005EAB005FAC005FAC025FAC -005BA8015EAB005DAB015EAE015DAE005EAD005EAB005EAB005EAB005FAC005FAC005FAA005FAA -005FAA005FAB005FAB005FAA005EAC005FAC005EAB0060AD0060AD0060AD0060AD0060AD0060AD -0060AD0060AD0060AD0060AD0060AD005DAA005FAC005FAC005FAC005FAC005FAC005FAC005EAB -005EAB005EAB005EAB005FAC005EAB0060AD0060AD0060AD005EAB005FAC005FAC005FAC005FAC -005FAC005FAC005FAC005FAC005FAC005FAC005EAB005BA8015EAB015EAB015EAB015EAB015EAB -015EAB005BA8005DAA005DAA005DAA005DAA005BA8015EAB005EAB005EAB005DAD005EAE005CAC -005FAF005FAF005FAF005FAF005FAF005FAF005CAC005EAE005EAE005EAE005EAE005CAC005EAE -005EAE005CAC005CAC005FAF005DAF0060AB0060AD005DAA005FAB005FAB005FAB005FAB005FAB -005DAA0060AD0060AD005DAA005DAE005DAD005EAE005EAE005EAE005EAE005CAC005FAF005FAF -005DAD005DAD005DAD005DAD005EAE005CAC005FAF005FAF005FAF005CAC005EAE005EAE005EAE -005EAE005EAD005CA8005DAD005BB2005EB2005EAE0061AC0360AE015DAD035FAF0059A80076C8 -DDF8FFECDED10B3BAD77DBF8FAEAEEA6BEE5FFFFFC5252A12B99DDFDFFFFA18CA7004FB56BBAE0 -6F82BB0662AD29A1D9FFFFFFB4A9C00A5DAF5BC3F4FFFFFAA497C32175B40052A844BBF0FFFFF7 -628AB1005CA969B9F4FFFFF57874AF006CB8BCF0FFFFFFFFB7A1C12A78B60860A9005EAA005FAA -0050A788CFFCFFFFFFFFFFFDDADBE4627CAC004FA31C7DD6F3FFFFDEB2BB004FA50A81CDE4FDFF -E4CBC70046A963CAF3FFFFFFEED8DC3A72BDABF1FFFFFFFC978BB1016EC6D5FFFFFFFFFF9184B5 -4AA9E7F9FFFFF7E3DC20549F39B2F1FFFFF87E8FB10052C4F6FFFFE6C8D11057A1178ADBFFFFFF -D0A5BA0055AA025EAD005BAA0B71BDBCF2FFFFFEE2174DA5005DAE0055A72399E5FFFFFFD4ACBB -0067BBBCF4FFFFE7D5004AAD6FC2F2FFFFF54F5AAE258ACEF4FDE5274EA80C89D3DCF6FFF2E7DE -5175BA1B64AB046BBBBCF0FFFFFFFFB79FC12A75B70052A58DE7FFFFF6E92B6AAB0B71C7D5FFFF -FFFFFF9183B64AA8E7F9FFFFF7E2DA194DB186E2F9FFF4F1546FA6004EA665CDFFFFFFF06173AD -0179C59BDAFAFFFFF46670B62171B2004EA08EE7FFFFF4E62B6CA90F71CDE1FFFFFFF5E1446DB8 -509FE1FEFFFFF7E4DB1C51A660C7F3FFFFFFEEE7E33A78BFAAEFFFFFFFEE5A76B0005AA9005FAB -005CA80668BBC3E9FFFFFFFFFEF5F7CFD0D7365EA50054AF68BBEEFFFFFF7B6E9C0054B8A0E5FC -FFF2E83668B8ACF0FFF7E7DA345EAD3C9FDCECE2D21956AB1198E0FFFFFFC8BED23D77B80958AA -2495DAFFFFFF9AA2B7005CAD2C8BDBFFFFFFB3A7C10040ADB4FCFFFFFFFFD6B3C8328BD5E0FFFF -FFFFFFB59ABF49A4E5F7FFFFE6C9C80054A9005EAB005FAC005FAC015EAB005DAA015EAB005CAA -005CAE015EAE005CAC005CA9005CA9005FAC005FAC005FAC005FAA005FAB005FAB005DA90061AD -005EAA005FAB005FAC005EAB0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD -0060AD0060AD005DAA005FAC005FAC005FAC005DAA005DAA005DAA0060AD005FAC0060AD005EAB -005DAA005DAA0060AD0060AD0060AD005EAB005DAA005DAA005FAC005FAC005FAC005DAA005DAA -005DAA005FAC005FAC005EAB005BA8015EAB015EAB015EAB015EAB015EAB015EAB005BA8005BA8 -005BA8005DAA005DAA005BA8025FAC005BA8025FAC005DAD005EAE005EAE005BAB005BAB005BAB -005EAE005CAC005CAC0360B0025FAF005DAD005BAB005BAB005DAD005AAA005DAD005EAE005EAE -005EAE005CAC005FAF005EAF005BAC005EAE005CAE005CAE005CAE005CAE005DAE005CAE005CAE -005CAE005FAF005EAE005BAB005DAD005EAE005EAE005EAE005EAE005CAC005FAF005FAF005FAF -005CAC005EAE005CAC005FAF005FAF005FAF005CAC005EAE005EAE005BAB005BAB005BAB0060AE -005BAB005FB0005CAD005EAE005DAD005BAC0060B0005CAC005FAE0058B8A0E6FBFFF4F14B7FBA -B5F0FFDEBFC42F89D7F5FFFFB19AB646AEEAFFFFFA565CA40055AC0079C7C7F2FFFFFFFFFFFFFF -FFFFFDBEAFC500489E26AFF1FFFFF98B78B20054A60063BFB7EEFBFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFC59DB80069B7BCF4FFFFE3D10047A3005CAA005CA9005FAB005FAB005EA90054A51B8AD0 -BDE1F1FFFFFFFFFFFA8180AF0D77D4F3FFFFDEB2BB004FA40A81CDE4FDFFE4CBC70046A964CCF5 -FFFAF35D79A7004A9F1891DFFFFFFFDEB2B90069C5D9FFFFFFC4C20048A20058B8A7E8FBFFF6F3 -4F6B9D35B0F2FFFFF88091B400469B74DBFFFFFFED3B6AA970D6FFFFFFEB5070AE005BAC025FAD -005BAA0B71BDBCF2FFFFFEE2174DA5005DAE0055A7239AE5FFFFFFD4ACBB0067BBBCF4FFFFE7D6 -004BAC52B2E8FFFFFFFFF6F5989BC41C5BA90054A9006DC4D1F3FFEFE3D51E49A60058AB0A70BC -BCF5FFFFE3D20045A50059AC004DA38FE8FFFFF5E62B6AAB0C71C8D9FFFFFFC5C30046A20057B9 -A7E8FBFFF5F14764AF82E0F9FFF4F15470A6004EA565CDFFFFFFF06575B0005BB17CCFF9FFFFF1 -3A46A1005CAA004EA08FE7FFFFF4E62866A52BB5F3FFFFFFA28AB30054A60046B080E0F6FFF6F2 -4B68A45CC8F5FFFBF35D77A6004A9F23ACEFFFFFFB947DB4005AA9005FAB005FAB005BA70058AB -409EDBE5F6FAFFFFFFFFFFF02C4F9D0987D1EBFFFFDDBEC10D81CEEDFFFFDAC0C10053B683D6F6 -FFFFFFFFE8EB7786BC0057A50055A4007CD6FFFFFFBAACC5024FA8005CB371C5F1FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFE6C9D2024BADB4FFFFFFDEDB125EA60069BAB8F2FFFFE2D10044A3006AC3 -CFF2FFF2E7D8284EA5005FAC005FAC005FAC015DAA015EAB005DAA025FAC025FAF015CAE005EAB -005FAC0060AD005EAB005FAC005FAC005FAA005FAB005EAA0060AC0060AC005DA9005FAA005FAC -005FAC005DAA005DAA005DAA0060AD005FAC0060AD005EAB005DAA005DAA0060AD0060AD005DAA -005FAC005FAC005EAB0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD -0060AD0060AD0060AD0060AD0060AD005EAB005FAC005EAB0060AD0060AD0060AD005EAB005FAC -005EAB005BA8015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB005BA8005DAA -005BA8005DAA015EAB005CA9005EAE005EAE005DAD005DAD005DAD005DAD005DAD005EAE005CAC -015EAE005DAD005DAD005CAC005DAD005DAD005BAB005EAE005EAE005EAE005EAE005CAC005FAF -005FAF005CAC005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005CAC005FAF005CAC -005FAF005CAC005EAE005EAE005EAE005EAE005CAC005FAF005FAF005FAF005CAC005EAE005CAC -005FAF005FAF005FAF005CAC005EAE005DAD005DAD005DAD005DAD005DAD005EAE005EAD005DAD -005EAE005CAD005EAD005EAE005DAD005DAC0051A93EB2EDFFFFF498BADBE6FFFFB196AB0071C9 -DFF7FFD8D6D594D0FDFFE8D7004AA60060C0BBF3FFFFFBF4A1ADCE63BAE9FFFFFFBCAFC5024AA0 -2CB2F2FFFFF98C7AB40057A70063BDB1EBFCFFF6F196ADD179AED67DACD275AAD14F75AF006DB8 -BCF4FFFFE7D60050A60060AC005DA9005FAB005FAB005AA60054A60055A50057A25DA7EDFCFFFF -F3C0BE0471D3F4FFFFD9AEB9004EA3027CCBE0FBFFE4CBC70046A964CCF5FFFBF4627CA90051A3 -1F93E0FFFFFFDDB2B8006BC6D8FFFFFFC6C4004CA4005DBBAAE9FBFFF5F34E6B9D35B0F2FFFFF8 -8090B4004FA22296E4FFFFFFCC9DCAB5FFFFF6D2D61A63A7005CAB005DAB005BAA0A6FBBBCF2FF -FFFEE2174DA5005CAD00489F55C8FFFFFFFDA587B7006ABCBCF4FFFFE8D7004AA40058B23D9CD2 -B3CFEEFFFFFFFFF8E62255A3006FC6D3F4FFF0E3D7224DA8005BAC0A70BEBCF5FFFFE7D7004DA8 -005EAE004DA38FE7FFFFF5E62B6CAC0C73CAD9FFFFFFC8C8004EA8005CBBAAE9FBFFF4F14664B0 -84E2FAFFF2F14D6FA50049A05AC6FEFFFFF06573AE005DB180D0FAFFFFF13D48A4005EAB0051A3 -8FE7FFFFF4E62866A528B1F1FFFFFC9884B40058A80054B799E5F9FFF4F14A68A45CC8F5FFFDF5 -6A81AC0050A330B2F2FFFFFA8F7DB3005AA9005FAB005FAB0057A50055A60052A40065B589C9F4 -FFFFFFA891A60058BCB5EFFDFFECEEA2BADFFBFFFF8F7FA80054A5005BB979B5DABEDCF5FFFFFF -E0C6C81355A2007FD8FFFFFFBAADC60953AA005DB46CC2F1FFFFFFABADD076ADD77FAFD676A9D3 -5D89BC004AAEB7FFFFFFE3DE2366AA036EBDBCF4FFFFE8D80049A30071C6D3F5FFF1E4D62450A6 -005FAC005FAC005FAC015DAA015EAB005DAA025FAB025FAF015CAE005EAB005FAB0060AD005EAB -005FAC005FAC005FAA005FAB005EAA0060AC0060AC005DA9005FAB005FAC005FAC005FAC005FAC -005FAC005EAB005EAB005EAB005EAB005FAC005FAC0060AD0060AD005DAA005FAC005FAC005FAC -005EAB005EAB005EAB0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD -0060AD0060AD005EAB005FAC005EAB0060AD0060AD0060AD005EAB005FAC005EAB005BA8015EAB -015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB005BA8005DAA005BA8015EAB015EAB -015EAB005CAC005CAC005CAC005FAF005EAE005FAF005CAC005DAD005CAC015EAE005CAC005AAA -005DAD005CAC005DAD005BAB005EAE005EAE005CAC005EAE005CAC005FAF005FAF005CAC005EAE -005CAC005CAC005CAC005EAE005CAC005EAE005EAE005EAE005BAB005EAE005FAF005CAC005CAC -005CAC005DAD005EAE005CAC005FAF005FAF005FAF005CAC005EAE005CAC005FAF005FAF005FAF -005CAC005DAD005CAC005FAF005EAE005FAF005CAC0060B0005CAC005EAE005CAC005CAC005FAF -005BAB005FAF005CAC005AAA0087DBFFFFFFF5F8FCFFFFFF756BA10051BB9FE8FAFFFDF1E9F3FF -EBBCBF004FA70073C8DFF7FFEDE5D1003C960197EAFFFFFFBCAFC502499F30BAF4FFFFFFA588B0 -0045A00051B8A0EDFCFFFDF27773A5003A9A004DB37DBCD44670AF006DB8BCF4FFFFE7D60050A6 -0060AC005DA9005FAB005AA6007FD2B4C2CD08529C003F973D9AE7FFFFFFF1BCBC006FCAE4FFFF -FFD6CA003CA445AFE7FFFFFFE0C9C70046A963CAF3FFFFFFBBADC0003DA168D0FFFFFFFEA484B1 -0370C7D6FFFFFFFFF2384A960079D4DDFDFFFAEDDE2A4D9F38B3F2FFFFF88091B40055A7056ABC -B6F0FFFFF7FAFFFFFDB3A9C10357A8005CAA005CAA005AA9096DB9BCF3FFFFFCDE00389A0053A8 -1B9CD7FFFFFFFFF5E83C6AAC006DBCBCF4FFFFE6D50053B261B7D85E77A5003FAB54B0E8FFFFFF -967EA10071C9DCF7FFF6E6DE214B9F0052AA0A71BEBCF4FFFFE7D7004FA9005FAF004FA48FE7FF -FFF5E62B6CAC0C73CAD6FFFFFFFFF2384B9B0078D4DDFCFFFBEDDE2548AB70D6F8FFFFF6867BA8 -004CBCDFFFFFFFFFEF6575AF0060B486D6FBFFFFFA4D4F990050A70050A28FE7FFFFF4E62868A6 -25A0E9FFFFFFFFD2CC00399D007DD4E0FFFFFEEEDE264AA660CAF5FFFDF56A81AC0050A330B2F2 -FFFFFA8F7DB3005AA9005FAB0057A523A3E090A1BC004B9D004AA981C2F1FFFFFFA58CA4004DA7 -30ADEBFFFFFFF5FAFEFFFFEA294EA20072C59CCBD11B4E970044B391E4F9FFFAF45B6E9F0083DB -FFFFFFCAB5C80048A10052B261B8EDFFFFFFB992AC00389D0037A758AAD97296BC0045AEB7FFFF -FFE3DE2366AA036DBDBCF5FFFFE6D7004CA70071C7D3F4FFF1E4D62450A6005FAC005FAC005FAC -015DAA015EAB015DAA025FAC025FAF015CAE005CAB005FAC0060AD005EAB005DAC005FAC005FAA -005FAB005EAA0060AC0060AC005DA9005FAA005FAC005FAC005FAC005FAC005FAC005DAA005CA9 -005CA9005FAC005FAC005DAA0060AD0060AD005DAA005FAC005FAC005FAC005DAA005CA9005CA9 -005FAC0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD005EAB -005FAC005EAB0060AD0060AD0060AD005EAB005FAA005EAB005BA8015EAB015CAB015CAB015CA9 -015CA9015CA9015CA9015CA9015EAB005BA8005DAA005BA8015EAB015EAB015EAB005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005CAC005DAD005DAD005DAD005DAD005DAD -005DAD005EAE005CAC005FAF005CAC005FAF005FAF005FAF005CAC005DAD0160B00160B0005FAF -005CAC005FAF005CAC005EAE005BAB005EAE005FAF005DAD005FAF005FAF005DAD0061B1005CAC -005CAC005EAE005DAD005DAD005EAE005EAE005CAC005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005EAE005FAF005FAF005FAF005FAF005FAF005FAF005FAF005CAC -005EAB0043B8CDFFFFFFFFFFFFF7E20448A50051AC54C0F2FFFFFFFFFFF58575B50057AA005EBA -81D5F5FFFFFFFFFFFFFFFCFDFFFFFFC9B4C7064FA21474CFDDFFFFFFFFFFFFFFEA405E9E0081D4 -FBFFFFFFFFFFFFFFFFFFFFFFFFF5E7546EAE016FB9C7FDFFFFEFD80050A60060AC005DA9005FAB -0059A5158FDCFFFFFFFFFFFFFFFFFFFFFFFFFFDADA1563A90062B486D0F9FFFFFFFFFFFFFFF8FB -FFFFFFEDD0C90046A963CAF3FFFFFFFCFDFFFFFFFFFFFFFFFFDDDB1865A61074C9D6FFFFFFF5F8 -FFFFFFFFFFFFFFFFFFA99AB5004DA345B9F5FFFFFD8894B50057A90057AC5BB6EAFFFFFFFFF3F0 -5D78A8005AAB015CAC015EAC005AA90B70BCC7F8FFFFFFFFFFFFFFFFFFFFFFFFFFEEE6E9627CB0 -0051A80A71BEC7FDFFFFEED80051B077C7F5FFFFFFFFFFFFFFFFFFFFFDE42A49A7004EB370CEF2 -FFFFFFFFFFFFCAA2BA006BBDC7FDFFFFEFD9004FAA005FAF004FA597EFFFFFFDE92F6DAC0E74CB -E4FFFFFFEEF9FFFFFFFFFFFFFFFFFFA998B5004FA50684D8FFFFFFFFFFFFFFFFFFE6EEFEFFFFF3 -6D78B10050AA43A0E0F9FFFFFFFFFFF4D2D3064F9E93EEFFFFFDEA3170AC0064B394DAFBFFFFFF -FFFFFFFFFFFFFFFFFC7E85A8004BAB6ED2F9FFFFF97184AC0050A334B7F5FFFFFE977FB4005AA8 -005FAA0054A25EBFF6FFFFFFFFFFFFFFFFFFFFFFFFFCC9C9004CA7005CA8005AC0EEFFFFFFFFFF -F0BEC20051A6006FC3C0E8FEFFFFFFFFFFFFFFFFFFCAC8C91850A50046B6C0FFFFFFFFFFFFFFFF -6E67A20072C5B5DFFBFFFFFFFFFFFFFFFFFFFFFFF38D93B90044AFC2FFFFFFEAE22769A80470BC -C7FDFFFFEFD8004AA10073C7DFFCFFFEEBD92750A6005FAC005FAC005FAC005DAA005CA9005CA9 -005FAC005FAA005FAA005FAA005FA9005DA90060AC0060AC005DA9005FAB005FAB005FAB005DA9 -005DA9005FAB005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005DAA005FAC -0060AD005EAB005DAA005FAC005DAA005CA9005CA9015DAC015EAC015EAC015CAA015CAA015CAA -005EAD0060AD0060AD005FAC005FAC005FAC0060AD0060AD0060AD005EAB005FAC005FAB025DAD -025DAD025DAD025FAD025FAD015EAC005FAB005FAB005FAB005FA9005FAC005FAC005FAC005FAC -005FAC005FAC005BA8005DAA005BA8015EAB015EAB015EAB005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF015DAD015DAD015DAD015EAE015EAE015DAD005FAF005FAF005DAD -005FAF005CAC005FAF005FAF005FAF005CAC005DAD0160B00160B0005FAF005CAC005FAF005CAC -005DAD005AAA005EAE005FAF005DAD005FAF005FAF005EAE005EAE005CAC005FAF005DAD005DAD -005DAD005EAE005EAE005CAC005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005CAC005DAC0054AD419EDB -88B4DA7C90C10056AA0059A90576C68CB5D988A4C82F65AD005CAD0059A80066C07CB6D784B3D2 -5B76BD60B8D66186B80457A7005FAF3F94D182B5D974A3BF1060A90051A11F7FCD7CACD781B1D7 -80ADC83B6FAC0056A90468B15EAADA94A3BF0058A90060AB005DA8005FAB005FA90053A9378CCA -7AAAD581B2D57B9BC92E68AD0059AA0059AA0871BD71ADD682ABCF316FB8539FD27395B9004DAB -66CCF5FFF8F38294BD69A9D682ADCF3B70AC0053A51577C9D8FFFFF6BFC6378ECD86B3D87A9DBE -0050A8005AA9208ACF92B2D14078B0005BAB0053A42792D6EEFFFFEEDCD72357A6005DAC015DAC -005EAC005AA90667B45EA7D984B0D47FAFD581AFD375A8CA2866AB0056AC005CAC0566B65EA9DC -94A3C20052AA0C69BB5DA8D584B1D87AACD1376DAE005AAD005BAA0467C079B5D988B4D1427AB2 -0064B55EA9DC94A2C10056AB005DAD0056A847A2DC92A8C91564AD0668BC70B5D74C6CB949A8D1 -86B3DA799FBF0050A9005EAD0050AC3C9DD488B3D87599C3116AC485B5D0346AAE005AA80163B6 -58A5D489B5D55C90B90057A645A2DB92A9C81868AC0058A70067B357A7D384AFD583AAD4687DB3 -0053A80057AC3494D08CADD03570AC0056A71887CE93BAD3486CAF005BA9005EAA005CA9005CB2 -4B93CF7EAED682AED57094C21A5BAA005DAB005EAA0048A295EBFFFFFFF88E85B40058A90058AB -1775C077B5D782AFD677A9CC145BA3005DAC0058A82480CD7CB3D88BB6CE1D61A90055A70066BF -79A8D981AFD784B3D35781B10052AA0053AE5CAFDD85A0C71163AA0167B45EAADC94A3C10055A7 -0068B869A9D778A1C11257A9005FAC005FAC005FAC005EAB005EAB005EAB005EAB005FAC005FAC -005FAA005FAB005EAA0060AC0060AC005DA9005FAB005FAB005FAB005FAB005FAB005FAA005FAC -005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005DAA005FAC0060AD005EAB005FAC -005FAC005EAB005EAB005EAB015DAB015EAC015EAC015EAC015EAC015EAC005FAD0060AD0060AD -005EAB005EAB005EAB0060AD0060AD0060AD005EAB005FAC005FAB025FAD025FAD025FAD025FAD -025FAD015FAC005FAA005FAB005FAB005FA9005FAC005FAC005FAC005FAC005FAC005FAC005BA8 -005DAA005BA8015EAB015EAB015EAB005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005EAE0160B0005FAF0160B0005DAD005FAF005DAD0160B00160B0005DAD005DAD005DAD005DAD -005DAD005EAE005DAD005EAE005DAD005DAD005DAD005DAD005DAD005DAD005DAD005DAD005BAB -005EAE005FAF005DAD005DAD005DAD005DAD005DAD005DAD005EAE005EAE005EAE005CAC005EAE -005CAC005FAF005FAF005FAF005DAD005DAD005DAD005DAD005DAD005DAD005FAF005FAF005FAF -005DAD005DAD005DAD005DAD005DAD005DAD005DAD005EAE005DAD0058A80056A90059AB0060AE -0060AE005CAB0053A90056AB005CAE005DAD005EAF005AAC0056A70055A7005AA90055A7005AAA -005FAC005FAC0058A70053A50056A9005EAB005EAB0058A70054A60053A60054A70059AB005DAB -005BAA0054A60055A8005DAC005DAB005EAB005DAB005DAB005DAA0057A70054A60053A60057A8 -005CAB005FAB005FAB005BA90055A70055A6005AA80056A60058A80052AC6BCFF7FFFFF7697FA9 -0050A60054A6005CAC005BA81776CADFFFFFFFCFC80049A30054A70055AA0060AD0060AD005AA9 -0056A8005CAC005DA90059B05BB7EAFFFFFFC5A9B30053AA005CAC005BAA025DAD025DAC015CAC -0053A60054A60055A70053A90055AA005BAD005DAD005FAF005DAD0055A80056AB005EAD005BAB -0056AA0055AA0054A9005AAC005DAD005DAD005BAB0053A80054A90059AC005BAC0055A90055AB -005DAD005DAD005DAD0056A80055AA005DAE005DAD0055A7005DAB0058A90057AA0059AC0061AF -0060AF005FAE0057AA0053A80057AD005BAE0055AB005EAC0060AC005EAA0057A70056A8005AAB -005FAD0056A50055A6005DAB005FAB005BAA0053A50052A50053A70057A9015CAB015CAB0056A7 -0053A70059AB015CAB0057A70054A7005AAB015CAB015CAB015CAB005BAA0057A70055A60055A6 -0058A8005DAB005FAB005DA80060C0EBFFFFFFEFE4336DAC005AA9005DA9005BA90055A60053A5 -0056A7005FAD015FAC015DAE0058AA0054A90052A8005AAB005BAB005BAB0055A80053A80053A9 -0058AC005EAE005CAB0056AA0056AC005DAC005EAB0057A80057A9005FAC005DAA0055A60056A8 -005DAA005FAC005FAC005EAB005FAC005FAC0060AD005EAB005FAC005FAC005FAA005FAB005EAA -0060AC0060AC005DA9005FAB005FAB005FAB005FAB005FAB005FAA005FAC005FAC005FAC005FAC -005FAC005FAC005DAA005DAA005FAC005DAA005FAC0060AD005EAB005FAC005EAB0060AD0060AD -0060AD015DAB005CAA015EAC015EAC015EAC015CAA005EAD0060AD0060AD005DAA005CA9005CA9 -005FAC0060AD0060AD005EAB005FAC005FAB025FAD025FAD025FAD025FAD025FAD015FAC005FAA -005FAB005FAB005FA9005FAC005FAC005FAC005FAC005FAC005FAC005BA8005DAA005BA8005DAA -015EAB005CA9005CAC005CAC005CAC005FAF005FAF005FAF005CAC005CAC005CAC005DAD005DAD -005DAD005FAF005EAE005DAD0160B00160B0005DAD005EAE005DAD005EAE005DAD005EAE005DAD -005EAE005EAE005EAE005EAE005DAD005EAE005EAE005EAE005EAE005CAC005FAF005FAF005CAC -005EAE005EAE005DAD005EAE005CAC005FAF005FAF005FAF005CAC005EAE005CAC005FAF005FAF -005FAF005CAC005EAE005EAE005EAE005EAE005EAE005CAC005CAC005CAC005EAE005EAE005EAE -005EAE005EAE005EAE005DAD005FAF005DAE0060AD0060AE0060AE0060AF0060AF0061AE005DAE -005FAE005EAF015DAD065EA9035DA90461AC015EAB005FAE005FAE005FAD005FAD005FAD005EAC -005CAA005FAC005FAC005FAC005DAB005DAB005CAB005DAC005DAC005DAC005DAC005CAC005DAC -005CAC005DAC005EAC005DAC005CAC005DAC005DAD005DAC005DAC005FAC005EAC005EAC005EAC -005EAC005EAC005EAC005EAC005EAC005FAC0055AD54B6E7E1DEE7567BAC005BAC005DAB0060AD -005CAA1372C4AFE6F9D1B6C30055AA025FAD025DAC005FAC005FAC005FAD005FAD005FAC005BA9 -046AB78BCCF3EBF4E12944A2005DAC015CAB005BAA025DAC025EAC025EAC015BAB015EAB025FAC -005DAE005DAD005DAD005FAF005FAF005FAF005DAD005EAE005EAE005DAD005EAE005FAF005EAE -005DAD005EAE005DAD005EAE005EAE005CAC005CAC005CAC005CAC005EAE005EAE005EAE005EAE -005EAE005DAD005EAE005EAE005EAD005EAF005DAF005EAE005DB2005DAF005EAC005FA9005DAD -005EB5175C9E135997115FA3095BA6015DB1005EB5005EB0005DAD005FAF005FAF005CAC005EAE -005FAF005FAF005FAF005EAE005EAE005CAD005FAE005FAF005FAF005CAC005EAE005FAF005FAF -005FAF005FAF005CAC005EAD005FAF005FAF005DAE005DAE005CAD005DAD005EAE005CAD005CAD -0056A81995DEF0F2EF9099C00353AB005EAD005EAE005CAC005DAE005FAF005FAF005EAF005FAF -005DAD005EAE005EAE005DAD0060B0005FAF005DAD005EAE005EAE005EAE005EAE005EAE005EAE -005CAC005CAE005FAB005DAA005DAA005FAC005FAC005EAB0060AD0060AD0060AD005EAB005FAC -005EAB0060AD0060AD0060AD005EAB005FAC005FAC005FAA005FAB005EAA0060AC0060AC005DA9 -005FAB005FAB005FAB005FAB005FAB005FAA005FAC005FAC005FAC005FAC005FAC005EAB0060AD -0060AD0060AD005DAA005FAC0060AD0060AD005DAA005FAC005FAC005DAA005DAA025FAD025FAD -015CAA005BA9015EAC025FAD0160AD0060AD0060AD005EAB005FAC005FAC005DAA005EAB0060AD -005EAB005FAC005FAC015DAA005CAA015EAC005CAA005BA9005EAB005FAB005FAB005FAB005FA9 -005FAC005FAC005FAC005FAC005FAC005FAC005BA8005DAA005BA8025FAC005BA8025FAC005CAC -005CAC005CAC005FAF005FAF005FAF005DAD005DAD005DAD005EAE005EAE005DAD005FAF005EAE -005EAE0160B00160B0005DAD005DAD005EAE005DAD005EAE005CAC005EAE005DAD005EAE005EAE -005DAD005EAE005DAD005EAE005EAE005DAD005FAF005CAC0060B0005CAC005EAE005DAD005DAD -005EAE005DAD005FAF005FAF005FAF005CAC005EAE005DAD005DAD005EAE005FAF005DAD005EAE -005DAD005EAE005EAE005EAE005CAC005EAE005CAC005EAE005EAE005EAE005EAE005EAE005EAE -005EAE005DAD005DAE005FAC005EAF005EAD005FAF005DB2005DAD005EAA005FAB005EB1055FAF -145B9B0B599E0B5EAA025CAD005FB5005DB3005EAE005EAF005FAF005DAE005CAC005FAF005FAF -005FAF005FAF005EAE005DAD005EAD005FAF005EAF005EAE005CAC005FAF005EAF005FAF005EAF -005EAE005CAC005EAE0060B0005DAD005DAD005DAD005DAE005DAD005DAD005DAD005DAD005DAE -005EAE005CAC005FAF005DAD0054A70050A80058AC005FAF005FAF005EAF005EAF005CAC0050A6 -0054AB005DAE015EAC005CAA005BAA015CAA025FAD025FAC005DAA005DAA005BA80052A3004EA4 -005EAA005EAA005EAA005EAA005FAA005FAA005FAA005DAA005DAA005DAB005DAE005FAF005DAD -005DAD005FAF005FAF005DAD005EAE005EAE005CAC005DAD005FAF005FAF005FAF005EAE005CAC -005EAE005DAE005EAE005EAE005EAE005EAE005DAE005EAE005EAE005EAE005EAE005EAE005DAD -005DAD005DAC005FAE005FAF005FAF005DAF005CAD005CAB005DAA0060B10262B5015BA9035EAD -005BAC005DB1005FB4005FB50060B0005EAD005FAF005FAF005CAC005EAE005FAF005FAF005FAF -005DAD005EAE005DAD005FAF005FAF005FAF005CAC005EAE005FAF005FAF005FAF005FAF005EAE -005EAE005EAE005CAC005CAC005CAC005EAE005EAE005DAD005EAE005EAE005DAD0059AA004DA5 -0056AB005EAE005EAE005EAE005CAC005EAE005FAF005FAF005FAF005FAF005DAD005DAE005DAD -005FAF005CAB005FAF005DAD005DAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005FAB -005FAC005FAC005FAC005FAC005EAB0060AD0060AD0060AD005EAB005FAC005EAB0060AD0060AD -0060AD005EAB005FAC005FAC005FAA005FAB005EAA0060AC0060AC005DA9005FAB005FAB005FAB -005FAB005FAB005FAA005FAC005FAC005FAC005FAC005FAC005FAC005EAB005EAB005EAB005DAA -005FAC0060AD0060AD005DAA005FAC005FAC005FAC005FAC025FAD025FAD015CAA005BA9015EAC -025FAD0160AD0060AD0060AD005EAB005FAC005FAC005DAA005FAC0060AD005EAB005FAC005FAC -015DAC015EAC015EAC005DAB005CAA005EAB005FAB005FAB005FAB005FA9005FAC005FAC005FAC -005FAC005FAC005FAC005BA8005DAA005BA8015EAB005EAB005EAB005DAD005BAB005EAE005FAF -005FAF005FAF005FAF005FAF005FAF005DAD005DAD005DAD005FAF005FAF005FAF0160B00160B0 -005DAD005EAE005DAD005FAF005DAD005FAF005DAD005DAD005EAE005CAC005FAF005DAD005FAF -005CAC005EAE005DAD005DAD005DAD005DAD005DAD005EAE005CAC005FAF005FAF005CAC005FAF -005EAF005FAF005CAC005EAE005EAE005CAC005FAF005FAF005FAF005FAF005CAC005EAE005EAE -005CAC005FAF005DAD005FAF005CAC005EAE005EAE005EAE005EAE005EAE005EAE005DAD005CAE -005FAB005FAF005FAF005EAF005BAE005BAB005CAB005DAD0262B2015FB1025DAD005BAB015FB3 -005DB3005FB5005EB3005FAE005FAF005FAF005EAE005CAC005FAF005FAF005FAF005FAF005DAD -005EAE005DAD005FAF005FAF005DAD005CAC005FAF005FAF005FAF005FAF005FAF005EAE005EAE -005CAC005BAB005BAB005CAC005FAF005EAE005CAC005EAE005EAE005EAE005EAE005CAC005FAF -005DAD005EAE005EAE005CAC005FAF005FAF005FAF005FAF005FAF005CAC005CAC015DAE025FAD -005BA9025EAC005CAA025FAD025EAC005BA8005BA8005BA8015DAA015EAC025FAB005CA8005CA8 -005DA9005FAB005FAB005EAB005BA8005BA8005BA9005DAE005EAF005CAD005DAD005FAF005FAF -005DAD005EAE005EAE005CAC005CAC005FAF005FAF005DAF005CAC005CAC005DAC005DAC005CAD -005DAF005DAF005CAD005DAC005DAC005CAC005CAC005CAC005EAE005CAC005CAD005DAC005EAD -005DAD005EAE005CAD005CAB005CAD005CAF0261B10160B0015EAE015DAC035EAF015BAB045EAE -035BAC005DAC005FAF005EAE005DAD005DAD005DAD005FAF005FAF005FAF005DAD005EAE005DAD -005FAF005FAF005FAF005DAD005EAE005DAD005DAD005DAD005DAD005DAD005DAD005DAD005DAD -005DAD005DAD005DAD005DAD005EAE005DAD005EAE005EAE005DAD005DAD005EAE005EAE005EAE -005EAE005DAD005EAE005DAD005FAF005FAF005FAF005DAD005DAC005DAD005CAB005EB0005DAE -005DAC005DAC005DAC005CAD005CAD005CAC005EAE005CAD005CAE005FAB005EAB005EAA005EAA -005EAA005DAA0060AD0060AC0060AD005EAB005FAB005EAB0060AD0060AD0060AD005FAB005FAB -005FAC005FAA005FA9005FA90060AC0060AC005DA9005FAB005FA9005FA9005FA9005FA9005FA9 -005FAC005FAB005FAB005FAB005FAB005FAC005DAA005CA9005CA9005CA9005FAC0060AD0060AD -005DAA005FAC005FAC005FAC005DAA025FAD025FAD015CAA005BA9005EAC025FAD0160AD0060AD -0060AD005EAB005DAA005FAC005DAA005EAB0060AD005FAB005FAC005FAC015EAC005EAC005DAA -025FAD005EAC005DAA005FA9005FAB005FAB005FA9005FAC005FAC005FAC005FAC005FAC005FAC -005BA8005CA9005BA8005CA90360AD005CA9005CAC005BAB005DAD005FAF005FAF005FAF005FAF -005FAF005FAF005EAE005EAE005EAE005DAD005DAD005CAC005FAF005FAF005DAD005CAC0060B0 -005CAC005FAF005BAB005FAF005CAC005EAE005DAD005CAC0060B0005CAC005DAD005DAD005DAD -0160B0005AAA0160B0005DAD005DAD005DAD005FAE005EAF005CAC005FAE005FAE005FAE005CAC -005EAE005DAD005CAC005EAE005DAF005FAF005EAE005CAC005EAE005EAD005EAD005DAC0060B0 -005DAC005EAD005EAD005DAD005CAD005DAD005DAD005EAE005DAD005CAE005FAB005CAC005CAC -005EAE005CAB005DAB005BAF015FB10261B1005EAE035DAE035EAD045CAC025CA9075DAB0159A8 -005FAE005FAF005CAC005EAE005EAE005DAD005FAF005FAF005FAF005DAD005EAE005DAD005FAF -005FAF005FAF005EAE005CAC005CAC005CAC005CAC005CAC005CAC005EAE005EAE005EAE005EAE -005EAE005CAC005EAE005FAF005DAD005EAE005EAE005EAE005EAE005CAC005EAE005EAE005EAE -005EAE005CAC005DAD005FAF005FAF005FAF005FAF005FAF005FAE015DAB015EAC005CAA015EAC -005CAA005CAC015EAB015EAB015EAB015EAB005CA9015DA9005FAB005FAB005FAB005FAB005FAB -005FAB015EAB015EAB015EAC0060AE005FAC005FAE005FAE005FAD005FAD005DAE005EAE005EAE -005EAE005FAF005EAF005FAF0061AF0061AF0061AF0061AF0061AF0061AF0061AE0061AE0061AF -0061AF0061AF0060AF005FAF005FAF005DAD005FAF005FAF005FAD005EAD005CAD005EAE005DAC -005CAC005CAE005CB00161B10160AF025FAE025CAA045DAE025CA9055DAB055BA9015CAB005FAF -005DAD005DAD005EAE005DAD005FAF005FAF005FAF005DAD005DAD005DAD005FAF005FAF005FAF -005DAD005DAE005CAD005DAD005DAD005DAD005DAD005DAD005EAE005EAE005EAE005EAE005DAD -005DAD005EAE005DAD005EAE005EAE005DAD005EAE005EAE005EAE005EAE005EAE005EAE005EAE -005CAC005FAF005FAF005EAF0060AF0061AF0061AF0060AE0061AD0060AF0061AF0060B00061AF -005FAE005FAE005EAF005DAF065EA9035DAA0560AB005EAB005FAD005FAE005FAD0060AD005FAD -0060AD005DAA005FAC005FAC005FAC015EAB005CAB005CAB005CAC005DAC005DAC005DAC005CAC -005DAC005CAC005CAC005EAC005DAC005CAC005CAC005DAD005CAC015CAC005FAC005EAC005EAC -005EAC005EAC005EAC005EAC005FAC005EAC005FAC005EAC005DAA005DAB005EAC005FAC005DAB -005FAC0060AD015EAD015EAD005CAB015DAC025FAC025FAD005FAC005FAC005FAD005FAD0060AD -005DAA025FAC035DAC035DAC015CAB015DAB015DAB005BAA015DAB025EAD025EAC025BAB025EAC -025FAC005CA9015CAB015CAB015CA9015CA9015CA9015DAA025FAC015DAA015EAB015EAB005DAA -025FAC005CA9025FAC005CAC005DAD005BAB005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005EAE005EAE005BAB005EAE005DAD005EAE005DAD005EAE -005DAD005CAC005FAF005FAF005CAC005DAD005CAC005FAF005EAE005EAE005DAD005FAF005CAC -005FAF005FAF005FAF005FAC005FAE005FAE005FAD005FAD005FAD005CAE005EAE005CAC005FAF -005FAF005DAF0061AF0060AF0060AF0060AF0060AF0060AF0060AF0060AE0060AF0060AF0060AF -0061AF005DAF005FAF005FAF005DAD005FAF005DAE005FAC005DAD005DAD005DAD005CAB005DAD -005BB0005EB10161B0025FAD035DAC035DAB055CAC045CAA065BA8045BA9005EAE005FAF005CAC -005EAE005EAE005DAD005FAF005FAF005FAF005DAD005EAE005DAD005FAF005FAF005FAF005DAD -005DAD005DAD005DAD005DAD005DAD005DAD005EAE005EAE005EAE005EAE005DAD005EAE005EAE -005DAD005EAE005EAE005EAE005EAE005EAE005DAD005EAE005EAE005EAE005EAE005DAD005DAD -005FAF005FAF005FAF005FAF005FAF005FAE015DAB015EAC005DAB015EAC005DAB005DAC015EAA -015EAB015EAB015EAB005DAA015DAA005FAB005FAB005FAB005FAB005FAB005FAB015DAB015EAA -015DAB005EAC005DAC005DAC005DAC005DAC005DAC005EAC005EAC005EAC005EAC005DAE005FAF -005EAF005EAF005DAD005EAE005DAD005EAF005EAF005EAF005EAE005EAF005EAE005DAE005EAE -005DAD005FAF005DAD005FAF005FAF005FAD005FAE005DAD005EAE005DAB005DAE005EAF005DB0 -005EAE0160AE025DAB015EAC025DAD035FAD015BAA035DAA005EAD005EAE005EAE005DAD005EAE -005EAE005DAD005FAF005DAD005EAE005EAE005EAE005DAD005DAD005FAF005DAE005FAC005FAD -005FAD005DAC005EAD005EAD005EAD005EAD005EAD005EAC005DAC015FAD0060B0005CAC005CAC -005DAD005DAD005DAD005DAD005DAD005DAD005DAD005DAD005DAD005EAE005EAE005EAE005DAD -005FAF005EAF005EAF005FAF005CAC005FAF005EAF005FAE005DB2005DAE005EAA005FAA005EB0 -0060B6155B9A0C5A9E0D5EA8025BAB015FB3005DB5005FAE005EAF005EAF005FAF005CAC005FAF -005FAF005FAF005FAF005CAD005EAE005CAC005FAE005FAF005FAF005CAB005FAE005EAF005FAF -005FAF005FAF005CAB005DAE0061B1005DAD005DAD005DAD005DAD005DAE005DAD005DAD005DAD -005CAC005FAF005CAC005FAF005CAD005EAD005EAE005CAC005FAF005FAF005FAF005EAF005FAF -005CAC005EAE005CAE025FAC015EAC005CAA005CAA025FAD025FAD005DAA005DAA005DAA005DAA -005EAA005DAA005EAA005EAA005EAA005EAA005FAA005FAA005DAA005DAA005DAA005DAA015EAB -015EAB015EAB015EAB015EAB005DAA025FAC005DAA015EAB015EAB005CA9025FAC005CA9025FAC -005EAE005EAE005EAE005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005EAE005BAB005EAE005CAC005CAC005CAC005DAD005EAE005CAC005FAF -005FAF005CAC005EAE005DAD005BAB005CAB005CAC005DAC025FAF015EAE015FAF015FAF005FAF -005CAC005DAE005CAC005DAE005CAE005DAE005CAC005EAE005DAD015FAF015FAF005EAF005FAF -005FAF005FAF005DAF005DAF005DAF005DAF005DAF005DAF005FAF005FAF005FAF015EAF015FAF -015FAF005DAD025FAF005DAD0060AC005DAE005CAE005DAB005DAA005CAE005CB4005DB1005FAE -0161AD015EAE015DAE035FB0015DAD005AAA025FAF005DAE005FAF005CAC005EAE005EAE005DAE -005FAF005FAF005FAF005DAE005EAE005DAD005FAF005FAF005FAF005EAE005EAE005EAE005DAE -005EAE005EAE005EAE005DAE005DAE005CAE005CAE015DAE0160B1005EAE005BAB005EAE005DAE -005DAE005DAE005DAE005EAE005EAE005EAE005EAE005EAE005EAE005DAE005FAF005FAF005EAF -005EAF005EAF005FAE015DAB015DAB005EAC005EAB005EAC005EAC015EAA015EAB015EAB015EAA -015EAA015DAA005FAA005FAA005FAA005FAA005FAA005FAA015DAA015EAA015DAA015DAA015DAA -015EAA015EAA015EAA015DAA015DAA015DAA015EAA015EAA005CAC005FAF005FAF005FAF015EAE -005AAA015EAE005FAF005FAF005FAF005DAD005FAF005EAE005BAB005CAC005BAB005FAF005CAC -005FAF005FAF005FAF005FAF005CAC005EAE005CAC005FAF005DAD005FAF005CAC005CAC005CAC -005FAF005FAF005FAF005FAF005FAF005FAF005CAC005DAD005CAC005FAF005FAF005CAC005FAF -005CAC005FAF005DAD005FAF005CAC005CAC005FAF005DAF0060AB0060AD0060AD005DAA005FAC -005FAB005FAB005FAB005FAC005CA9005CA9005EA9005DAD005EAE0060B0005BAB005BAB005BAB -005CAC005FAF005FAF005BAB005CAC005BAB005EAE005EAE005EAE005BAB005EAE005FAF005FAF -005FAF005CAC005FAF005FAF005FAF005BAF005BAD005CAB005CAC0261B10261B5005AAA015DAE -015FB1005EB1005FB4005EB5005FAE005EAF005FAF005FAF005CAC005FAF005FAF005FAF005FAF -005CAC005EAE005CAC005FAF005FAF005FAF005CAC005FAF005FAF005FAF005FAF005FAF005FB0 -005DAD005DAD005BAB005BAB005BAB005FAF005FAF005CAC005EAE005EAE005CAC005FAF005CAC -005FAF005CAC005EAE005EAE005CAC005FAF005FAF005FAF005FAF005FAF005CAC005DAC005CAC -0360AE005CAA025EAC005CAA025FAD025FAD005BA8005BA8005BA8005CA9025FAC025FAC005CA8 -005CA8005CA8005FAB005FAB005FAB005BA8005BA8005BA8015EAB015EAB015EAB015EAB015EAB -015EAB005DAA025FAC005DAA015EAB015EAB005CA9025FAC005DAA025FAC005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005CAC005CAC005FAF005FAF025EAF005DAC -025FAF025FAF025EAF005CAC015EAE005DAE005DAC005DAC005DAD005CAC005FAF005CAC005FAF -005CAC005EAE005CAC025EAF015EAF005BAC025EAF015EAE025FAF005CAD005DAD005DAD005FAF -005EAE005EAE005EAE005EAE005FAF005DAD005DAD005DAD005CAD005DAD005CAC0360B00059AA -0360B0005FAB0060AC0060AC0060AD0060AD0060AC0060AC0060AC0060AD005DAA005FAB005FAB -005CAB005EAB015EAC005DAB015EAB015DAB015EAB015EAB005CAA025FAC025FAC005CAA015DAB -015DAB005CAA0562AF005DAB025FAD005AA9005CA9005BA9015EAB0360AE025EAC025EAC025EAC -015EAC0360AE025EAC0360AE005DAB025EAC005DAB025FAD025EAC015EAB0360AE015EAC0360AE -005CAA005CAA005CAA005DAA005DAA005CAA025FAC025EAC015EAC0060AC0060AC0060AC005FAC -005EAA005FAC035EAC025DAC035DAC025DAC005BAA0059A8005AA9005BAB005BAB005EAE005CAD -005CAC005FAF005FAF005FAF005CAC005EAE005CAC005FAF005FAF005FAF005CAC005EAE005DAD -005FAF005FAF005FAF005CAC005EAE005DAD005DAD005DAD005DAD015EAE005BAB015EAE005CAC -005CAC005CAC005EAE005CAC005EAE005BAB005CAC005BAB005EAE005EAE005CAC005FAF005FAF -005FAF005CAC005EAE005CAC0160B00060B00160B0005FAF005FAF005FAF005CAC005DAD005CAC -005FAF005FAF005FAF005FAF005FAF005FAF005CAC005EAE005EAE005CAC005EAE005CAC0260B0 -005EAE005BAB005CAC005FAF005DAF0060AB005FAC005CA9005FAC005FAC005FAC005FAC005FAC -005DAA0060AD0060AD005DAA005EAE005EAE005CAC005EAE005EAE005EAE005CAC005FAF005FAF -005BAB005CAC005BAB005EAE005EAE005CAC005FAF005FAF005FAF005CAC005EAE005EAE005CAC -005CAC005DAE005CAB005DAC005BAE005DB00261B10060AF035FAD035DAC065DAD025BA8075DAB -045AA7005EAD005FAF005DAD005CAC005EAE005CAC005FAF005FAF005FAF005CAC005EAE005CAC -005FAF005FAF005FAF005DAD005EAE005CAC005CAC005CAC005CAC005CAC005EAE005EAE005EAE -005EAE005DAD005DAD005DAD005EAE005CAC005EAE005EAE005CAC005EAE005CAC005EAE005EAE -005EAE005EAE005EAE005CAC005FAF005FAF005FAF005FAF005FAF005FAF005CAA015EAC005CAA -015EAC005DAB005CAC015EAA015EAB015EAB015EAB005EAB015CA9005FAB005FAB005FAB005FAB -005FAB005FAB015DAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB005CA9 -015EAB015EAB015EAB005DAA025EAB005BA8015EAB005EAD005EAD005EAD005EAD005EAD005EAD -005EAD005EAD005EAD005EAD005EAD005EAD005EAD005EAD005EAD005EAD005EAD005EAD005EAD -005EAE005EAE005EAE005FAE005CAB005CAB005FAE005FAD035DAE015CAB035EAE015CAC015CAC -015CAC025DAE025DAD005BAB025CAD015CAC015CAB025FAE005DAB025FAE005DAB005EAC005EAB -035DAE025DAD005BAB015CAC015CAC015CAC025FAE015FAE015FAE005DAC005DAC005DAC005DAC -005DAC005DAC015FAE015FAE015FAE035DAE025DAE035EAE005BAB025DAD005BAB005EA9005EAA -005EAA0060AC0060AB0060AB0060AB0060AB0060AC005DAA005FAA005FAA015CAA005EAA005EAA -005EAA005EAA005EAA005EAA005EAA015EAB005BA8005DAB005DA9005CA9005CA9005CA80361AD -005DAA005DAA005AA9005BAA005BA9005BA9025DAC025DAB015CAA015CAA015CAA025EAC005AA9 -035EAC005AA9015CAB005AA9015CAA015CAA015CAA015FAC005CA9015FAC005CA9005CA9005CA9 -005BA9005BA9005BA9015CAA015CAA025CAA015DAA025DAA025EAB005AA8025EAC015AA8005BA9 -005BA9005BA9015DAB0059A6005BA8005AA9005EAE0161B4005AAB005EAE005CAC005FAF005FAF -005FAF005CAC005DAD005DAD005DAD005DAD005DAD005DAD005EAE005DAD005DAD005DAD005DAD -005DAD005EAE005CAC005FAF005EAE005FAF005CAC005FAF005CAC005DAD005EAE005EAE005EAE -005EAE005DAD005DAD005DAD005DAD005DAD005EAE005CAC005FAF005FAF005FAF005CAC005EAE -005CAC005EAE005EAE005EAE005DAD005DAD005DAD005DAD005EAE005CAC005FAF005FAF005FAF -005FAF005FAF005FAF005CAC005EAE005EAE005EAE005EAE005CAC005EAE005EAE005CAC005CAC -005FAF005DAF0060AB0060AD005DAA005FAC005FAC005FAC005FAC005FAC005DAA0060AD0060AD -005DAA005EAE005EAE005EAE005EAE005EAE005EAE005CAC005FAF005FAF005DAD005DAD005DAD -005DAD005EAE005CAC005FAF005FAF005FAF005CAC005EAE005EAE005EAE005EAE005DAD005DA9 -005DAD005BB2005EB1005EAF0061AD035EAC025DAB045DAD045DAB0259A7055DAB005EAD005FAF -005DAD005EAE005EAE005CAC005FAF005FAF005FAF005CAC005EAE005CAC005FAF005FAF005FAF -005CAC005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005DAE005DAE005CAC0262B2 -005DAD005BAA005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE -005CAC005FAF005FAF005FAF005FAF005FAF005FAF015CAA015EAC015EAC015EAC015EAC015EAC -015EA9015EAB015EAB015EAB015EAB015CAB005FAB005FAB005FAB005FAB005FAB005FAB015CAB -015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB -005DAA015CA9025FAC015CA9005DB5005DB5005DB50062B40060B40060B40060B40060B40060B5 -005FB6005EB6005FB60060B7005EB7005FB70060B40060B30060B3005FB3005FB1005DB0005DB1 -005FB2005DB1005EB1005FB1005EB20159B40059B4015AB40159B4015AB40159B4025BB4025BB5 -015AB4025AB5015AB5025AB5015AB4005AB4015AB4015BB5015BB5015BB5025BB4025BB5015AB4 -025AB5025AB5025AB5015AB4015AB4005AB4025AB5025AB5025AB5025BB6025BB6025CB60059B3 -0059B30059B30159B40159B40159B4045CB7035BB6045CB7005FB4005EB6005EB6005EB5005EB5 -005DB5005DB1005DB1005DB1005CB1005DB1005DB1025AB1025BB1025BB1035BB2035BB2025CB2 -045DB3035CB3015BB1025AB1015AB10057AE0159B00159B00159AF0157AE025AB2025AB10058B0 -0058B00058B00059B00059B00059B00059B00059B00059B00059B10059B00059B10159B10057AF -0159B10059B00059B00059B0005AB00059B0005AB10059B0005AB00058B00058B00058B00058B0 -0059B00059B00159B00356B00357B00458B10054AD0256AF0054AE0658B50357B30155B10355B1 -0456B20254B10458A6045BAD005EB8005DAD005EAE005DAC005FAF005EAE005FAE005DAC005DAE -005EAE005BAC005DAC005BAB005EAE005CAE005EAE005BAD005CAD005BAD005EAE005EAE005EAE -005CAC005CAC005CAC005EAE005BAB005EAE005DAD005EAE005CAC005CAC005EAE005CAC005FAF -005EAE005FAF005DAD005CAC005DAD005FAF005FAF005FAF005DAD005EAE005EAE005CAC005CAC -005EAE005BAB005BAB005BAB005EAE005EAE005CAC005FAF005FAF005FAF005FAF005FAF005FAF -005CAC005CAC005EAE005EAE005EAE005DAD005EAE005EAE005DAD005CAC005FAF005EAF0060AB -0060AC005DA9005FAA005FAA005FAA005FAA005FAA005EAA0060AD0060AC005DA9005CAE005CAC -005EAE005EAE005EAE005EAE005CAC005FAF005FAF005EAE005EAE005FAF005CAC005EAE005CAC -005FAF005FAF005FAF005CAC005EAE005EAE005EAE005EAE005FAD005CA7005DAC005AB1005EB4 -005CAC0262AA0060B5005DB50061B8005DB30061B9005EB5005EAD005FAF005EAE005EAE005CAC -005DAD005FAF005DAF005FAF005CAE005DAE005CAD0060AF005EAF005FAF005CAD005EAE005EAC -005CAE005CAE005CAE005CAE005CAE005CAE005DAD005DAD005DAD005DAE005EAD005DAF005DAE -005CAE005CAE005CAE005CAE005CAE005CAE005CAE005CAE005CAE005CAE005CAD005FAF005EAF -005FAF005FAF005FAF005FAF015CAA015CAC015CAC015EAC015EAC015EAC015CA9015CA9015CA9 -015CA9015CA9015CA9005FA9005FA9005FA9005FA9005FA9005FA9015CA9015CA9015CA9015CA9 -015CA9015CA9015EA9015EA9015EAA005CA9015EAB005CA9015EAB015EAB005DA9015EAB005DAA -015EAB1063A9005EAF005EAD005CAB005EAE0160AF005EAE005CAB005FAE005CAB005EAD005BAA -005DAD005FAE005EAE005EAE005EAE0060B0005DAD005CAC005EAD005EAD005DAD005EAD005DAD -005DAD005FAE005FAE005FAE005FAE005FAE005FAE005FAE005FAE005FAE005FAE005FAE005FAE -005FAE005FAE005FAE005FAE005CAB005EAD005CAB005FAE005FAE005EAD005FAE005CAB005FAF -005FAA005FAB005FAB005FAB005FAB005EA9005EA9005EA9025FAA025EAF005CAC005FA90060AC -005FAA005FAB005FAA005FA9005FA9005EA90060AB005FA9005DA8005FAB005FAB005FAB005FAB -005FAB005EAA005FAB005FAB005EAA005FAB005DA90060AC0060AC005DA9005FAB005FAB005FAB -005FAB005FAB0061AD0060AC0060AC0060AC0060AC0060AC0060AC0060AC0060AC0061AD0359A9 -035AA9035AA8045BA9045AA8035AA80359A70359A70359A5085DAC055CA9075EAB035AA6035BA8 -035AA8055DA9045DA9045CA9045CA8045CA9045CA8045CA8045CA8045CA8045CA8045CA8045BA8 -045BA8055BA7055AA70258A40358A60258A6075BA80658A80457A7085CAB0457A7085CAB005CB5 -015DB3065FB5025CAB015CAA005AAC035EAF065FB2025CB20060B7005DB1005BAB015DAA005AA6 -025EAC025FAB025FAB025FAD005CAA005DA9005DAA045AAB0157A7055BAB035AAA045AAA035AA9 -005EAE005FAF005DAD005DAD015FAF015DAD005FAF005CAC005FAF005DAD005FAF005FAF005CAC -0060B0005CAC005FAF005FAF005FAF005BAB005BAB005BAB005FAF005FAF005CAC005FAF005DAD -005EAE005CAC005EAE005EAE005BAB005BAB005BAB005EAE005CAC005CAC0360B0025FAF005DAD -005BAB005BAB005DAD005AAA005DAD005EAE005EAE005EAE005CAC005FAF005EAF005BAC005EAE -005CAE005CAE005CAE005CAE005CAE005CAE005CAE005CAE005FAF005FAF005BAB005DAD005EAE -005EAE005EAE005EAE005CAC005FAF005FAF005FAF005CAC005EAE005CAC005FAF005FAF005FAF -005CAC005EAE005EAE005BAB005BAB005BAB0060AF005BAB005FB0005CAC005EAE005DAD005BAB -0060AF005BAB0060B0005AAA0060B0005BAB005BAB005BAB005CAC0060B0005CAC0060AB0060AB -0060AB005EAA005FAA005FAC005BA80460AD005BA8005EAB015EAE015CAF0060AD0060AB0060AD -005EAA005FAA005FAA005FAA005FAA005DAA0060AA005CA80060AB005DAA005FAA005EAA0060AD -0060AB0060AB0060AB0060AB0060AB0060AB0060AB0060AB0060AB0060AC005DA9005FAA005FAA -005FAA005FAC005FAC005FAC005CA9005DA9005CA9005FAC005FAC005EAB0060AD0060AD0060AD -005DAB005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC015CAC -015EAC005CAA025FAD005BA9025FAD005BA9005BAA005BAB005BAA005BAA005BAA4F779E005CB1 -005EAE005CAC005FAF0160B0005FAF005CAC005FAF005CAC005DAD005AAA005EAE005FAF005FAF -005FAF005FAF005FAF005DAD005EAE005DAD005DAD005DAD005EAE005EAE005DAD005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005CAC005DAD005CAC005FAF005EAF005EAE005DAE005EAE005DAF005FAB005FAC005FAC -005FAC005FAC015DAA015EAB005DAA025FAC025DB0005CAC005FAB0060AD005EAB005EAC005FAC -005FAA005FAB005EAA0060AC005FAB005DA9005FAC005FAC005FAC005FAC005FAC005FAC005DAA -005DAA005FAC005FAC005DAA0060AD0060AD005DAA005FAC005FAC005DAA005DAA005DA9005FAC -0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD005FAC0061B20061B10060AF0264B5 -0063B20061B10560AA025DA7025DA8055FAA045FA9055FA90064AA0064A90064A90066AB0065AA -0064A80063A70064A90063A80062A70062A70062A70062A80062A80062A80062A90063A80061A6 -005EA5005EA70060A7005EA6005FA6005EA60061A60063A90063A80062A60062A60062A80062A1 -0064A50066A80061A60063A90062A7075AA1065AA1065FA90058A4005CAE005CB0005DAB005DAB -005DAB0461AF015DAB0059A8025AAA0159A9025AAA0057A70058A80057A6005EAE005FAF005DAD -005DAD005DAD005EAE005CAC0061B1005CAC005FAF005FAF005FAF005DAD005EAE005DAD005FAF -005FAF005FAF005DAD005DAD005DAD005DAD005EAE005DAD005CAC005CAC005CAC005EAE005EAE -005DAD005DAD005DAD005DAD005DAD005EAE005CAC015EAE005DAD005DAD005CAC005DAD005DAD -005BAB005EAE005EAE005EAE005EAE005CAC005FAF005FAF005CAC005EAE005EAE005EAE005EAE -005EAE005EAE005EAE005EAE005CAC005FAF005CAC005FAF005CAC005EAE005EAE005EAE005EAE -005CAC005FAF005FAF005FAF005CAC005EAE005CAC005FAF005FAF005FAF005CAC005EAE005DAD -005DAD005DAD005DAD005DAD005EAE005EAD005DAD005EAE005CAD005EAD005EAE005DAD005DAD -005DAD005DAD005DAD005DAD005DAD005EAE005EAE005DAE0060AB0060AD0060AD005DAA005FAC -005EAB025FAB005BA8025FAD005CAB015EAE015CAF005EAC005EAB005EAB005EAB005FAC005FAC -005FA9005FAA005EAA005FAB005FAB005FAA005EAC005FAC005DAA0060AD0060AD0060AD0060AD -0060AD0060AD0060AD0060AD0060AD0060AD0060AD005DAA005FAC005FAC005FAC005FAC005FAC -005EAB005EAB005EAB005EAB005EAB005FAC005DAA0060AD0060AD0060AD005DAA005FAC005FAC -005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC015CAC015EAC005DAB005EAC -005EAC015EAC005BA9005BA9005BA9005BA9005BA9005BA9396993005BAF005EAE005DAD005EAE -005DAD005DAD005DAD005DAD005DAD005DAD005DAD005BAB005EAE005EAE005DAD005DAD005DAD -005DAD005EAE005EAE005EAE005EAE005DAD005EAE005DAD005FAF005FAF005EAE005DAD005DAD -005DAD005DAD005EAE005FAF005FAF005FAF005DAD005DAD005DAD005DAD005DAD005DAD005EAE -005DAD0060AC005FAC0060AC005EAB005EAC005EAB005FAC005FAC005FAC005FAC005FAC005DAA -005CA9005CA9005FAC005EAB005EAB005FAA005EAA005FAB005FAC005FAA005EAA005FAB005FAB -005EAA005FAB005EAA005FAC005FAC005FAC005FAC005FAC005FAC005EAB005EAB005DAA0060AD -005FAC005EAB005FAC005EAB005DAA005DAA005EAC005DAB005DAB005DAA005DAB005DAB005FAD -0060AD0060AD0060AD0060AD0060AD0060AD045EA80261AB0060AE005EB00062B20365B40665B5 -0260B1015FAF015FAF015FAF025EAF0460B0045FB0045FB00460B0045FB0025DAE035FAF0460B0 -035DAF035FAF035FAF055EB0075DB0075EB0075EB0055BAF045BAE055CB0075AAE0659AE0357AB -055AAD0558AD0559AD0358AB065AAE055AAF065BAE055AAE0257AC065CAB055BAA0259A90458AC -0559AF0359AE04589F035DA70763B10161B3005CAD005DAE005BA9005BA9005BA9005CAA005BA9 -005EAB0056A7005AAA0057A70059A90058A90059A7005EAE005FAF005DAD015DAD015FAF005CAC -005EAE005DAD005EAE005EAE005FAF005DAD005FAF005BAB005FAF005DAD005FAF005FAF005FAF -005FAF005FAF005BAB005EAE005FAF005DAD005DAD005DAD005CAC005CAC005CAC005FAF005EAE -005FAF005CAC005DAD005CAC015EAE005DAD005AAA005DAD005DAD005DAD005BAB005EAE005EAE -005CAC005EAE005CAC005FAF005FAF005CAC005EAE005CAC005CAC005CAC005EAE005CAC005EAE -005EAE005EAE005BAB005EAE005FAF005CAC005CAC005CAC005EAE005EAE005CAC005FAF005FAF -005FAF005CAC005EAE005CAC005FAF005FAF005FAF005CAC005DAD005CAC005FAF005EAE005FAF -005CAC0060B0005CAC005EAE005CAC005CAC005FAF005BAB005FAF005CAC0060B0005CAC005FAF -005EAE005EAE005FAF005BAB005FAF0060AB0060AD0060AD005DAA005FAC005EAB015EAB005DAA -015EAC005CAB015EAE015DAF005CAA005CA9005CA9005FAC005FAC005FAC005FA9005FAB005FAB -005DA90061AD005DA9005FAC005FAC005DAA0060AD0060AD0060AD0060AD0060AD0060AD0060AD -0060AD0060AD0060AD0060AD005DAA005FAC005FAC005FAC005DAA005EAB005DAA0060AD005FAC -0060AD005DAA005EAB005DAA0060AD0060AD0060AD005DAA005DAA005DAA005FAC005FAC005FAC -005DAA005DAA005DAA005FAC005FAC005FAC015CAA005CAA015EAC005CAA0360AE015EAB0058A7 -0059A70059A70059A70059A70059A7376B95005CB0005EAE005EAE005DAD005EAE005EAE005EAE -005EAE005EAE005EAE005EAE005CAC005FAF005DAD005EAE005EAE005EAE005EAE005DAD005FAF -005FAF005FAF005DAD005EAE005DAD005FAF005FAF005DAD005EAE005EAE005EAE005EAE005CAC -005DAD005DAD005DAD005EAE005EAE005EAE005EAE005EAE005DAD005FAF005DAE0060AB0060AD -0060AD005DAA005FAC005FAC005FAC005FAC005FAC005FAC005FAC005EAB005EAB005EAB005EAB -005FAC005FAA005FAB005FAB005EAA0060AC005FAB005DA9005FAB005FAB005FAB005FAB005FAA -005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005DAA0060AD0060AD005DAA005FAC -005EAB005EAB005EAB015CAB015EAC015EAC015EAC015EAC015DAC005EAD0060AD005FAC005EAB -005EAB005FAC0060AD075FA70362AE0062B20060B20461AE045FA90060B4005BB1005CB00166BA -0063B80064B80265B90365B90365B90164B90062B70265B90062B70264B90265BA0566BB0366BA -0164B8015EB9015FBA015FBA015FB90462BC0563BD025DB9035EBA035FBA035DBA035EBA035DB9 -0361B6035FB60461B7005BB2005DB3015DB4005CB0015DB30461B6005CB60762BC015CB80060B8 -005EB90060B90064BA0260AE075CA6035FAD025FAD025FAD005DAB015EAC015EAC005AA8005AA8 -005BAA005CAB005CAB005CA9005EAE005FAF005CAC005FAF005FAF005FAF005EAE005DAD005EAE -005EAE005FAF005FAF005CAC0060B0005CAC005FAF005FAF005FAF005CAC005DAD005CAC005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005BAB005BAB005DAD005BAB005BAB005DAD005AAA005DAD005CAC005FAF005CAC005FAF -005FAF005FAF005CAC005DAD0160B00160B0005FAF005CAC005FAF005CAC005DAD005AAA005EAE -005FAF005DAD005FAF005FAF005FAF005DAD005CAC0060B0005CAC005CAC005CAC005EAE005EAE -005CAC005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005DAD005FAF -005FAF005FAF005FAF005DAD005FAF005FAF005DAD005CAC005DAD005FAF005FAF005EAE005CAC -0060B0005CAD005EAA005DAA005DAA005FAC005FAC005FAC015CA9015EAB005CAA025FAE025FAE -005CAE005DAA0060AD0060AD005DAA005FAC005FAC005FA9005FAB005DA90060AC005FAB005CA8 -005FAC005FAC005FAC005DAA005DAA005DAA0060AD005FAC0060AD005DAA005EAB005DAA0060AD -0060AD005DAA005FAC005FAC005DAA0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD -0060AD0060AD0060AD0060AD0060AD0060AD0060AD005DAA005FAC005DAA0060AD0060AD0060AD -005DAA005FAC005FAA025FAD025FAD025FAD005DAB005EAC005BA90159AA005AAA005AAA005AAA -005AAA005AAA336B94005CB0005EAE005DAD005EAE005EAE005EAE005DAD005EAE005EAE005EAE -005EAE005CAC005FAF005DAD005EAE005EAE005DAD005DAD005EAE005FAF005FAF005FAF005DAD -005EAE005DAD005FAF005FAF005DAD005DAD005EAE005EAE005EAE005EAE005BAB005BAB005CAC -005EAE005EAE005EAE005EAE005EAE005DAD005FAF005DAE0060AC0060AD0060AD005DAA005FAC -005FAC005EAB005EAB005FAC005FAC005EAB005FAC005FAC005FAC005EAB005FAC005FAA005FAB -005FAB005EAA0060AC005FAB005DA9005FAB005FAB005FAB005FAB005FAA005FAC005FAC005FAC -005FAC005FAC005FAC005EAB005FAC005DAA0060AD0060AD005DAA005FAC005DAA005FAC005FAC -015DAB005DAB015EAC015EAC015EAC015DAB005EAD0060AD005EAB005DAA005DAA005FAC0060AD -0560AB0162B10063B6015EAF0963AC0D60A420629A2568A21F639E2468A22466A12466A1166EA1 -166DA1156DA1186EA3146B9E13699D13699E11669B0E64980F639811679B146A9E1267A11367A1 -1366A11368A11367A11367A11265A010649E0D619B0E619C0E619C0E619D106497116398116398 -0F62980F62981063980F62950F629810639912659E1567A113659F125D9E0C5FA6045EAC0165B6 -005FAF025DA9015EAD025FAD025FAD005CAA015EAC015EAC005CAA005CAA005CAA005DAB005DAB -005DAA005FB0005BAB005FAF005DAD005FAF005FAF005CAC0061B1005CAC005FAF005FAF005DAD -005FAF005BAB005FAF005DAD005FAF005FAF005CAC005EAE005CAC005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005DAD005DAD -005DAD005DAD005DAD005DAD005DAD005EAE005CAC005FAF005CAC005FAF005FAF005FAF005CAC -005DAD0160B00160B0005FAF005CAC005FAF005CAC005EAE005BAB005EAE005FAF005DAD005FAF -005FAF005DAD0061B1005CAC005CAC005EAE005EAE005EAE005EAE005EAE005CAC005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005CAC005EAE005CAC005FAF005FAF005DAD005FAF005BAB005FB0005DAA -005FAC005FAC005FAC005FAC005FAC015CA9015EAB005CAC025FAC025FAE005CAE005DAA0060AB -0060AD005DAA005FAC005FAC005FA9005FAB005DA90060AC0060AC005DA9005FAC005FAC005FAC -005FAC005FAC005EAB005EAB005EAB005EAB005EAB005FAC005DAA0060AD0060AD005DAA005FAC -005FAC005EAB005EAB005EAB005EAB0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD -0060AD0060AD0060AD0060AD005DAA005FAC005DAA0060AD0060AD0060AD005DAA005FAC005FAB -005DAB005DAB005DAB005DAB015EAC005BA90158AA015AAA015AAA015AAA015AAA015AAA3E7498 -005BB0005BAB005EAE005DAD005EAE005CAC0060B0005CAC005EAE005DAD005CAC0160B0005AAA -005DAD005DAD005DAD005EAE005EAE005CAC005EAE005FAF005FAF005DAD005EAE005CAC005CAC -005FAF005EAE005EAE005DAD005CAC005DAD005DAD005EAE005FAF005CAC005EAE005DAD005DAD -005DAD005DAD005DAD005DAD005CAE005FAA005EAA005EAA005EAB005FAB005EAA005FAC005FAC -005EAB005FAC005EAB0060AD0060AD0060AD005FAC005FAC005FAA005FAA005FAA005EAA0060AC -005EAA005DA9005FAB005FAA005FAB005FAB005FAA005EAC005FAC005FAC005FAC005FAC005EAB -005FAC0060AD005DAA0060AD0060AD005FAC005DAA0060AD005EAB005EAB025EAD015EAC015CAB -005BA9015EAC025EAC0060AD0060AD005FAC005EAB005EAB005DAA005DAA0061B10062B80063B9 -0463B4196EB50C4F8E01020C000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000003062348185C950761AF005FB40061B7005DAC -025DAB025DAD005CAA015CAC015CAC005CAB005CAC005CAA025FAD025EAD025FAD005CAD0060B0 -005CAC005EAE005FAF005DAD005EAE005CAC005EAE005DAD005FAF005EAE005CAC0060B0005CAC -005EAE005FAF005FAF005CAC005EAE005CAC005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF025DAD025DAD025DAD025FAF025EAE -025DAD005FAF005FAF005DAD005FAF005CAC005FAF005FAF005FAF005CAC005DAD0160B00160B0 -005FAF005CAC005FAF005CAC005DAD005AAA005EAE005FAF005DAD005FAF005FAF005FAF005DAD -005CAC0060B0005CAC005CAC005CAC005EAE005EAE005CAC005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005CAC005DAD005CAC005FAF005DAF005EAF005CAE0060B0005CAE005EAA005FAC005FAC005FAC -005FAC005FAC015CA9015EAB005CAC025FAE025EAF005BAD005DAA0060AD0060AD005DAA005FAC -005FAC005FA9005FAB005DA90060AC0060AC005DA9005FAC005FAC005FAC005FAC005FAC005FAC -005CA9005CA9005CA9005FAC005FAC005DAA0060AD0060AD005DAA005FAC005FAC005FAC005CA9 -005DA9005CA90060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD -0060AD005DAA005FAC005DAA0060AD0060AD0060AD005DAA005FAC005FAC005BA9005DAA005BA9 -015EAC015EAC005AA90258AA035AAA035AAA035AAA035AAA035AAA005AAE005FAF0160B00160B0 -005DAD005CAC005FAF005DAD005CAC005BAB005FAF005FAF005DAD005FAF005FAF005FAF005FAF -005CAC005CAC005EAE005EAE005DAD005DAD005EAE005DAD005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005EAE005EAE005DAE005FAF005FAF005FAF005FAF005CAC0060B0005EAB005FAC005FAC005FAC -005EAB005FAC015DAA015DA9015DAC025FAE015DAE005CAD005FAA0060AD0060AD005FAC005FAC -005FAC005FAA005FAB005EAA0060AC005FAA005DA9005FAC005FAC005FAC005EAB005FAC005EAB -005EAB005EAB005EAB005FAC005FAC005EAB0060AD005FAB005DAA005FAC005FAC005EAA005FAB -005EAB005EAB0060AD0060AD0060AD0060AD0060AD005FAC005FAB005FAB005FAC0062B40F406F -2B231CF3F2F3D4D4D1D6D6D1D6D6D3D5D6D5DAD7D7D9D6D6D7D4D5D7D4D4D7D4D4D7D4D4D8D6D5 -D8D6D5D9D6D6D7D5D4D7D5D4D6D3D3D8D7D5D7D5D4D7D5D4D7D5D4D7D5D4D9D7D5D6D4D2D6D5D2 -D7D5D3D6D5D2D6D5D2D6D5D2D6D5D3D7D5D3D7D5D4D6D5D3D6D5D3D6D5D3D7D5D4D7D5D3D7D5D3 -D7D5D2D7D4D2DEDBD9B1B2AD08091B2E5E900263A90062B1015EB40061AD0061AE0161AE005DAA -005FAB005FAB005FAB005FAB005FAB005DAA005EAA005DAA005FAF005CAC005FAF005EAE005EAE -005FAF005DAD005FAF005DAD005FAF005EAE005EAE005FAF005CAC005FAF005EAE005EAE005FAF -005CAC005EAE005CAC005FAF005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005FAF -005FAF005FAF005EAE005EAE005DAD0060B00060B00060B0005DAD005FAF005DAD0160B00160B0 -005DAD005CAC005EAE005CAC005CAC005DAD005EAE005EAE005CAC005CAC005CAC005EAE005CAC -005EAE005EAE005EAE005BAB005EAE005FAF005CAC005CAC005CAC005EAE005EAE005CAC005FAF -005FAF005FAF005CAC005EAE005CAC005FAF005FAF005FAF005CAC005CAC005CAC005CAC005CAC -005CAC005FAF005EAE005FAF005CAC005CAC005CAC005CAC005CAC005CAC005EAE005FAF005DAE -0060AB0060AB0060AC005EAA005DAA005FAA005FAC005FAC005FAC005FAC005FAC005FAC005CA9 -005DAA005CA9005FAC005FAA005FAA005FAA005FA9005DA90060AC0060AB005DA8005FAB005FAB -005FAB005DA9005EAB005FAA005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC -005DAA0060AD0060AD005DAA005FAC005FAC005CA9005CA9005CA9015DAC015EAC015EAC015CAA -015CAA015CAA0060AD0060AD0060AD005FAC005FAC005FAC0060AD0060AD0060AD005DAA005FAC -005FAA025DAD025DAD025DAD025FAD025EAD005BAA015AAB015BAB005AA9025DAC025DAC015BA9 -0058AA005AAA005AAA005AAA005AAA005AAA005CAC005FAF0160B00160B0005DAD005CAC005FAF -005EAE005CAC005BAB005FAF005FAF005DAD005FAF005FAF005FAF005DAD005DAD005EAE005DAD -005DAD005DAD005EAE005EAE005DAD005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005DAD005DAD005DAD -005FAF005EAF005EAF005EAF005EAE005EAE005FAB005FAC005FAC005FAC005FAC005FAC015DAB -015EA9005DAC025FAE015DAE005BAD005EAB0060AD0060AD005EAB005FAC005FAC005FAA005FAB -005EAA0060AC005FAB005DA9005FAC005FAC005FAC005FAC005FAC005FAC005DAA005DAA005DAA -005FAC005EAB005EAB0060AD005FAC005DAA005FAC005FAC005FAC005DAA005DAA005EAB0060AD -0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD0063B50C3C6A2F2923FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -CFCDCC0E13213866970261A70062AE025DAF0061AD0161AE0161AE005FAC005FAC005FAC005FAC -005FAC005FAC005FAC005FAC005FAC005EAF005CAC005FAF005DAD005DAD005DAD005DAD005FAF -005DAD005DAD005DAD005DAD005FAF005CAC005FAF005DAD005DAD005DAD005DAD005EAE005DAD -005DAD005DAD005DAD005DAD005DAD005DAD005DAD005DAD005DAD005FAF005FAF005FAF005DAD -005DAD005DAD005EAE005EAE005EAE005EAE005FAF005DAD0160B00160B0005DAD005EAE005EAE -005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE -005CAC005FAF005FAF005CAC005EAE005EAE005EAE005EAE005CAC005FAF005FAF005FAF005CAC -005EAE005CAC005FAF005FAF005FAF005CAC005EAE005EAE005EAE005EAE005DAD005DAD005DAD -005DAD005DAD005EAE005EAE005EAE005EAE005EAE005DAD005FAF005DAE0060AB0060AD0060AD -005DAA005FAC005FAC005FAC005FAC005FAC005FAC005FAC005EAB005EAB005EAB005EAB005EAB -005FAC005FAC005FA9005FAB005DA90060AC0060AC005DA9005FAB005FAB005FAB005FAB005FAB -005FA9005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005DAA0060AD0060AD -005DAA005FAC005EAB005EAB005EAB005EAB015CAB015EAC015EAC015EAC015EAC015CAA0060AD -0060AD0060AD005EAB005EAB005EAB0060AD0060AD0060AD005DAA005FAC005FAA025FAD025FAD -025FAD025FAD025FAD005DAA015AAB015CAB005AA9025DAC025DAC005BA90158AA015AAA015AAA -015AAA015AAA015AAA005DAD005EAE005DAD005DAD005EAE005DAD005DAD005EAE005DAD005DAD -005DAD005FAF005EAE005DAD005DAD005DAD005DAD005EAE005EAE005EAE005EAE005EAE005DAD -005EAE005DAD005FAF005FAF005FAF005DAD005DAD005DAD005DAD005DAD005EAE005FAF005FAF -005FAF005DAD005DAD005DAD005DAD005DAD005DAD005DAD005EAE005DAE0060AC005FAC005FAC -005EAB005EAC005EAA005FAC005FAC005FAC005FAC005FAC005FAC005CA9005CA9005DAB005FAC -005EAB005EAB005EAB005EAA005FAB005FAC005FAB005EAA005FAB005FAB005FAB005EAA005FAB -005EAA005FAC005FAC005FAC005FAC005FAC005FAC005EAB005EAB005EAB005DAA005FAC0060AD -005EAB005FAC005EAB005DAA005DAA005DAB005DAB005DAB005EAB005DAB005DAB005EAC0060AD -0060AD0060AD0060AD0060AD0060AD0063B50C3D6A2E2822FFFFFFFDFDFAFDFDF8FDFDFAFDFDFE -FDFDFDFDFDFDF8F8F8FFFFFFFFFFFFFDFDFDFFFFFFFAFAFAFFFFFFFBFBFBFEFEFEFFFFFFFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFDFDFBFDFDFBFDFDFBFCFCFAFCFCFAFCFCFAFCFCFAFEFEFC -FEFEFCFCFCFAFDFDFBFDFDFAFCFCFAFCFCFAFCFCFAFCFCFAFCFCFAFFFFFFCAC9C71116223C6694 -055FA20060AC055CAC0061AE0161AE0161AE0060AD0060AD0060AD0060AD0060AD0060AD0060AD -0060AD0061AC005DAF005CAC005FAF005BAB005BAB005BAB005DAD005FAF005DAD005BAB005BAB -005BAB005FAF005CAC005FAF005BAB005BAB005BAB005EAE005CAC005EAE005BAB005BAB005CAC -005CAC005CAC005CAC005BAB005DAD005BAB005FAF005FAF005FAF005BAB005BAB005BAB005DAD -005CAC005CAC005FAF005DAD005DAD0160B00160B0005DAD005EAE005CAC005EAE005CAC005EAE -005CAC005EAE005EAE005EAE005EAE005CAC005EAE005EAE005EAE005EAE005CAC005FAF005FAF -005CAC005EAE005EAE005CAC005EAE005DAD005FAF005FAF005FAF005CAC005EAE005CAC005FAF -005FAF005FAF005CAC005EAE005EAE005EAE005EAE005EAE005BAB005BAB005BAB005EAE005EAE -005EAE005EAE005EAE005EAE005DAD005FAF005DAE0060AC0060AD0060AD005DAA005FAC005FAC -005DAA005DAA005DAA005FAC005FAC005DAA0060AD005FAC0060AD005DAA005FAC005FAC005FA9 -005FAB005DA90060AC0060AC005DA9005FAB005FAB005FAB005FAB005FAB005FA9005FAC005FAC -005FAC005FAC005FAC005FAC005DAA005DAA005FAC005DAA0060AD0060AD005DAA005FAC005DAA -0060AD0060AD0060AD015CAA005EAC015EAC015EAC005EAC015CAA0060AD0060AD0060AD005CA9 -005CA9005CA90060AD0060AD0060AD005DAA005FAC005FAA025FAD025FAD025FAD025FAD025FAD -005DAA015AAB015CAB005AA9025DAC025DAC005AA90158AA015AAA015AAA015AAA0058A8015AAA -005EAE005DAD005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005CAC005FAF005FAF -005DAD005EAE005EAE005EAE005EAE005DAD005FAF005FAF005FAF005DAD005EAE005DAD005FAF -005FAF005FAF005EAE005EAE005EAE005EAE005EAE005CAC005DAD005DAD005DAD005EAE005EAE -005EAE005EAE005EAE005EAE005DAD005FAF005DAE0060AC0060AD0060AD005EAB005FAB005FAC -005FAC005FAC005FAC005FAC005FAC005EAB005EAB005EAB005EAB005FAC005FAC005FAC005FAA -005FAB005EAA0060AC005FAA005DA9005FAB005FAB005FAB005FAB005FAB005FAA005FAC005FAC -005FAC005FAC005FAC005FAC005FAC005FAC005FAC005DAA0060AD0060AD005EAB005FAC005EAB -005EAB005EAB005EAB015EAC015EAC015EAC015EAC015EAC015DAB0060AD0060AD0060AD005EAB -005EAB005EAB0064B50939682E2822FFFFFFFCFCFBFEFFF8FEFDFAFEFEFEFCFCFCFDFDFDFFFFFF -E1E1E1A1A1A1D4D4D4C1C1C1FFFFFFE4E4E4FFFFFFF9F9F9FFFFFFFBFBFBFFFFFFFFFFFFFCFCFC -FFFFFFF6F6F7FFFFFFFEFEFDFDFDFBFBFBFAFFFFFFFFFFFFFFFFFFF8F8F6FAFAF9FEFEFCFAFAF8 -FAFAF8FEFEFCFEFEFCFEFEFCFEFEFCFEFEFCFFFFFFC9C8C7141926416B990662A60061AB085DAC -0061AE0161AE0161AE0161AE0161AE0161AE0161AE0161AE0161AE0161AE0161AE0161AC005DAF -005FAF005DAD005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005DAD005FAF -005DAD005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005CAC005DAD005DAD005DAD -005DAD005BAB005EAE005FAF005FAF005FAF005FAF005FAF005FAF005EAE005EAE005EAE0060B0 -0060B00060B00160B00160B0005DAD005CAC0060B0005CAC005FAF005CAC005FAF005CAC005EAE -005DAD005DAD0060B0005DAD005DAD005EAE005CAC0160B0005AAA0160B0005CAC005EAE005CAC -005FAF005FAF005CAC005FAF005FAF005FAF005CAC005EAE005EAE005BAB005EAE005FAF005FAF -005FAF005CAC005EAE005EAE005DAD005EAE0060B0005EAE005DAD005EAE005EAE005EAE005EAE -005EAE005EAE005CAC005CAE005FAA005DAA005DAA005FAC005FAC005DAA0060AD0060AD0060AD -005DAA005FAC005DAA0060AD0060AD0060AD005DAA005FAC005FAC005FA9005FAB005DA90060AC -0060AC005DA9005FAB005FAB005FAB005FAB005FAB005FA9005FAC005FAC005FAC005FAC005FAC -005DAA0060AD0060AD0060AD005DAA0060AD0060AD0060AD005DAA0060AD005DAA005EAB005DAA -025FAD025FAD005CAA005CAA025FAD025EAD0060AD0060AD0060AD005EAB005FAC005FAC005CA9 -005FAC0060AD005DAA005FAC005FAC015CAA005CAA015EAC005BA9005BA9005DAA005AAA005BAA -015CAB005AA9005AA9005CAB0158A8015AAA015AAA0059A9025BAB0059A9005DAD005EAE005EAE -005EAE005EAE005DAD005EAE005EAE005EAE005EAE005CAC005FAF005FAF005DAD005EAE005EAE -005DAD005EAE005DAD005FAF005FAF005FAF005DAD005EAE005DAD005FAF005FAF005FAF005DAD -005EAE005EAE005EAE005EAE005EAE005BAB005BAB005CAC005EAE005EAE005EAE005EAE005EAE -005EAE005DAD005FAF005DAE0060AD0060AD0060AD005EAB005FAC005FAC005EAB005EAB005EAB -005FAC005FAC005EAB005FAC005FAC005FAC005EAB005FAC005FAC005FAA005FAB005EAA0060AC -005FAB005DA9005FAB005FAB005FAB005FAB005FAB005FAA005FAC005FAC005FAC005FAC005FAC -005FAC005EAB005EAB005FAC005DAA0060AD0060AD005EAB005FAC005EAB005FAC005FAC005FAC -015DAB015EAC015EAC015EAC005DAB015DAB0060AD0060AD005FAC005CA9005DAA005EAB0064B5 -0A3C6B2E2822FFFFFFFCFCFBFEFFF8FEFDFAFDFDFDFEFEFEFDFDFDFFFFFF161616ABABABC1C1C1 -6F6F6FBBBBBB4C4C4CFEFEFEFFFFFFCCCCCCFFFFFFE8E8E8CECECEFEFEFEF0F0F0FFFFFFD3D3D2 -F4F4F3FFFFFFFFFFFFDADAD9CDCDCCDCDCD9FFFFFFC8C8C7FFFFFFF8F8F7FCFCFBFDFDFBFEFEFC -FEFEFCFEFEFCFEFEFCFFFFFFC9C8C71419273F6D9E0562A80062AE035DAE0061AD0161AE0161AE -0161AE0161AE0161AE0161AE0161AE0161AE0161AE0161AE0161AC005DAF005FAF005EAE005EAE -005EAE005EAE005EAE005FAF005EAE005EAE005EAE005EAE005EAE005FAF005EAE005EAE005EAE -005EAE005EAE005FAF005FAF005FAF005FAF005CAC005DAD005DAD005DAD005DAD005BAB005EAE -005FAF005FAF005FAF005FAF005FAF005EAE005EAE005EAE005EAE005EAE005EAE005EAE0160B0 -0160B0005DAD005FAF005BAB005FAF005CAC0061B1005CAC005EAE005EAE005CAC005FAF005BAB -005FAF005CAC005EAE005EAE005CAC005EAE005CAC005EAE005EAE005CAC005FAF005FAF005CAC -005FAF005EAF005FAF005CAC005EAE005EAE005CAC005FAF005FAF005EAF005FAF005CAC005EAE -005DAE005CAC005FAF005CAB005FAF005CAC005DAE005EAE005EAE005EAE005EAE005EAE005EAE -005CAE005FAA005FAC005FAC005FAC005FAC005DAA0060AD0060AD0060AD005DAA005FAC005DAA -0060AD0060AD0060AD005DAA005FAC005FAC005FA9005FAB005DA90060AC0060AC005DA9005FAB -005FAB005FAB005FAB005FAB005FA9005FAC005FAC005FAC005FAC005FAC005EAB005EAB005EAB -005EAB005DAA0060AD0060AD0060AD005DAA0060AD005DAA005FAC005FAA025FAD025FAD005CAA -005CAA025FAD025DAD0060AD0060AD0060AD005DAA005FAC005FAC005DAA0060AD0060AD005DAA -005FAC005FAC015CAC015EAC005DAB005DAB005DAB005CA9005AA9005AA9005AA9005AA9005AA9 -005AA90158A9015AAA015AAA0059A9025BAB0059A9005EAE005DAD005EAE005EAE005DAD0060B0 -005CAC005EAE005EAE005EAE015EAE005AAA0160B0005DAD005EAE005DAD005EAE005EAE005CAC -005FAF005FAF005FAF005DAD005EAE005EAE005DAD005FAF005FAF005EAE005EAE005DAD005EAE -005EAE005DAD005EAE005FAF005CAC005EAE005EAE005EAE005EAE005EAE005EAE005EAE005DAD -005DAD005FAB005EAB005EAB005FAC005FAC005EAB005FAC005FAC005FAC005EAB005FAC005EAB -0060AD0060AD0060AD005EAB005FAC005FAC005FAA005FAB005EAA0060AC005FAB005DA9005FAB -005FAB005FAB005FAB005FAB005FAA005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC -005FAC005DAA0060AD0060AD005EAB005DAA0060AD005EAB005EAB005EAC025EAC015EAC005CAA -015DAB015EAC025EAC0060AD0060AD005FAC005EAB005EAB005EAB0061B30B3E6C2E2822FFFFFF -FCFCFAFCFFF8FCFDFAFCFCFCFFFFFFFFFFFFFFFFFF4E4E4E101010FFFFFFF9F9F96464644B4B4B -FFFFFF8A8A8ABFBFBF5F5F5FE3E3E3111111D2D2D2A3A3A34F4F50CDCDC94D4D4BF3F3F2929290 -6767651B1B19FFFFFF9B9B9AC8C8C4424242FFFFFFFCFCFAFEFEFAFCFCFAFCFCFAFCFCFAFCFCFA -FFFFFFC9C8C6141A2A4070A50163A90062B1015FB30161AE0161AE0161AE015FAC015FAC015FAC -0161AE0161AE0161AE0161AE0161AE0161AD005DAF005FAF005EAE005EAE005EAE005EAE005EAE -005FAF005EAE005EAE005EAE005EAE005EAE005FAF005EAE005EAE005EAE005EAE005EAE005FAF -005FAF005FAF005FAF005CAC005DAD005DAD005DAD005DAD005BAB005EAE005FAF005FAF005FAF -005FAF005FAF005EAE005EAE005EAE005EAE005CAC005CAC005CAC0160B00160B0005EAE005CAC -0060B0005CAC005FAF005CAC005FAF005CAC005EAE005CAC005DAD0060B0005DAD005CAC005DAD -005CAC0160B0005AAA0160B0005CAC005CAC005CAC005FAF005EAF005BAC005FAF005EAF005FAF -005CAC005EAE005EAE005BAB005EAE005EAF005EAF005EAE005BAB005DAE005DAC005DAC005CAC -005EB0005CAC005DAC005DAC005CAC005DAC005CAC005CAC005EAE005CAC005CAE005FAA005DAA -005DAA005DAA005DAA005DAA0060AD0060AD0060AD005DAA005FAC005DAA0060AD0060AD0060AD -005EAA005FAC005FAC005FA9005FAA005EA90060AC0060AB005DA8005FAB005FA9005FA9005FA9 -005FA9005FA9005FAC005FAC005FAC005FAC005FAC005FAC005CA9005CA9005CA9005DAA0060AD -0060AD0060AD005DAA0060AD005EAB005FAC005DAA025FAD025FAD005CAA005BA9015EAC025DAD -0060AD0060AD0060AD005DAA005FAC005FAC005CA9005FAC0060AD005EAA005FAC005EAC015EAC -005EAC005CAA025FAD005EAC005BA80058A70058A70058A70058A7005AA90058A70158AA0158AA -0158AA0159A9025BAB0159A9005CAC005EAE005EAE005DAD005FAF005CAC005FAF005DAD005EAE -005EAE005EAE005EAE005CAC005EAE005EAE005DAD005FAF005EAE005CAC005FAF005EAF005FAF -005DAD005EAE005EAE005CAC005FAF005FAF005FAF005EAE005CAC005EAE005DAE005DAD005FAF -005CAC005FAF005DAD005DAE005EAE005EAE005EAE005EAE005EAE005EAE005DAC005FAC005FAC -005FAC005FAC005FAC005EAB0060AD0060AD0060AD005EAB005FAC005EAB0060AD0060AD0060AD -005EAB005FAC005FAC005FAA005FAB005EAA0060AC005FAB005DA9005FAB005FAB005FAB005FAB -005FAB005FAA005FAC005FAC005FAC005FAC005FAC005DAA005EAB005EAB005EAB005DAA0060AD -0060AD005FAC005DAA0060AD005EAB005FAC015FAB025FAD015EAC005BA9015CAA025FAD025EAD -0060AD0060AD0060AD005FAC005FAC005FAC0061B20A3D6D2E2822FFFFFFFCFCFDFFFFFDFFFFFE -FFFFFFFDFDFDFCFCFCF8F8F8FBFBFBB8B8B8000000D6D6D67A7A7A767676EDEDED090909F0F0F0 -0000009F9F9F020202FFFFFFFFFFFFB5B5B5C9C9CA000000DEDEDE3838388484842A2A2AFFFFFF -3737377C7C7D363636DEDEDEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9C8C618192A -3676A80066AC055DB00360AE005EAB005EAB005EAB0162AF0162AF0162AF005FAC0061AE0061AE -005EAB005EAB005FAB005DAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005BAB005BAB -005CAC005CAC005CAC005CAC005BAB005DAD005BAB005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005DAD005EAE005BAB005EAE005CAC005EAE005CAC -005EAE005CAC005CAC005FAF005FAF005CAC005CAC005CAC005FAF005FAF005FAF005DAD005FAF -005CAC005FAF005FAF005FAF005FAC005FAE0060AE005FAC005FAC005FAC005CAE005EAE005CAC -005FAF005FAF005DAF0061AF0060AF0061AF0060AF0060AF0060AF0061AF0060AD0061AF0060AF -0060AF0061AF005DAF005FAF005FAF005DAD005FAF005DAE0060AC0060AD0060AD0060AD0060AD -0060AD0060AD005FAC005CA9005FAC005FAC005FAC015CAA015CAA015CAA015CAC015CAC015CAC -015CAC015CAC015CAC015CAC015CAC015EAC015CAC015CAC015CAC015CAC015CAC015CAC005FAC -005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005EAB005DAA005DAA005FAC -005FAC005DAA0060AD0060AD025DAD025FAD005CAA025FAD025FAD025DAD0060AD0060AD0060AD -0060AD0060AD005DAA035FAD035DAD035EAD015CAA025CAC025CAC005AAA035DAD035EAD035EAD -025CAC0059A8005BAA005BAA005BAA005AA90058A7005AAA005BA8005BAA005BAA005BAA005BA8 -005BAA005EAE005EAE005DAD005DAD005EAE005EAE005DAD005DAD005DAD005DAD005EAE005BAB -005FAF005DAD005DAD005DAD005FAF005DAE005CAC005FAF005EAF005FAF005DAD005EAE005EAE -005CAC005FAF005EAF005FAF005DAD005CAC005DAE005DAD005DAD005EAE005DAE005DAD005DAD -005DAD005DAD005DAD005DAD005DAD005EAE005DAD005DAD005FAB005EAB005EAB005EAB005EAB -005EAB0060AD0060AD0060AD005EAB005FAC005EAB0060AD0060AD0060AD005FAB005FAC005FAC -005FAA005FAA005FAA0060AC005FAA005DA9005FAB005FAA005FAA005FAA005FAA005FAA005FAC -005FAC005FAC005FAC005FAC005FAC005DAA005DAA005DAA005DAA0060AD0060AD005FAC005DAA -0060AD005FAC005EAB015EAB025FAD015EAC005BA9005CAA025FAD025EAD0060AD0060AD0060AD -005EAB005FAC005FAC0061B2093B6B2E2822FFFFFFFCFCFCFFFFFCFFFFFEFFFFFFFDFDFEFEFEFE -FFFFFF0C0C0CFFFFFF767676494949797979666666F1F1F12F2F2FEBEBEB0A0A0ACBCBCB000000 -FFFFFFFFFFFF6565656A6A6A171717D1D1D1BDBDBD565656ACACACFFFFFF464646A5A5A5FFFFFF -F6F6F6FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9C8C619192C387AAB0066AB055CB0 -035EAD0060AD0060AD0060AD0162AF0162AF0162AF005FAC0061AE0060AD0060AD0060AD0060AD -005DAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005DAD005DAD005DAD005DAD005DAD -005DAD005DAD005DAD005DAD005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005CAC005EAE005EAE005EAE005EAE005EAE005EAE005CAC -005FAF005FAF005CAC005EAE005DAD005DAD005DAD005DAD005DAD005DAD005DAD005FAF005FAF -005FAF005EAC005EAE005EAE005EAE005EAE005FAE005CAE005EAE005CAC005FAF005FAF005DAF -0060AF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF0060AF005DAF -005FAF005FAF005DAD005FAF005DAE0060AB0060AD0060AD0060AD0060AD0060AD0060AD0060AD -005DAA005FAC005FAC005FAC015CAC015EAC015EAC015EAC015EAC015EAC015EAC015EAC015EAC -015EAC015EAC015EAC015EAC015EAC015EAC015EAC015EAC015CAC005FAC005FAC005FAC005FAC -005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005DAA0060AD -0060AD025DAD025FAD005CAA025FAD025FAD025DAD0060AD0060AD0060AD0060AD0060AD005DAA -005FAD005FAD005FAD005DAA005EAC005FAC005BAA035DAD035EAD035EAD025DAC0059A8005BAA -005BAA005BAA0058A7005DAC0058A7005BAA005BAA005BAA005BAA005BAA005BAA005DAD005DAD -005EAE005EAE005CAC005DAD005DAD005EAE005EAE005FAF005FAF005DAD005DAD005EAE005EAE -005EAF0060AD005FAE005FAD0060AD0060AD005FAD005DAE005EAE005DAD005EAE005FAF005EAF -0061AF0060AE0060AE0060AE0060AE0060AE0060AE0061AE0060AE0060AE0060AE005FAE005EAE -005EAE005EAE005DAD005EAE005DAD0060AC005FAC005FAC005FAC005FAC005FAC0060AD005FAC -005EAB005FAC005FAC005FAC005DAB005DAB005DAB005DAC005DAC005DAC005DAB005DAB005DAB -005DAC005DAB005EAB005DAB005DAB005DAB005DAB005DAB005EAB005FAC005FAC005FAC005FAC -005FAC005FAC005EAB005EAB005EAB005EAB005EAB005EAB005FAC005EAB005FAC005DAA005FAC -015FAC025FAD005EAC005CAA015EAC025FAD025EAD0060AD0060AD0060AD005FAC005FAC005EAA -0162B408396A2E2822FFFFFFFCFCFCFFFFFCFFFFFEFFFFFFFDFDFEFCFCFCFFFFFF8D8D8DBEBEBE -8B8B8BF9F9F9E2E2E2696969FEFEFEE0E0E0848484D1D1D1CCCCCC4C4C4CC9C9C9FFFFFFA3A3A3 -D8D8D8888888EAEAEA626262000000000000A0A0A0F9F9F9656565E6E6E6FAFAFAFDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9C8C6181A2C3B7DAE0065AB055CB0025EAD0062AF0061AE -0061AE0162AF0162AF0162AF005FAC0060AD005FAC0162AF0060AD0162AE005DAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005EAE005EAE005EAE005FAF005FAF005FAF005EAE005EAE -005EAE005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005EAE005BAB005EAE005CAC005CAC005CAC005DAD005EAE005CAC005FAF005FAF005CAC -005EAE005EAE005BAB005BAB005BAB005CAC025FAF015FAF015FAF015FAF005FAF005DAC005DAE -005DAC005DAE005DAE005DAE005CAC005EAE005DAD015FAF015FAF005EAF005FAF005FAF005FAF -005EAF005EAF005EAF005EAF005EAF005EAF005FAF005FAF005FAF015EAF015FAF015FAF005DAD -025FAF005DAD0060AB0060AD0060AD0060AD0060AD0060AD0060AD005FAC005CA9005FAC005FAC -005FAC015CAC015EAC015EAC015EAC015EAC015EAC015EAC015EAC015EAC005CAA005CAA015EAC -015EAC015EAC015EAC005CAA015EAC005CAA005EAC005EAC005EAC005DAC005DAA005DAA005DAA -005DAA005DAA005DAA005DAB005DAA005DAC005DAA005EAC005BA9015EAC015EAD005DAB015EAC -005BA9025FAD025FAD025EAD015FAD015FAD015FAD015EAD015EAC005CA90060AD0060AD0060AD -005DAA005FAC005FAB005BA9025CAC035EAD035EAD025DAC0059A8005BAA005BAA005AA90059A8 -0059A8005AA9005BAA005BAA005BAA005BAA005BAA005BAA005EAE005CAC005FAF005FAF005DAD -005EAE005CAC005DAD005DAD005DAD005EAE005DAD005DAD005FAF005FAF005FAF005EAD005EAE -005EAE005EAE005EAE005FAE005DAE005EAE005DAD005FAF005FAF005EAF0060AF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF0060AF005EAF005FAF005FAF005DAD -005FAF005DAE0060AC0060AD0060AD0060AD0060AD0060AD0060AD005EAB005DAA005FAC005FAC -005FAC015DAC015EAC015EAC015EAC015EAC015EAC015EAC015EAC015EAC015EAC015EAC015EAC -015EAC015EAC015EAC015EAC015EAC015DAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC -005FAC005FAC005FAC005FAC005FAC005FAC005FAC005FAC005DAA0060AD0060AD025FAD005EAC -005CAA025FAD025FAD025EAD0060AD0060AD0060AD0060AD005FAC005DAA0063B40E3F6E2E2822 -FFFFFFFCFCFCFFFFFCFFFFFEFFFFFFFFFFFFFDFDFDFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9FFFFFFFFFFFFFFFFFFFFFFFF -B4B4B4FFFFFFFFFFFFD9D9D9FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFC8C8C51E1E303A7AAB0066AC085DB30461AF0062AE0061AE0062AF005FAC0060AD -005FAC0162AF0062AF0062AF0061AE0263B00062AE005DAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005CAC005CAC005CAC005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF005FAF -005FAF005FAF005FAF005FAF005FAF005CAC005CAC005FAF005FAF025EAF005DAC025FAF025FAF -025EAF005CAC015EAE005DAE005DAC005DAC005DAD005CAC005FAF005CAC005FAF005CAC005EAE -005CAC025EAF015EAF005BAC025EAF015EAE025FAF005CAD005DAD005DAD005FAF005EAE005EAE -005EAE005EAE005FAF005DAD005DAD005DAD005CAD005DAD005CAC0360B00059AA0360B0005FAB -005FAC005FAC0060AD0060AD0060AD0060AD0060AD0060AD005DAA005FAC005FAC015CAC015EAC -015EAC015EAC015EAC015EAC015EAC015EAC005CAA015FAD025FAD005CAA005DAB005DAB005CAA -0562B0005DAB025FAD005BA9005CAA005BA9005EAB0360AE025EAD025EAD025EAD005EAC0360AE -025EAC0360AE005DAB025EAD005DAB025FAD025EAD005EAB0360AE015EAC0360AE005CAA005CAA -005CAA005DAA005DAA005CAA025EAD025EAC015EAD0060AC0060AC0060AC005FAC005EAA005FAC -035EAD025DAC025DAC025DAC005BAA005AA9005AA9005BAA0059A8025DAC005AA9005AA90057A6 -005AA9005BAA005BAA005BAA005BAA005EAE005CAC005FAF005FAF005DAD005EAE005EAE005BAB -005CAC005CAC005DAD015EAE015EAE015FAF015FAF005FAF005DAD005EAE005DAD005EAE005EAE -005DAE005DAD005EAE005DAD015FAF015FAF005EAF005FAF005FAF005FAF005EAF005FAF005FAF -005FAF005FAF005EAF005FAF005FAF005FAF015FAF015FAF015FAF005DAD015FAF005DAD0060AC -0060AD0060AD0060AD0060AD0060AD0060AD005EAB005DAA005FAC005FAC005FAC015DAC015EAC -015EAC015EAC015EAC015EAC015EAC015EAC015EAC005DAB005DAB015EAC015EAC015EAC015EAC -005DAB015EAC005DAB005EAC005EAC005EAC005DAB005DAB005DAB005DAB005DAB005DAB005DAB -005DAB005DAB005DAC005DAB005EAC005CAA015FAD015EAD025FAD005DAB005CAA025FAD025FAD -025FAD015FAD015FAD015FAD015FAD005EAB005DAA0064B40D3F6E2E2822FFFFFFFCFCFCFFFFFC -FFFFFEFFFFFFFFFFFFFEFEFEFCFCFCFCFCFCFAFAFAFCFCFCFBFBFBFBFBFBFBFBFBF9F9F9FBFBFB -FDFDFDF9F9F9FEFEFEFAFAFAFCFCFCFCFCFCFBFBFBFFFFFFFBFBFBFDFDFDF7F7F7BDBDBDD8D8D8 -FFFFFFFBFBFBFAFAFAFBFBFBFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8C8C5 -1D1C2E3778A90064A9065DB10561B00060AD0060AD0060AD0060AC0060AD0060AC0060AD0060AD -0060AD0060AD0061AE0060AD005DAF005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE -005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE -005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE -005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE -005EAE005FAE005CAC005CAC005FAE005FAE025DAF015CAC035EAF015CAD015CAD015CAD025DAE -025CAE005BAC025CAE015CAD015CAC025EAF005DAC025FAF005DAC005EAD005EAC035DAF025DAE -005BAC015CAD015CAD015CAD025FAF015EAE015FAF005DAD005DAD005DAD005DAD005DAD005DAD -015FAF015EAE015FAE035DAE025DAE035EAF005BAC025DAE005BAC005EAA005EAB005EAB0060AD -0060AC0060AC0060AC0060AC0060AD005DAA005FAB005FAB015CAB005EAB005EAB005EAB005EAB -005EAB005EAB005EAB015EAC005BA9005DAB005DAA005CAA005CAA005CA90260AE005DAB005DAB -005AA9005BAA005BAA005BAA025DAC015CAB015CAB015CAB015CAB025DAC005AA9025DAC005AAA -015CAB005AAA015CAB015CAB015CAB015EAC005BA9015EAC005CAA005CAA005CAA005BAA005BAA -005BAA015CAB015CAB025CAB015DAB015CAB025DAB005AA9025EAC005AA9005BAA005BAA005BAA -015DAC0058A7005BA9005AA9005BAA005BAA0057A6015EAD005CAB0058A7005BAA005BAA005BAA -005BAA005BAA005CAC005CAC005FAF005FAF015FAD005EAC015FAF015EAE005DAD005CAC015DAD -005EAD005EAD005EAD005EAD005EAE005DAE005CAC005EAE005DAD005DAE005DAD015EAE005EAE -005DAC025FAF015FAF025FAF005CAC005DAD005EAE005EAF005EAF005EAF005EAF005EAF005FAF -005CAC005DAD005DAD005DAD005DAD015EAE025EAE005AAA0361B00060AC0060AD0060AD0060AD -0060AD0060AD0060AD005FAC005FAC005EAB005FAC005FAC015DAC015EAC015EAC015EAC015EAC -015EAC015EAC015EAC005DAB015EAC005DAB005DAB015EAC015EAC005DAB0360AE005DAB015DAB -005DAA005DAA005DAB005EAD025FAD015EAC015EAC015EAC015EAC025FAD015EAC015EAC005DAC -025FAC005EAC025EAC015FAD025EAD0360AE015FAD025EAC005DAB005DAB005DAB005EAB005EAB -015EAC025FAD025FAC005EAC0063B40E41712E2721FFFFFFFCFCFCFFFFFDFFFFFEFFFFFFFFFFFF -FFFFFFFEFEFEFFFFFFFEFEFEF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8 -FFFFFFFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFF7F7F7FFFFFFFFFFFFFEFEFEFDFDFDFDFDFD -FDFDFDFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9C8C61C1C2D3575A70061A5 -045BAF0661B0005FAA005FAC005FAC0061AD0060AD0061AD005FAC005FAC005FAC005FAC0061AD -005FAB005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE -005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005FAF -005FAF0060AF005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE005EAE -005EAE005EAD005EAD005EAD005EAE005EAE005EAE005EAE005EAE005EAF005EAE005EAE005CAC -005CAC005EAE005FAE035CAE025BAC045DB0015AAB035DAE035DAE055EB0045DAE0059AA035CAD -025BAD025BAC035EAE015DAC035EAE005CAC015DAD005DAC045DAE035CAE015AAB015AAC015AAC -015BAC005BAB005BAB005BAB005BAC005BAC005BAC005BAB005BAC005BAC005BAB005BAB005BAB -0159AB015AAB0058AB055EAF0058A9045EAF005CA9005CA9005CA90060AD0060AB005FAD005FAC -005FAC005FAC005DAB005EAB005EAB005EAB005EAB005EAB005EAB005EAB005EAB005EAB005EAA -005EAD0059A6005DAA005DAA005CA9005CA9005AA8025FAD005CAA005CAA015BAA015BAA015BAA -005AAA035CAC025CAB005AAA015AAA005AAA035CAB0159A9035DAD0059A8025BAA0059A8015BAA -015AAA015BAA005FAB005BA9015FAD005AA8005CA9005BA9005AA90059A90059A9015BAA015AAA -005BAA045AAA045AAA045AAA045AAA0158A8045AAC0059A60059A80059A80059A8015EAC0056A6 -005BAA005AAA005AAA015CAC0059A7005BAA0058A7005BAA005BAA005BA8005BAA005BA8005BAB -005CAC005FAF015FAE025DAD015BAC035EAF015CAD015BAD015CAC025DAE025BAE005BAC025CAE -015BAD015DAE025EAE005CAC025FAF005DAD005EAD005EAD035EAF025CAE005BAC015CAD015CAD -015DAD025FAF025FAF025FAF005DAD005DAD005DAD005DAD005DAD005DAD025FAF025FAF015FAF -035DAF035EAF035EAF015CAD025DAE005DAC005EAB005EAB005EAB0060AD0060AC0060AC0060AC -0060AC0060AD005EAB005FAB005FAB015DAB005EAB005EAB005EAB005EAB005EAB005EAB005EAB -015DAB005DAB005EAC005BA9005CAA005CAA015DAB025FAD005CAA005DAC005AAA005AAA005AAA -015CAB035DAC025CAC015CAB015CAB015CAB025CAB015BAA025DAB005BAA025BAC005BAA015CAB -015CAB015DAB005EAB005CAA025FAD005CAA005CAA005CAA005BAA005BAA005BAA015CAB015CAB -025DAB0061B20E3F742E2821FFFFFFFCFCFAFFFFF9FFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCF5F5F5E7E7E79C9C9CA2A2A29C9C9CA2A2A2D2D2D2FFFFFFFFFFFFF8F8F8FFFFFFFFFFFF -FFFFFFFFFFFFC7C7C7959595FFFFFFFFFFFFFBFBFBFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8C8C61D1D2C36769D0062A8055DB30162A90060B2 -0061B3005FB20061B50061B50061B5005FB20061B3005FB30060B40060B30060B20061B30060B3 -0062B4005DAF005DB1005DAF0062B40060B30061B30061B30061B30061B3005FB2005FB2005FB2 -005DB0005EB1005DB00061B30061B30061B30061B30061B30061B40060B8005FB60060B8005DB4 -005DB4005CB40062B30060B30061B30061B30061B30061B5005FB5005EB5005EB50160B7005FB7 -015FB70061B40061B30061B30060B3005FB1005EAF005DB0015FB2005DB1005FB1005FB0005EB1 -0159B30159B40159B40159B40159B40159B4025AB3025AB5035BB5025BB5025BB5025BB50159B4 -0159B40159B4035BB5025AB5035AB5025AB3025BB5025BB5025BB5025BB5035BB50159B40159B4 -0159B4045BB5045BB5045BB5045CB6045CB6045CB60159B30159B30159B3025AB4025AB4015AB4 -055DB8035BB6065DB7005FB5005EB6005FB6005DB5005DB5005CB5005DB0005DB1005DB1005DB1 -005DB1005DB1035AB1045AB1045AB1055BB2055BB1035BB1065CB3055BB3025AB0035AB10359B0 -0257AF0259AF0259AF0259AF0256AD035AB1045AB00158AF0158AF0158AF0158AF0158AF0158AF -0158AF0158AF0158AF0158AF0158AF0157AE035AB20057AE035AB20158AF0158AF0158AF0259AF -0259B00259AF0259B00259B00258B00259B00259B00259B00158B00159B00258B00456AF0457AF -0557B00053AB0255AD0053AC0958B40656B30353B00655B20554B10555B30458AA0757A60B559F -0857A1035AAC0057AE0057A20058A50055A70158AA0157AB0057AA005CAB005CAD005FAF015EAD -025DAE015BAC035DAE015BAB025CAD035DAE045EAF025CAD005AAA025CAD015BAC025DAD025EAE -005DAC035FAE005DAC005DAC015DAD045DAE025CAD005AAB015AAC015AAC015BAC005DAC005CAC -005CAC005BAC005BAC005BAC005BAB005BAB005BAC005CAC005CAC005CAC015BAC015BAC015BAC -025CAD005AAB035EAD005DA9005DA9005EAA0060AD0060AB005FAC005FAB005FAB005FAC005EAA -005EAA005EAA015EAA005EAA005EAA005EAA005EAA005EAA005EAA005EAA015DAB005AA7005DAA -005DAA005BA9005CA9005CA9015FAC005BA8005CAA015BA9015BA9005BA9015BAB025CAB025CAA -015AAA015AAA015BAA025BAB005AA9025CAB005AA9015CAA005AA8015BAA015AAA015CAA005EAB -005BA9015EAB005BA9005CA9005BA9005AA90059A9005AA9015BAA015AAA015BAA015DB1103D6D -2D2822FFFFFFFCFCF9FFFFFBFFFFFBFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8D8D8 -B4B4B45A5A5A1E1E1ED6D6D6D1D1D1F1F1F1F4F4F4FFFFFFD6D6D6F2F2F2DDDDDDFFFFFF9B9B9B -000000FFFFFFD3D3D3F6F6F6FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFC9C8C61D1E2933769F0068B60062C60065C10062AB0062AC0062AC0162AC -0161AC0162AC0062AC0062AC0062AC0060AB0061AC0060AB0063AE0063AD0063AD0063AE0063AE -0063AE0063AD0063AD0063AD0063AD0063AD0063AD0261AD0262AD0261AD0262AD0262AE0362AD -0162AD0162AD0162AD0063AD0063AD0063AD0361AD0262AE0362AE0160AB0161AB0160AC0063AC -0063AD0063AD0063AD0063AD0063AD0261AD0262AC0261AD0362AD0262AC0361AD0163AC0162AD -0162AD0163AD0062AC0060AA0160AB0261AC0160AB015FAB0160AB015FAB025EAA025EAA025EAA -025EAA025EAA025EAA025EAA025EAA025EAA025EAA025EAA025EAA025EAA025EAA025EAA025EAA -025EAA025EAA025EAA025EAA025EAA025EAA025EAA025EAA025EAA025EAA025EAA025FAA025EAA -025EAA0360AC035FAB035FAB0360AC0360AC0360AC025FAB025FAB025EAB0362AE035EAB0462AE -015FAA015FAA015FAA015FAA015FAA0160AB0160AA0160AB0160AB0160AB0160AB025FAB035EAB -035DAB035DAB035FAB035FAB025DAB0560AD035DAB025EAA015BA7035DAA045FAC025CAA025CAA -015CA90560AC015BA8025DA9025CAA025CAA025CAA025CAA025CAA025CAA025CAA025CAA025CAA -025CAA025CAA025CA9045EAA025CA8045EAA025CA9025CAA025CAA035CA9025CA9025CA9025CA9 -025CA9025CA9025CA9025CA9025CA9025CA9025CA9025CA9035DAA035CAA045DAA015AA7025BA8 -015AA8045BA9045AA9055AA9055AA8035AA9045AA7005EBD005EBA005DB7005AAF0159AB0559A8 -0154A00256A30154A30256A60355A50256A7005DB1005EB2005FB2005BB40159B50159B40159B5 -0059B4015AB5015AB5025BB5025AB5015AB5025AB5025AB5025BB5015AB5015AB4015AB5015BB5 -015AB5015AB5025BB4025AB5015AB5015AB5015AB5025AB50059B40059B40159B4025AB5025AB5 -025AB5025BB6025BB6015AB50058B30058B30058B30059B40059B4015AB5045CB7015AB5035EB8 -005EB5005EB6005EB6005EB5005EB5005CB5005DB1005DB1005DB1005CB1005CB1005DB1025BB1 -025BB1025BB1035CB2035CB2035CB2045DB3025BB2015BB1025BB20059B00059AF015AB0015AB0 -0159AF0058B0035CB3025AB10058B00159B00159B00059B10159B10159B10058B00158B00059B0 -0159B10158B00059B10058B00057AF0159B10059B00158B00059B0005AB1005AB0005AB1005AB0 -005AB00058B00058B00058B00058B00059B00058B00259B0025AB80E3D712E2822FFFFFFFCFCF9 -FFFFFBFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF9F9F9FAFAFAFFFFFF747474303030 -FFFFFF969696A3A3A3595959EEEEEE454545949494686868929292BABABA060606FBFBFB707070 -F5F5F5FBFBFBF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -C9C8C61C1F283577990065B1065EBC015EB20065B50063B60063B60066B80065B80066B80063B6 -0063B60063B60064B70064B60064B70062B40063B40063B40061B40061B40061B40063B40063B4 -0063B40062B40063B40061B40063B70062B60062B7005EB30060B40060B40064B50062B50062B5 -0062B40063B40063B50061B10062B20062B20062B10062B10061B00063B40063B40063B40063B4 -0063B40063B40063B30063B20063B30061B10061B10062B10062B50062B50062B50063B80063B5 -0060B30061B40062B60060B4005EB3005EB3005FB20062B10062B00062B00062B00062B00062B0 -0061AF0061AF0061AF0061AF0061AF0061AE0062B10062B00062B10061AF0061AF0061AF0061AF -0061AF0061AF0061AF0061AF0061AF0062B00062B00062B00060AF0061AF0060AF0062B00062B0 -0062B00060AF0061AF0060AF0062B00062B00062B00063B20060AE0063B2005FAE005FAF005FAF -005FAF005FAF005FAF005EB3005FB3005FB3005FB3005FB3005EB3005FB3005FB3005FB3005FB2 -005FB2005EB20061B4005FB2005EB1005FB30060B3005DB10060B2005EB20060B2005EB10060B4 -005FB3005EB2005FB2005EB2005EB2005EB2005EB2005EB2005FB2005FB2005FB2005FB2005EB2 -0060B4005DB10060B4005EB2005FB2005EB2005FB3005FB3005FB3005FB3005FB3005FB3005FB3 -005FB3005FB3005FB3005FB3005FB30060B20060B20060B4005CB0005EB0005EB1005CAC005DAE -0060B0005CAA005CAC005BAB055BA9005AAD005BB4005CB50057AC0A5DAC0057AA035AAB0158A9 -025BAC035AB10259B3005DAC005FAB005FAB005FAA015DAA015CAA015CAB015CAB015CAB015CAB -025DAB025DAA025DAB025DAB025DAB025DAB015CAB015CAB015CAB025DAB025DAB025EAB025DAB -025EAB035DAB035EAB035EAB035EAB025DAB025DAB025DAB035EAB035EAB035EAC045FAD045FAC -045FAC055FAD055FAD055FAD045EAB045EAC055FAD065FAE045EAC0660AE025EAB015EAB015EAB -015EAB015EAB015FAB025FAB025FAB025FAB025FAB025FAB045EAB065DAB065DAB065DAB055DAA -055DAA065DAA065EAC035CA9045CA9035AA8045CA8055DAB035AA8035AA8045BA8065DAA0158A5 -045BA9035AA8035AA8035AA8035AA8035AA8035AA9035AA9035AA9035AA9035AA9035AA9045BA9 -055DAA045BA9055CAB035AA9035AA9045BA9055CA9045CA9045BA9045BA9045BAA045BA9045CA9 -045CA9045CA8045BA8035CA9045BA9035EAF0B39722E2822FFFFFFFCFEF9FFFFFBFFFFFBFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF5F5F5FFFFFF7272722F2F2FFFFFFFC2C2C2BEBEBE -2D2D2DD4D4D45C5C5C7E7E7E9F9F9F1E1E1EC6C6C60A0A0AAEAEAEFFFFFFFBFBFBF8F8F8FDFDFD -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9C8C61C1F263D758E -0A5B8A234A84284D74214C82214C821F4A80214B81214B81214B81214C81214C81214C81214B81 -204B81224C811D487F1E497F1E497F1E4A7F1E4A7F1E4A7F1E497F1E497F1E497F1F4A801E487E -1F4B801F477F20497F20497F20497F20497F1F487F1E497F1E497F1E497F1E497F1E497F1E4A80 -1F487C1F487B1F487B20497C20497C1F497C1E49811E497F1E497F1E497F1E497F1E497F1F497C -20487C20497C20497C20497C1F497B1E49811E497F1E497F1E497F1E4A7F1E497F21498121497F -21498120487E20488020497F1D4A7D1D4A7C1D4A7C1D4A7C1D4A7C1D4A7C1D4A7C1D4A7C1D4A7C -1D4B7D1D4B7D1D4B7D1B497B1B4A7B1B4A7B1D4A7C1D4A7C1D4A7C1C4A7C1C4A7C1C4A7D1B497B -1B4A7C1B4A7B1D4A7C1D4A7C1D4A7C1D4B7D1D4B7D1E4B7D1C4A7C1C4A7C1C4A7C1D4A7C1D4A7C -1D4A7C1D4B7D1D4B7D1E4B7D1C4A7B1D4B7D1B4A7B214A7D21497D21497D21497D21497D21497C -1F48801F487F1F487F1F487F20487F1F487F1D497F1F497F1E497F1E497F1E497F1E497F1E497F -1E497F1F4B811E497F1E497F1E497F1E497F1E497F1E497F1E497F1E497F1E497F1E497F1E497F -1E497F204B811D497F204B811E497F1E497F1E497F1E497F1E497F1E497F1E497F1E497F1E497F -1E497F1E497F1E4A801E497F1E497F1E497F1E497F1E497F1E497F1E497F1E497F1E497F1E497F -1E497F1E49801C477D1D477E1D497F1A457B1A457C1A467C1E477A1D47791C4579204B7D1C467A -1D477B274566274C751B4B7F0D50930D5DAB0459B2005CB8005DB3005DAF005BB0015BB70059BC -2C73A20856A3055DA70C5FA60C5CAF0A5DAC0B60A70B60A60B60A50B60A40B60A70B60A90B5FA7 -0A5EA6085DA5095DA5095DA5095DA4095CA6095EA7085DA6075BA4075CA5075BA3055DA5055CA5 -055CA5055CA5055CA5055CA5055CA7045BA5035AA4035AA4035AA5025AA4005CA5005BA4005CA5 -005BA4005AA3005AA2005BA5005BA4005AA3005CA4005AA3005AA3005BA4005BA4005BA4005BA4 -005BA5005AA4005AA6005AA6005AA6005AA60059A50057A3005AA5005AA6005AA6005AA6005AA7 -005AA50058A60058A7005AA70059A80059A70059A7005CAA005BAA0059A80059A70059A80059A8 -0058A70059A70058A60059A50059A50059A40059A40059A3005BA4005AA4005AA4005AA50057A2 -0059A30059A30059A40058A20058A20058A40059A20059A0005AA20059A50058A6015AAA005AAD -035AA1005BA80060B10F3C692D2822FFFFFFFCFEF9FFFFFAFFFFFBFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFEFFFFFFFDFDFDF8F8F8FFFFFF717171282828FFFFFFA6A6A6414141414141D5D5D55E5E5E -7E7E7E949494242424C2C2C2020202808080888888FFFFFFFBFBFBFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8C8C71D1E253A7084014D7600083C000325 -00031D00041F00062100031F00031F00031F00031F00031F00031F00031F00031F00032000041F -00042000042000042000042000042000042000042000041F00052100031E00052100021F000320 -00032000032000032000022000042000042000042000042000042000042000021F00031F00031F -00041F00041F00032000041F00042000042000042000042000041F00022000041F00031F00031F -00041F00022000041F00042000042000042000042000041F00031F00031F00031F00021E00021E -00021F00031F00031F00031F00031F00031F00031F00042000042000042000031F00031F00031F -00021F00031E00031E00031F00031F00031E00042000041F00042000021E00031E00031E00031F -00031F00031F00031F00031F00031E00042000041F00042000031E00031F00031F00031F00031F -00031E00042000062100042000021E00021F00021F00021F00021F00021E000520000420000420 -000420000420000420020320010320020320000320000320000320010320010320010320000320 -00032000032000032000032000032000032000032000032000032000032000042000031F00021D -00031F00042000032000032000032000032000032000021E00021E00021E00021E00021E00021E -00032000032000032000032000032000032000021E00021E00021E00032000032000031F000520 -00052000052000031F00031F00031F00021F00021F00021E00052100021E00031F00082700021D -00021D00113E09478A0250A50051A100519C0053970051970051A00053AA65848D2659A1266BAC -2D70A33067BC2B68B62B68A92B6AA62B69A22C6BA0306EA7306EAA2C6AA62B6AA62B69A62C6AA7 -2C6AA72C6BA82A67A72E6CAB2865A52864A42865A52563A22064A52063A42063A51F62A31F62A3 -1E62A22466AB2163A71D5FA51C60A41C5FA41B5DA11160A01664A51260A0115EA00D5B9C0F5C9B -0E5BA00E5D9E0E5D9E0D5D9E0D5D9F0E5D9E0E5FA10D5FA10E5FA10B5D9D0D5F9F0B5D9D0C599E -0C5A9E0C5A9E0D5B9F0E5DA1105EA10E5CA10E5CA10F5DA10E5CA00E5CA1105EA10B58A10C5BA2 -0C5AA10D5BA30D5BA30D5BA30E5CA30D5CA30E5CA20F5DA40F5CA40E5CA30F5EA4105EA4105EA3 -0C5B9F0C5C9E0C5C9C0B5A9A0B5A990E5E9E0856970B5B9A0D5D9D0F5F9D0F5E9D10609F0D5B9A -0D5B9B0B5B9B0D5D9D0D5D9A0C5C9611629C105EA10D5BA2105AA6095CAC175A9603579E1165AF -1A34512B2724FFFFFFFCFEF9FFFFFAFFFFFBFFFFFEFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFF -FDFDFDDADADA5B5B5B4A4A4AD2D2D2C6C6C6A4A4A4969696CFCFCF474747848484B3B3B3525252 -9696962E2E2ED7D7D7393939CFCFCFFFFFFFFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFC8C7C71E202640798E005A8F1953981A578C15598E14598D13578C -14588D14588C14588C14588D14588D14588D14588C14588C14598D11568A12568A12568A12568A -12568A12568A12568A12568A12568A13578C11568A13578C14558A15548A15558A15558A15548A -15568A10568A12568A12568A12568A12568A11568B16569015558F15559014548E14548E15548F -11568B12568A12568A12568A12568A11568B14558F15548E14548E14548E14548E15558F11568B -12568A12568A12568A12568A11568A14558A14548A14548A12538913538913538913528D14528D -14528D14528D14528D14538D10518B12518B12518B12528C12528C12528C14538E13538D13538D -12528D14528D14538D11518B12518B11518B13538D13538D13538D14538D14538D14538D11518C -12528C12528C12518B12518C12518B14538D14538D14538D11518C12528C12528C12508A13528D -12508A11518C11518C11518C11518C11518C12528C0E53880E53870E53870E53870E53870F5488 -124F85125085124E85135287135187135287134E85134F85124E85145188145187145187145187 -145187145187145187145187145187145187145187135187155389145187155389135187145187 -145187145187145187145187155288145288145288145288145288155288145187145187145187 -145187145187145187155288155288155288145187145187145287135388135388135388135387 -135387135489134F8A134E8B134E8A15518E124E8A134F8A13558F29517925334900001C204D86 -1155A809529409538E0B55880751850C52910D5299DBD2ACF0F8FFE2FAFFF0FFFEF4FBFFEEFBFF -EFFFFFEFFFFFEFFFFFEFFFFFEEFFFFEEFFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF1FFFFEEFFFF -EEFFFFEEFFFFEEFEFFEEFFFFEFFFFFEDFFFFEEFFFFEEFFFFEEFFFFEEFFFFEFFFFFEDFFFFEEFFFF -EFFFFFEFFFFFEFFFFFEFFFFFEDFFFFECFDFFEDFFFFEBFDFFEDFFFFEDFEFFECFFFFECFEFFEBFEFF -EAFFFFE7FEFFE5FEFFE6FEFFE5FDFFE3FBFFE6FEFFE5FCFFE0F9FFE5F7FFE5F8FFE5F8FFE0F1FF -DFF0FFDEEFFFDAEEFFDBEDFFD8EAFFDEF1FFDBEDFFD6EAFFDCECFFDAEBFFD8E8FED8EAFFD8E8FF -D8E9FED7EDFFD7EDFFD8EDFFD6EBFFD7EDFFDAEFFFD9ECFFD9ECFFD8EBFFE2F7FFE3F6FFE4F8FF -E4F7FFE5F8FFE3F6FFE7FBFFE8FBFFE8FAFFE8FDFFE8FCFFE7FCFFE9FDFFEAFEFFECFFFFEDFFFF -EDFFFFEDFFFFEDFFFFEDFFFFEDFFFFEEFFFFEEFFFFECFFFFECFEFFFCFFFF9BB2BD1E1B1AFFFFFF -FEFEFEFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFCFCFCFBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFC7C7C7161917E8F6F1E9FFFFEEFFFFF0FEFFE9FEFFEDFFFFECFFFFECFFFFECFFFFECFFFF -ECFFFFECFFFFECFFFFECFFFFECFFFFECFFFFEFFFFFEEFFFFEEFFFFEEFFFFEEFFFFEEFFFFEEFFFF -EEFFFFEFFFFFEEFFFFEFFFFFEEFFFFEDFFFFEDFFFFEDFFFFEDFFFFEDFFFFEDFFFFF1FFFFF2FFFF -F2FFFFF2FFFFF2FFFFF1FFFFF2FFFFF3FFFFF2FFFFF3FFFFF3FFFFF3FFFFF0FFFFF2FFFFF2FFFF -F2FFFFF2FFFFF2FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFEFFFFFEFFFFFEEFFFFEEFFFFEEFFFF -EEFFFFEEFFFFF2FFFFF3FFFFF3FFFFF0FFFFF1FFFFF1FFFFF1FFFFF0FFFFF0FFFFF0FFFFF0FFFF -F1FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF1FFFFF1FFFFF1FFFFF1FFFFF0FFFFF0FFFF -F2FFFFF2FFFFF2FFFFF0FFFFF1FFFFF1FFFFF0FFFFF0FFFFF0FFFFF1FFFFF1FFFFF1FFFFF0FFFF -F0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF1FFFFF1FFFFF1FFFFF1FFFFF1FFFFF1FFFFF1FFFFF1FFFF -F1FFFFF0FFFFF0FFFFF0FFFFF2FFFFF2FFFFF2FFFFF2FFFFF2FFFFF2FFFFEFFFFFEFFFFFEFFFFF -EFFFFFEFFFFFEEFFFFF2FFFFF2FFFFF2FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF1FFFF -F1FFFFF1FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF1FFFFF0FFFF -F0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF1FFFFF0FFFFF1FFFF -F0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF0FFFFF1FFFFF1FFFFF1FFFFF1FFFF -F1FFFFF1FFFFF0FFFFF0FFFFF1FFFFDEFFFFFAFFFF8B988D090907DEE4EAF9FFFFF7FCFFEDFDFF -ECFFFFE4FFFFD3FDFF64A5D5EBD3A1FFFFFFFAFFFBFEFFF4FFFBFEFFFCFBFFFFFCFEFFFBFEFFFB -FEFFFBFEFFFBFEFFFBFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFEFBFDFDFBFDFEFBFCFDFAFEFFFC -FEFFFBFEFFFCFDFDFAFDFEFBFDFEFBFDFEFBFDFEFBFDFEFAFDFEFCFDFDFBFDFDFBFDFDFBFDFDFB -FDFDFBFEFFFBFDFFFBFDFFFBFDFFFCFDFFFBFDFFFCFCFEFBFCFEFBFBFEFBFBFFFCF9FFFCF5FDFA -F8FFFBF8FEFBF7FDFBF5FBFBF6FDFDF5FDFDF7FAFCF4F7FCF1F4FAF5F9FBF4F8FAF3F6FBF0F7FA -F1F6FBF1F6FBF0F5F9F0F4FAEEF4FAEDF0F7EEF1F8EDF1F9EDF1F8EDF1F8EDF0F8EFF3F9F0F1F9 -F0F1F9F0F2F9F0F3F9F1F4FAF4F8FCF3F9FBF4F9FBF0F5F8F1F7F9F2F8F8F3F9F9F6FCFBF8FDFD -F9FFFEFBFFFEFBFFFEFAFEFBFAFEFBF9FEFBFAFEFBFCFFFCFBFFFDFCFFFCFDFFFCFDFFFCFCFEFB -FCFEFBFCFDFCFCFEFBFDFEFBFCFEFAFEFFFDFFFFFFA9AEAD1B1B1BFFFFFFFDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFEFEFEFDFDFDFEFEFEFDFDFD -FEFEFEFEFEFEFDFDFDFFFFFFFEFEFEFBFBFBFFFFFFFCFCFCFEFEFEFCFCFCFCFCFCFEFEFEFBFBFB -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7C7C7151B18 -F0EFEEF3FFFFF7FFFFFAFEFFF9FFFBFCFFFCFBFFFBFBFFFCFBFFFCFBFFFCFCFFFDFCFFFCFCFFFD -FBFFFCFBFFFCFBFFFCFCFFFCFBFFFCFBFFFCFBFFFCFBFFFCFBFFFCFBFFFCFBFFFCFBFFFCFBFFFC -FBFFFCFBFFFCFBFEFCFBFEFCFBFEFCFBFEFCFBFEFCFCFEFCFCFEFCFDFFFCFDFFFCFDFFFCFDFFFC -FDFFFCFEFFFCFFFFFCFEFFFCFEFFFCFEFFFCFFFFFCFCFFFCFDFFFCFDFFFCFDFFFCFDFFFCFDFFFC -FEFFFCFEFFFCFEFFFCFEFFFCFEFFFCFEFEFCFCFFFCFBFFFCFBFFFCFBFFFCFBFFFCFCFFFCFEFFFC -FFFFFCFEFFFCFEFFFCFEFFFCFEFFFCFEFFFCFEFFFCFEFFFCFEFFFCFEFFFCFEFFFCFDFFFBFDFFFB -FDFFFBFDFFFBFDFFFBFDFFFBFEFFFCFEFFFCFEFFFCFEFFFCFEFFFCFEFFFCFEFFFCFEFFFCFEFFFC -FEFFFCFEFFFCFEFFFCFDFFFBFDFFFBFDFFFBFEFFFCFEFFFCFEFFFCFDFFFBFDFFFBFDFFFBFDFFFB -FDFFFBFDFFFBFEFFFCFEFFFCFEFFFCFEFFFBFEFFFBFEFFFBFEFFFCFEFFFCFEFFFCFDFFFBFDFFFB -FDFEFBFEFFFCFEFFFCFEFFFCFFFFFDFFFFFCFFFFFDFEFEFCFEFFFCFEFFFCFEFFFCFEFFFCFFFFFC -FDFFFCFEFFFCFEFFFCFDFEFAFDFFFBFDFFFBFDFFFBFDFFFBFDFFFAFEFFFCFEFFFBFEFFFBFEFFFC -FEFFFCFEFFFCFEFFFCFEFFFCFEFFFCFDFFFAFDFFFBFDFFFAFEFFFCFEFFFCFEFFFCFEFFFCFEFFFC -FEFFFCFEFFFCFEFFFCFEFFFCFDFFFAFDFFFBFDFFFAFEFFFCFEFFFCFEFFFCFDFFFAFDFFFBFDFFFB -FDFFFBFDFFFBFDFFFBFDFFFBFDFFFBFDFFFAFEFFFCFEFFFCFEFFFCFEFFFCFEFFFCFEFFFCFDFFFB -FDFFFBFFFEFBF4FFFBFFFFFF918C89090908E8E6E3FFFFFFFFFCF8FDFDF9FAFFF7FCFFFBE9FFFF -71A2C4E8C68CFFF4F6FBFBF2FFFDE7FFF6FBFFF6F3FFFDF6FFFCF4FFFBF4FFFBF4FFFBF4FFFBF5 -FFFBF1FFFBF0FFFBF0FFFBF0FFFBF0FFFBF2FFFAF1FEFBF1FEFAF1FFFDF4FFFDF3FFFDF4FFFBF3 -FFFBF3FFFBF3FFFBF3FFFBF3FFFBF3FFFCF7FFFAF6FFFAF6FFFAF6FFFAF6FFFCF7FFFCF2FFFCF4 -FFFCF2FFFDF4FFFDF3FFFCF5FFFAF7FFFBF7FEFCF7FEFBF6FCFCF6FBFAF4FEFCF4FEFCF6FBFBF4 -FBF8F6FCF9F8F8F5F4FAF2F8FBF3F8FAF3F8F6EEF3F5EFF3F4EDF1F0EBEFF3EEF2F5F1F3ECE8EA -EEEAECEEE9EDEFE7EAF2EAEDF3ECEFF2EAEDF2EAEEF2EAEEF5EAEEF5EAEEF5E9EEF6EBEFF8ECF2 -F8EEF1F2EFF1F2EFF1F1EDEEF7F4F2F7F5F2F7F4F1FCF9F6FCF8F6FBF8F5FCF9F6FDFAF8FFFCF8 -FEFCF6FEFCF6FEFCF5FDFBF5FFFDF8FFFDF8FEFBF7FFFCF7FFFDF7FDF9F5FEFAF5FEFBF6FEFBF1 -FEFBF1FEFBF1FEFBF2FFFFFFB1ACA51A1B1BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFEFEFEFEFEFEFDFDFDFFFFFFFFFFFFFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFDFDFDFEFEFEFDFDFDFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7C7C7141616ECEDEDF6FFFCFDFEFD -FEFAFBFBFCF2FFFFF4FDFEF2FEFEF4FEFEF4FEFEF4FDFDF3FDFDF4FDFDF3FEFEF4FEFEF4FEFEF4 -FCFDF2FCFDF2FCFDF2FCFDF2FCFDF2FCFDF2FCFDF2FCFDF2FCFDF2FCFDF2FCFDF2FDFDF2FEFCF2 -FEFCF2FEFCF2FEFCF2FEFCF2FEFCF2FDFDF2FCFDF2FCFDF2FCFDF2FCFDF2FCFDF2FDFCF2FDFCF2 -FDFCF2FDFCF2FDFCF2FEFCF2FDFDF2FCFDF2FCFDF2FCFDF2FCFDF2FDFDF2FFFBF2FFFBF2FFFBF2 -FFFBF2FFFBF2FEFBF2FDFDF2FCFDF2FCFDF2FCFDF2FCFDF2FCFDF2FDFCF2FDFCF2FDFCF2FEFDF3 -FEFDF3FEFDF3FEFDF3FEFDF3FEFDF3FEFDF3FEFDF3FDFDF3FEFDF3FEFDF3FEFDF3FEFDF3FEFDF3 -FEFDF3FDFDF3FEFDF3FEFDF3FEFDF3FEFDF3FDFCF3FFFEF4FFFEF4FFFEF4FDFCF3FEFDF3FDFDF3 -FEFDF3FEFDF3FEFDF3FDFDF3FEFDF3FDFDF3FEFDF3FEFDF3FEFDF3FEFDF3FEFDF3FEFDF3FDFDF3 -FEFDF3FDFCF3FFFEF5FFFEF4FFFEF5FDFCF3FEFDF3FDFDF3FEFDF3FEFDF3FEFCF3FFFEF4FFFEF4 -FFFEF4FDFCF3FEFCF3FFFEF3FFFDF4FFFDF4FFFDF4FFFDF4FFFDF4FFFDF4FFFEF4FEFEF4FEFEF4 -FEFCF3FEFDF3FEFDF3FEFDF3FEFDF3FEFDF3FFFEF5FFFEF4FFFEF5FDFCF3FEFDF3FEFDF3FEFDF3 -FEFDF3FDFDF3FEFDF3FEFDF3FEFDF3FDFDF3FEFDF3FEFDF3FEFDF3FEFDF3FEFDF3FEFDF3FEFDF3 -FDFDF3FEFDF3FEFDF3FEFDF3FDFDF3FEFDF3FDFDF3FEFDF3FEFDF3FEFDF3FEFDF3FEFDF3FEFDF3 -FEFDF3FEFDF3FEFDF3FDFDF3FEFDF3FEFDF3FEFDF3FEFDF3FDFDF3FEFDF3FEFDF3FEFDF4FDFCEE -FFFFFF958A90070806E5E2DEFDFFF4FFF9EDFEF8EFFCFCEDFFFDEEEDFCFF749EB9DCC392FFFBFE -F7FDFBFDFFEFFEF7FFFDFAFDFAFCFBFDFDFEFCFEFFFCFEFFFCFEFFFCFEFEFDFEFCFDFEFBFDFEFB -FDFEFBFDFEFBFCFEFBFDFEFDFCFEFDFCFEFDFCFEFDFCFEFDFCFEFDFCFEFDFCFEFDFCFEFDFCFEFD -FCFEFDFCFEFDFCFDFFFCFEFDFCFEFEFCFEFEFCFEFDFCFEFFFDFEFDFCFEFDFDFEFDFBFDFBFBFDFC -FCFDFBFBFBFCFBFBFCF9FBFBFAFEFEF8FEFEF6FCFCF6FCFBF6FCFBF8FBFDF7FAFFF6F9FDF3F8FD -F9F9FFF6F6FEFBFAFFF4F3FCF5F4FDF5F5FDF6F7FFF3F5FCF7F8FFEEF0F7F0F2F9F1F1F9F1F2F9 -F1F2F9F1F1F9F0F1F8F1F1F8F0F0F8F5F1FAF4F0FAF5F1FAF3EFF8F4F0F9F5F0F9F1F3FAF2F3FC -F4F6FBF2F4F9F5F7FAF9FAFDF3F5F7F5F7F9F3F6F7F8FCFDF8FAFCF8FAFDF7FBFBFAFCFEFBFDFE -FAFDFEFBFDFDFAFBFDFDFEFDFDFEFEFAFBFCFDFEFFFBFCFDFDFEFFFEFEFDFCFEFDFEFFFDF9F9FA -FFFFFFAEAFAE1E1E1EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2D2D3191A1AEEEEEEFFFFFCFEFBF6FFFBF8F8FFFBF7FFFC -F7FFFCF7FEFBF7FEFBF7FEFBF7FEFBF7FEFBF7FEFBF7FEFBF7FEFBF7FEFBF7FEFBF7FEFBF7FEFB -F7FEFBF7FEFBF7FEFBF7FFFCF7FFFCF7FFFCF7FFFCF7FFFCF6FFFCFAFDFCFBFDFCFBFDFCFBFDFC -FBFDFCFBFDFCF6FFFCF6FFFCF6FFFCF6FFFCF6FFFCF7FFFCF8FEFCF9FEFCF9FEFCF9FEFCFAFEFC -F8FFFCF6FFFCF6FFFCF6FFFCF6FFFCF6FFFCF6FFFCFCFEFCFBFDFCFBFDFCFBFDFCFBFDFCFCFDFC -F7FFFCF7FFFCF7FFFCF7FFFCF7FFFCF7FFFCF8FEFCF9FEFCF9FEFCF8FEFCF8FEFCF8FEFCF8FEFC -F8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFC -F8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFC -F8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFC -F8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FDFCF8FEFCF8FEFCF9FEFCF9FEFC -F8FEFCFAFCFAFAFBFAF9FBFAFCFDFCFBFDFCFCFDFCF8FDFCFBFFFEFCFFFEF8FEFBF8FEFCF8FEFC -F8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFC -F8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFC -F8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFC -F8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FEFCF8FFFDFBFDF5FFFFFF8F8F9E070809 -E1E4E9F6FFFAFEFCF9F8FAF9FAFDF6FEFFF8E7FFFF6DA2C5E6D0A2FFFCFFF3FEFFFAFEF2FEF8FF -FCFBFFF7FDFCF9FEFEF9FFFEF9FFFEF9FFFEF9FFFEFBFFFEFBFEFEFBFEFEFBFEFEFBFEFEFBFFFE -F9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFFF9FFFF -F9FFFFF9FFFFF9FFFFF9FFFFF9FEFFFBFDFFFAFDFFFBFEFFF9FCFFF9FDFFFAFCFFFCFEFFFBFEFF -FAFEFFF9FEFFF6FFFFF6FDFFF5FDFFF5FDFFF5FCFFF7FEFFF7FDFFF5FCFFF7FAFFF7FAFFF7FAFE -F5F8FFF6F8FFF6F9FFF3F6FEF1F5FEF4F7FFF2F5FEF2F6FEF3F7FFEFF2FBF1F3FCF0F2FBF3F5FF -F1F5FEF3F4FEF3F6FFF3F5FFF3F5FFF4F6FFF4F6FEF6F7FFF3F7FFF5F9FFF7FBFFF4F8FFF5FAFF -F7FCFFF3F8FDF7FCFFFAFEFFF9FDFFF9FDFFF9FDFFF7FCFFF8FEFFFAFEFFF8FDFFF9FDFFF7FDFF -FBFEFFFBFDFFF8FBFFFCFDFFF9FBFFFBFDFFFAFEFFFAFEFFFBFDFFFAFDFFFFFFFFA5A6A8000000 -6D6D6D5757575D5D5D5B5B5B5C5C5C5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B -5B5B5B5A5A5A5858585B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5C5C5C5C5C5C5C5C5C -5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5B5B5B5B5B5B5B5B5B5B5B5B -5B5B5B5E5E5D4B4B4D151415EAEBEAFDFDFDFDFDFDFEFEFCFAFFFFF9FFFFF9FFFFFBFFFFFAFFFF -FAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFBFFFF -F9FFFFF9FFFFF9FFFFF9FFFFF9FFFFFAFFFFF9FFFFFAFFFFF9FFFFF9FFFFF9FFFFFAFFFFF8FFFF -F8FFFFF8FFFFF8FFFFF8FFFFF8FFFFF9FFFFFAFFFFFAFFFFFAFFFFFAFFFFF9FFFFF8FFFFF8FFFF -F8FFFFF8FFFFF8FFFFF8FFFFF9FFFFF9FEFFF9FEFFF9FEFFF9FEFFF9FFFFFAFFFFF9FFFFF9FFFF -F9FFFFF9FFFFF9FFFFF9FFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFF -FAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFF -FAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFF -FAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFF -FAFFFFFAFFFFFAFFFFFAFFFFFAFFFFF8FDFFF8FDFFF8FDFFF8FDFFF8FDFFF9FEFFF8FEFFF8FDFF -F8FDFFF8FDFFF8FEFFF8FEFFF8FEFFFAFFFFFBFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFF -FAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFF -FAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFF -FAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFFFAFFFF -FAFFFFFAFFFFFAFFFFFAFFFFFAFFFFF9FFFFFBFDFDFFFFFF8E9098060808E0E4E6FCFFFFF9FCFC -F6FDFEF9FDFAFAFFF9E1FEFF67A1C6F3D9A6FFFAFDF8FEFAFEFDEFFFF8FFFFF9FCFAFDF3FCFDF6 -FDFFF5FDFFF5FDFFF5FDFFF5FFFDF9FFFEF9FFFEF9FEFCF9FEFCF9FFFDF9FDFFFAFDFFFAFDFFFA -FDFFFAFDFFFAFDFFFAFDFFFAFDFFFAFDFFFAFDFFFBFDFFFBFDFEFBFDFEFEFDFEFEFDFEFEFDFEFE -FDFEFEFDFCFEFFFDFAFEFDFAFFFEFBFDFBF9FDFBF9FDFCFAFEFBFCFEFBFDFDFAFDFFFEFFFEFEFE -FBFDFDFBFDFBFBFDFCFCFDFEFAFBFEF9FAFEF8F8FFFAF9F5FFFCFAFBF8F5FEFCF8FDFBF8FEFCF9 -F7F6FBF6F5F9FAF8FBF6F4F7F6F5F9F6F6F9F6F2F7F7F3F8F6F4F7F6F2F6F6F2F7F6F2F6F6F5F9 -F6F5F8F6F4F7F7F6FAF8F7FAFAF8FDF8F6FCFBF8FEFAF9FCFFFEFDFCFBFBFEFDFDF9F9F8FCFBF9 -FBFAF8FCFBFAFCFBFAFBFBFAFDFBFDFEFDFFFFFEFFFCFBFDFCFCFDFCFCFDFFFCFEFFFCFDFCF9FC -FFFDFEFEFAFDFFFDFFFFFDFAFFFDFBFFFEFBFDFBFAFFFFFFD8D7D4898A8A8D8D8D8D8D8D8F8F8F -8F8F8F8F8F8F8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D9090908E8E8E8B8B8B919191777777 -5E5E5E9393938C8C8C8E8E8E8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D -8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D898A89 -A3A4A3F9F9F8F8F7FDFDFFFFF9FFFFFFFEFCFFFDFBFFFDFCFEFCFAFEFCFAFEFCFAFEFCFAFEFCFA -FEFCFAFEFCFAFEFCFAFEFCFAFEFCFAFEFCFAFEFCFAFEFCFAFEFCFAFEFCFAFFFDFCFFFDFBFFFDFB -FFFDFBFFFDFBFEFCFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFB -FEFFFBFEFFFBFFFFFBFEFFFBFEFFFBFEFFFBFEFFFBFFFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFB -FEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFEFBFFFDFBFFFDFBFFFDFBFFFDFBFFFCFB -FFFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFB -FEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFB -FEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFB -FEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFB -FEFFFBFFFFFCFDFBF9FDFBF9FDFBF9FEFCF9FEFCF9FEFCF9FDFFFBFDFFFBFDFFFBFCFDF9FCFEF9 -FCFDF9FDFCFAFFFEFCFFFFFCFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFB -FEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFB -FEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFB -FEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFBFEFFFB -FEFFFBFEFFFBFEFEFCFEFBFEFFFFFF91928E080707E4E4E0FFFFFFFBFBF4FDFFFCFFFBF3FFFFF7 -E8FFFF6BA4C2F7E2A0FFFBF5F5FDF7FBFEEDFFF9FFFEFAF7FBFDF6FEFFF9FEFDFBFEFDFCFEFCFE -FEFDFEFBFCF9FCFCFAFCFCFAFEFEFBFDFEFBFDFCFCFDFCFCFDFCFCFDFCFCFDFCFBFEFDFCFEFCFB -FBFFFDFBFFFDFDFFFDFAFCFBFAFCFCFAFDFCFEFDFEFEFDFCFEFDFDFEFDFDFEFCFCFEFEFEFCFEFD -FDFEFDFDFEFDFDFEFDFDFEFDFDFEFEFDFEFEFDFEFEFDFEFEFCFCFCFEFEFEFEFEFEFBFBFCFDFCFD -FCFBFBFEFEFDFDFDFCFBFBFBFCFCFBF8F9F9FCFBFCFBFBFBFBFCFBFCFCFCF8F9FCFAF9FDF9F8FD -F9F8FCF9F7FCF7F4FAF3F7FBF4F7FBF4F7FBF4F7FBF4F8FBF5F7FBEFFAFBEFFAFBEEF9FAF2FDFD -F0FBFDF0FBFBFAFFFBF7FEFBF7FDFBF7FCFBF9FEFDF6FCFBFCFCFCFCFBFCFCFCFCFAFAFCFBFBFC -FAFAFAFEFEFEFCFEFCFEFEFEFBFBFBFCFDFBFBFBFBFFFFFFFDFEFFFDFDFCFBFAFAFBFBFAFBFAFA -FDFDFCFCFBFCFCFBFCFEFFFEFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E8E8EFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FEFCF7FDFA -F7FEFCF8FEFCFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFE -FFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFE -FFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFE -FFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFE -FFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFE -FFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFE -FFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFE -FFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFE -FFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFDFDFD -FDFEFDFEFEFDFCFBFCFCFCFCFCFCFCFBFBFCFCFBFCFCFBFCFCFBFCFCFBFCFCFBFCFBFCFCFCFBFC -FCFBFBFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFE -FFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFE -FFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFE -FFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFEFF -FCFDFCFFFFFF919191070707E4E4E3FFFFFFFFFEFAFCFEFBFBFCF6FFFFF9E9FFFF6DA4C4F1DC9B -FFFCF8F6FEF9FAFEEDFFFAFFFEFAF7FBFDF6FEFFF9FEFDFBFEFDFBFEFEFEFDFDFEFDFDFBFDFDFB -FDFDFBFEFEFCFEFEFCFEFEFCFEFEFCFEFEFCFEFEFCFCFCFAFEFEFCFEFCFAFBFFFEFDFFFEFDFFFE -FAFCFBFCFEFDFAFEFBFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFEFEFDFEFEFDFEFE -FDFEFEFDFEFEFDFEFEFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFBFBFBFDFDFDFCFCFCFCFCFCFCFCFC -F9F9F9FCFCFDF9F9F9FCFCFCFAFAFBFBFCFCFCFCFCF7F7FAF8F8FAF8F8FAF8F8FAF8F9FAF8F8FA -F7F8FAF7F8FAF7F8FAF7F8FAF7F8FAF7F8FAF5FBFAF6FAFAF5F9FAF7FBFBF6FBFBF7FAFBF7FCFA -F7FBFAF7FBFAF8FCFBFAFEFDF9FEFCFCFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFEFEFEFEFEFE -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFD -FBFBFBFCFCFCFAFAFAFAFAFAFEFEFEFCFCFCFFFFFFFAFAFAF8F8F8FFFFFFFCFCFCFAFAFAF7F7F7 -F9F9F9FAFAFAFBFBFBF9F9F9FEFEFEF7F7F7FFFFFF7F7F7FFFFFFFFDFDFDFCFCFCFBFBFBFDFDFD -FBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFDFDFDFEFEFE -FBFBFBFCFCFCFBFBFBFCFCFCFCFCFCFCFDFCF9FDFCF6FBFAF9FDFCF9FDFCFAFDFCF7FCFBFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFEFEFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191 -070707E4E4E4FFFFFFFFFEFAFCFEFBFDFBF7FFFFF8E9FFFF6DA4C5EDD799FFFDFAF7FEFDFAFEED -FFF9FFFEFAF9FAFBF6FDFEF8FCFDFAFCFCFBFCFCFEFCFCFEFFFFFBFEFEFCFEFEFCFFFFFDFFFFFD -FFFFFDFFFFFDFFFFFDFFFFFDFCFCFAFCFDFBFEFCFAFBFFFEFBFFFCFDFFFEFAFCFBFAFCFBFAFCFB -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFBFBFBFDFDFDFBFBFBFFFFFFFFFFFFFCFCFCFEFEFEFBFBFB -FEFEFEFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFCFCFBF8F8F7FAFAFAFAFAFBFAFAF9FAFAFAFAFAFA -F9FAFAF9F9FAF9FAFAFAF9FAFBF9FAFAF9FAFBF9FBFBF9FBFBFAFBF8F9F8F7F9F8F6F9F8FBFEFD -FDFFFFFDFFFFFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFDFDFDFFFFFFFEFEFE -FFFFFFFCFCFCFFFFFFFFFFFFFCFCFCFCFCFCFEFEFEFBFBFBFBFBFBFBFBFBFDFDFDFEFEFEFEFEFE -FDFDFDFFFFFFFFFFFFFEFEFEFCFCFCFEFEFEFDFDFDFFFFFFFFFFFFFBFBFBFDFDFDFDFDFDFEFEFE -FEFEFEFDFDFDFDFDFDFFFFFFB4B4B4CECECEFFFFFFFCFCFCFDFDFDFFFFFFFDFDFDFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFF -FCFCFCFCFCFCFCFCFCFDFFFFFAFDFCFDFFFEFDFFFFFDFFFFFAFDFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFF -FFFEFAFCFEFBFDFBF7FFFFF8E9FFFF6DA5C5EBD697FFFBFBF6FDFBFBFEF2FFF8FFFFFAFAFCFEF7 -FFFFFBFFFFFDFFFFFCFFFFFFFFFFFFFFFFFBFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFD -FFFFFDFFFFFDFFFFFDFFFFFBFDFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFCFCFEFEFEFDFDFD -FCFCFCFDFDFDFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFBFBFBFBFBFBFBFBFBFBFBFB -FBFBFBFBFBFBFCFCFCFCFCFCFBFBFBFFFFFFFEFEFEFBFBFBFCFCFCFFFFFFF9F9F9FEFEFEFEFEFE -FEFEFEFDFDFCFDFDFCFAFAFAFAFAFAFAFAFAF9F9F9FCFCFBFBFCFBFBFCFBFCFCFBFCFCFBFBFCFB -FDFAFAFCFAFAFCFAFBFBF8FAFBF9FAFBF9F9FBFDFCFCFEFDFBFCFCFBFCFBFDFFFFFDFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFBFBFBFBFBFB -FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFE9E9E9CACACA -FFFFFFFEFEFEFCFCFCFEFEFEFCFCFCFCFCFCFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFAFAFA -FFFFFFFEFEFE858585FFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBFCFCFCFBFBFBFBFBFBFFFFFFFFFFFFFFFFFF -FDFFFFFEFFFFFEFFFFFAFCFBFBFCFBFAFCFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFEFBF9FBFCFBFDFDF9 -FDFDF6E8FEFF6CA2C4EBD59AFFFAFAF8FFFFFAFEF2FFF8FFFFFAFBFCFEF7FFFFF9FFFFFCFFFFFC -FFFFFFFFFFFFFFFFFBFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFD -FFFFFBFCFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFCFCFEFEFEFCFCFCFEFEFEFEFEFEFEFEFE -FCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFFFFFFFFFFFFFDFDFDFAFAFAFBFBFBFFFFFFFCFCFCFEFEFEFDFDFEFDFDFAFCFCFB -FBFBF9FCFCFBFCFCFAFCFCFAFDFCFAFDFCFAFDFCFAFDFCFAFDFCFAFDFCFAFEFEFCFEFEFBFEFEFC -FDFDFAFDFDFAFDFDF9FCFCFCFDFDFDFCFCFCFCFCFCFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF7A7A7A000000FFFFFFFFFFFFFDFDFD -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFBFBFBFCFCFCFFFFFF777777 -FFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFEFCF9FBFCFAFDFCF8FFFFF7E9FFFF6DA3C5 -F0DA9FFDF8F9F5FDFDFCFDF4FFF8FFFFFAFAFCFEF7FFFFFAFFFFFCFFFFFDFFFFFFFFFFFFFFFFFB -FFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFCFFFFFCFFFF -FCFFFFFCFFFFFCFFFFFCFFFFFCFCFCFCFDFDFCFCFCFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFF -FFFFFFFCFCFCFCFCFCFFFFFFF9F9F9FEFEFEFEFEFEFDFDFEFFFFFAFDFFFAFCFDF8FEFEFAFEFEFA -FEFEFAFFFEF8FFFCF9FFFCF9FEFDF9FEFCF9FFFDF9F8FFF8F9FFF8F8FFF7FBFEFAFBFEFAFCFEFB -FDFDFEFFFFFFFDFDFDFDFDFDFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFCFCFFFFFF7F7F7F000000FFFFFFFEFEFEFFFFFFFCFCFCFEFEFEFEFEFE -FCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFFFFFFA0A0A0ECECECFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF -FFFFFFFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF -919191070707E4E4E4FFFFFFFEFDF9FCFEF9FEFCF8FFFFF9E9FFFF6DA5C7F3DFA1FDF9FBF5FCFC -FCFFF2FFF8FFFFFAFAFCFEF7FFFFFAFFFFFCFCFCFBFDFDFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFBFBFB -FBFBFBFDFDFDFBFBFBFBFBFBFBFBFBFEFEFDFEFCFDFDFCFDFFFFFFFEFEFEFFFFFFFCFCFDFDFEFD -FDFDFDFEFDFDFEFDFDFEFDFDFEFDFDFEFDFDFEFDFDFFFFFFFFFEFEFFFFFFFDFDFDFFFFFFFDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFFFFFF808080000000FFFFFFFDFDFDFDFDFDFDFDFDFEFEFEFCFCFCFFFFFFFFFFFFFFFFFF -FEFEFEFEFEFEFFFFFFFCFCFCFCFCFCFFFFFFD6D6D68F8F8FEEEEEEFFFFFFFDFDFDFDFDFDFDFDFD -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFFFFFFFEFEFEFBFBFBFEFEFEFCFCFCFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4 -FFFFFFFBFAF9FAFAFDFDFAF7FFFFF7ECFEFF71A2C1EED89CFFFCFCF7FEFEFBFEF2FFF8FFFFFAFA -FCFEF7FFFFFAFFFFFCFCFCFBFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFBFBFBFDFDFDFDFDFDFDFDFD -FDFDFDFBFBFBFEFEFEFEFEFEFDFDFEFDFDFDFDFDFDFDFDFDFDFDFEFDFEFEFCFCFCFEFFFFFEFEFE -FEFFFFFCFCFCFEFDFEFDFDFEFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF818181 -000000FFFFFFFFFFFFFBFBFBFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFD -FCFCFCFFFFFFFFFFFF1E1E1E000000A6A6A6FFFFFFFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFEFEFE -FEFEFEFCFCFCFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFDFCFAFCFCFE -FEFCF9FFFFF7ECFEFF70A2C2E5CF94FFFDFBF4FBFAFCFEF3FFF8FFFFFAFAFCFEF7FFFFFAFFFFFC -FCFCFBFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFEFEFEFBFBFBFDFDFDFBFBFBFDFDFDFBFBFBFBFBFBFEFEFE -FEFEFEFEFEFEFBFBFBFCFCFCFBFBFBFEFEFEFEFEFEFEFEFEFCFCFCFCFCFCFCFCFCFDFDFDFEFEFE -FEFEFEFBFBFBFBFBFBFBFBFBFEFEFEFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF838383000000FFFFFFFEFEFE -FFFFFFFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFBFBFBFDFDFDFDFDFDFBFBFBFDFDFDFFFFFF -939393000000D8D8D8FFFFFFFEFEFEFEFEFEFCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFF -FEFEFEFBFBFBFEFEFEFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFEFBFDFEFEFFFEFBFFFFF6ECFEFF -71A2C2DDC68BFFFAF9F7FFFDFBFEF1FFF8FFFFFAFAFCFEF7FFFFFAFFFFFCFCFCFBFEFEFEFCFCFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFBFBFBFEFEFEFDFDFDFCFCFCFCFCFCFEFEFEFBFBFB -FCFCFCFCFCFCFBFBFBFBFBFBFCFCFCFBFBFBFDFDFDFBFBFBFEFEFEFCFCFCFCFCFCFEFEFEFEFEFE -FEFEFEFAFAFAFAFAFAFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCFCFCFCFEFEFEFFFFFF8E8E8E000000FFFFFFFFFFFFFAFAFAFCFCFCFFFFFF -FFFFFFFEFEFEFDFDFDFDFDFDFAFAFAF7F7F7FCFCFCFEFEFEF8F8F8FAFAFAFFFFFFBCBCBCE7E7E7 -FFFFFFFAFAFAFDFDFDFEFEFEFDFDFDFBFBFBFAFAFAFDFDFDFFFFFFFCFCFCFEFEFEFCFCFCFCFCFC -FFFFFFFDFDFDFEFEFEFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -FFFFFF919191070707E4E4E4FFFFFFFDFAF9FAFAFCFEFAF7FFFFF7ECFEFF71A2C2E7D195FFFEFC -F9FFFFFAFEF2FFF8FFFFFAFAFCFEF7FFFFFAFFFFFCFCFCFBFEFEFEFCFCFCFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFCFCFCFEFEFEFCFCFCFEFEFEFDFDFDFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFBFBFB -FDFDFDFBFBFBFEFEFEFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFEFEFEFEFEFEFCFCFCFCFCFC -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -FEFEFEFEFEFEFFFFFF8C8C8C000000FFFFFFFEFEFEF8F8F8FDFDFDFFFFFFFFFFFFFAFAFAF3F3F3 -F8F8F8F9F9F9F9F9F9FDFDFDF7F7F7F7F7F7F5F5F5F9F9F9FFFFFFFAFAFAFCFCFCFBFBFBFDFDFD -F9F9F9FAFAFAFAFAFAFBFBFBFCFCFCFEFEFEFEFEFEFDFCFDF8F8F8FAFAFAFFFFFFFCFCFCF5F5F5 -FAFAFAFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707 -E4E4E4FFFFFFFDFCF9FAFCFEFEFAF7FFFFF7ECFEFF70A2C2ECD89BFFFCFBF7FDFCFAFEF3FFF8FF -FFFAFCFCFEF7FFFFFAFFFFFCFCFCFBFDFDFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFE -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFFFFFFFBFBFBFCFCFCFBFBFBFCFCFC -FFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCFEFEFEFDFDFDFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFEFEFEFFFFFF -949494000000FDFDFDFAFAFAF3F3F3FDFDFDFFFFFFFFFFFFFDFDFDF6F6F6FAFAFAFDFDFDFBFBFB -F7F7F7FAFAFAFDFDFDFBFBFBFCFCFCFBFBFBFCFCFCFDFDFDFDFDFDFFFFFFF9F9F9FCFCFCFDFDFD -FDFDFDFCFCFCFCFCFCFDFEFDFDFFFDFDFDFDFAFAFAFCFCFDFDFDFEF8F8F8F8F8FAFCFCFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFDFAF9 -FAFAFCFEFAF7FFFFF7ECFEFF71A2C2ECD59EFFFBFCF8FEFFFAFEF1FFF8FFFFFAF9FCFEF7FFFFFA -FFFFFCFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFEFEFEFDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF989898000000FBFBFB -FDFDFDF6F6F6FDFDFDFBFBFBFDFDFDF7F7F7F9F9F9FEFEFEFCFCFCFCFCFCFDFDFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFCFCF8F8F8F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFD -FBFBFFFFFDFFFFFEFFF8F7FDFBFAFEFDFDFFF8F8F7FBFBF9FEFEFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFEFDFAFCFDFFFEFCF9FFFFF7 -ECFEFF71A2C2EFD8A0FDF8FBF4FCFBFCFEF3FFF8FFFFFAF9FCFEF7FFFFF9FFFFFCFFFFFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF9C9C9C000000F6F6F6FFFFFFFFFFFFFCFCFC -FDFDFDFCFCFCFBFBFBF8F8F8F9F9F9F3F3F3FDFCFDFFFFFFF4F3F4C4C3C3999898979797929292 -8686868080807E7E7E828282828281888887909090A5A5A5BCBCBBE1E1E1FFFFFFFFFFFFFBFBFC -F9F9F8FBFBFAF7F7F7F9F9F8FDFDFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDFFFFFF919191070707E4E4E4FFFFFFFEFCFAFBFDFFFEFBF8FFFFF7ECFEFF70A2C2E9D39C -FFFCFCF2FAFAFCFFF3FFF8FFFFFAF9FCFEF7FFFFFBFFFFFDFFFFFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -FDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCFFFFFF9F9F9F000000F2F2F2FFFFFFFCFCFCFCFCFCFDFDFDFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFB9BBBA717272686A688D8E8DA5A7A7B0B0B0AEAEAEAAAAAAA4A4A49F9F9F -A2A2A19C9C9E9C9C9D9090917D7D7F757577757577767674AAAAA8F9F9F7FFFFFFFFFFFFFCFCFA -FEFEFEFFFFFFF6F6F6FFFFFFFFFFFDFFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191 -070707E4E4E4FFFFFFFEFCFAFBFDFFFEFBF8FFFFF7ECFEFF71A1C2E5CF99FFFFFFF7FEFDFCFEF1 -FFF9FFFEFAF9FBFEF7FBFEF8FBFCF9FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -FFFFFFA8A8A8000000EFEFEFFFFFFFFAFAFAFEFEFEFDFDFDFCFCFCF3F3F3E4E4E49291915A5D5C -7173729B9E9DB8BBBAD0D2D1EEF1F0FFFFFFFFFFFFFCFCFCF4F4F4F0F0F0E2E2E1DDDCE0DADADC -D4D4D6BEBDBFABAAAD9292957C7C7A686867575755888886D7D6D5FDFEFDFFFFFFF5F4F8F7F7F8 -FDFDFAFFFFFAFEFFFAFEFEFDFEFEFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFF -FDFDFDFFFFFFFCFCFCFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFBFBFBFEFEFEFFFFFFFEFEFE -FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFDFDFDFFFFFF -FFFFFFFEFEFEFFFFFFFCFCFCFEFEFEFFFFFFFEFEFEFDFDFDFCFCFCFCFCFCFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFF -FEFCFAFBFDFFFEFBF8FFFFF8EDFFFF72A4C3E6D098FFFCFBF6FEFCFCFEF1FFF9FFFEFAF9FBFEF7 -FDFEF9FBFCF9FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFABABAB000000 -E0E0E0FFFFFFFBFBFBFCFCFCFFFFFFFFFFFFD0D0D07171716B6A6A868A89AAADACCCD0D0E2E6E5 -E6EAE9E7EDECFBF9F9F8F8F8E9E9E9DDDDDDDDDDDDD6D7D6D1D0D5C7C5CBC5C4C9C3C2C8BFBEC3 -B8B8BCB5B5B89B9A9E81818557575A69686DB5B5BAFFFFFFFDFCFEFCFCFEFDFDFBFFFFFAFDFEF6 -FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFFFFFF -FEFEFEFEFEFEFFFFFFFDFDFDFDFDFDFDFDFDFFFFFFFEFEFEFFFEFEFDFDFDFDFDFDFDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCFFFFFFFEFEFEFCFCFCFDFDFD -FAFAFAFCFCFCFEFEFEFDFDFDFCFCFCFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFEFCFAFBFDFFFEFBF8 -FFFFF7EDFDFF71A3C3E7D098FFF9F9F7FFFDFBFEF1FFF9FFFEFBF9FBFEF7FCFEF8FBFCF9FFFFFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFA9A9A9000000DFDFDFFFFFFFFCFCFC -FFFFFFFBFAFAA1A1A16262627B7A7BA2A1A1B3B9B7C1C6C4C2C8C5D3D8D5E3E7E6EAEFEEF6F7F6 -F6F6F6EEEEEEE1E1E1E2E2E0D9DAD9D0CED5C9C8CEC6C4CBBBB9BEB9B7BBB2AEB5ACAAB4ABAAB3 -AAA9B1878590807C885A58629F9EA5F9F7FDFFFFFFFFFFFDFFFFFAFCFEF4FDFDFDFBFBFDFBFBFB -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFB -FBFBFBFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFF6F6F6F8F8F8FCFCFCFCFCFCFCFCFCFCFCFC -FEFEFEFCFCFCFCFCFCFDFDFDFCFCFCFAFBFBFCFCFDFDFCFDFBFBFBFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFF9FAFAF7F8F7FDFDFCFFFFFFFDFDFDFAFAFBFDFDFFFAFAFBFBFBFBFEFEFE -FEFDFCFBFAFAFEFEFEFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFEFBFAFBFDFEFEFBF8FFFFF8EDFFFF72A4C2 -EED29CFFF6F9F4FDFCF7FEEFFAFAFFF8FEFBFEFFF8FEFFFAFEFEFBFCFCFBFCFCFEFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7B7B7000000D6D6D6FFFFFFFCFCFCF6FAF8C2C3C56D7073 -676D72969DA0A0A8ACA6B3B3B2C0C0C0CAC9CED9D7D8E3DFE5EBE9F6F6F5F7F6F7EAEAEAE5E5E5 -E1E1E1D7D7D6D0CFD1C6C9CCC0C5C7B6BEC1B0BAC1AAB5BAA6AFB6A0A3AEA3A0B09F9BAB9397A4 -767E8C64676FB8BBC1FCFCFFFBFDFDFCFBF9FBFCF7FBFBF8FEFEFBFEFEFCFBFBF9FEFEFCFFFFFB -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE -FCFCFCFEFEFEF9F9F9FEFEFEFBFBFBF9F9F9FEFEFEF7F7F7F8F8F8FAFAFAF2F2F2F8F8F8F7F9F7 -FCFFFFF8FBFAF6FBFAF8FFF9F9FFF9FAFCF9FCFFFAFEFCFAFEFEFAFBFBFBFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -F8FEFEF8FDFFFAFEFFFCFEFDFAFBF9F8F9F6FCF7F4FEFDF9FEFEFDFEFEFEFCFCFFF8FCFEFEFCFD -FFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF -919191070707E4E4E4FFFFFFFFFEFAFCFEFBFEFBF7FEFCF6EBFEFF70A0C4F0D69FFFF8FAF2FAFA -F9FEF0FBFBFFF9FEFAFEFFF8FEFFFAFEFDFBFEFEFBFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFB6B6B6000000D1D1D1FFFFFFFFFFFFDEE1E27575786B7073959A9D93999DA0A8AF -A7B1B3B4C1C0C0CAC9CFD8D7DFE5E3EBF1EFF3F2F3F5F5F5E9E9EAE3E3E3DFDFDFD5D5D6D0D0D1 -C8C8CBC2C4C8B7BCBFB3BABEACB4BAA2ABADA3A7ACA0A0A89C9BA59395A0969EA8686C736D7077 -E3E4E9FDFFFFFEFEFAFCFDF8FBFBFAFEFEFCFEFEFCFCFCFAFFFFFDFFFFFBFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFEFEFEFCFCFC -FEFEFEFEFEFEFEFEFEFCFCFCFCFCFCFCFCFCFDFDFDF8F8F8FBFBFBFAFBFAF9FCFBF7FBFAF6FDFC -F9FFF9FAFFFBFAFDF9FDFFFCFEFDFCFEFEFAFCFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFF8FCFEF7FAFB -F9FCF9F9F9F6F8F8F5FDF8F5FCFDFAFEFEFDFEFEFEFDFCFFF8FDFFFDFDFDFDFDFDFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4 -FFFFFFFFFEFAFCFEFBFEFBF7FFFFFAEBFDFF6E9FC3EFD69EFFF8F9F7FEFFF7FEEFFBFBFFF9FEFA -FEFFF8FEFFFAFEFDFBFEFEFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8B8B8 -000000D2D2D2FFFFFFFFFFFFB0B1B35A5B6077797E979C9F959CA09EA4ACA7B2B3B5C0C0C0CBC9 -D2D7D7DDE2E0E4EAE9F6F5F4F7F7F4EBEBEAE5E5E4E1E1DFD8D8D6CFCFCFC8C8CAC4C4C6BABCC0 -B7B9BDB2B2B9A5ACAAA6ABAC96999C999BA0969A9F90969A878B9163686DAAABAFFFFFFFFFFFFB -FBFCF7FBFBF9FEFEFCFEFEFCFCFCFAFFFFFDFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFBFBFBFFFFFF -FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFDFFFEF6F8F7F5F9F8F7FDFBF9FFF9FAFFFBFAFDF9 -FDFFFCFEFEFCFEFEFBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFEFEF9FDFCFDFEFDFAFBF9FDFCF7FCFDF8 -FBF7F4FDFDFAFCFEFDFEFEFEFDFDFFF6FBFFFEFDFDF9F9F9FBFBFBFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFEFAFCFEFB -FEFBF8FEFCF5EBFEFF71A1C4ECD19AFFFAFBF6FDFDF7FEEFFBFBFFF9FEFAFEFFF8FEFFFAFEFEFB -FCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFC2C2C2000000C3C3C3FFFFFF -FFFFFF818287696A6F81848990959C9599A39CA2ABADB5B8B5BDC0C1C6C6D3D9DADDE1E0EDF1F0 -F6F5F3F4F5F2E8E8E5E4E4E1DDDEDCD6D6D3D2D2D1CACAC8C6C4C5BCB9BCB8B5BAB5B0B6A6AAA8 -A2A7A593999898A09F969A9D85868B9399A07A7D837F8184FFFFFFFDFCF8FBFDF6FDFDFBFDFDFB -FBFBF9FEFEFCFEFEFCFCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFBFBFBFCFCFCFCFCFCFBFBFBFDFDFDFAFAFAF5F5F5F9F9F9 -F6F6F6F9F9F9F9F9F9FAFCFCFBFDFCF9FDFCF7FEFCF9FFF9FAFFFBFBFDFBFBFEF9FDFBF9FBFBF9 -FFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFAFCFBFEFFFDF8F8F6FDFDF8FCFBF7FCFAF3FEFBF9FCFCF9FFFFFE -FBFBFCFCFBFFF9FEFFFBFBFBFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFEFAFCFEFBFEFBF7FFFFF8ECFEFF -71A2C5ECD29BFFF8F9F7FFFEF7FEEFFBFBFFF9FEFAFEFFF8FEFFFAFEFEFBFCFCFAFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFC2C2C2000000C2C2C2FFFFFFFFFFFF7173786F7075 -888A918B8F98979DA89AA1ABADB4B7B8BDC0C1C6C7D3D6D7E2E4E2EEEEEEF4F4F0F5F6F1EBECE6 -E5E6E0DFE0DCD6D7D2D3D4D1CCCBC8C7C6C4BFB8BBBCB3B9B9AFB5A6A8A9A4A9AB9BA4A5949DA0 -9B9EA387868D868B91767A807D7E83FFFFFFFDFCFAFBFDF6FDFDFBFDFDFBFBFBF9FEFEFCFEFEFB -FCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFEFEFE -FEFEFEFCFCFCFFFFFFF8F8F8FFFFFFFAFAFAFCFCFCFBFBFBFBFBFBFAFAFAFAFBFAFFFFFFFCFCFC -FAFCFBF9FCFBF9FDFCF7FEFCF9FFF9FAFFFBFBFDFBFCFEFBFDFDFBFBFBF9FFFFFFFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFBFCFAFBFBF8FCFBF6FDFBF8FEFBF6FEFBF3FCF8F6FAFAF7FBFDFBFDFCFCFCFCFFF9FEFF -FCFBFBFEFEFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -FFFFFF919191070707E4E4E4FFFFFFFFFEFAFCFEFBFEFBF7FFFFF8ECFEFF70A2C5EED39EFFF7FA -F8FFFFF7FEEEFBFBFFF9FEFAFEFFF8FCFFF9FEFEFBFCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFCFCFCFFFFFFC8C8C8000000B6B6B6FFFFFFFFFFFF7173796B6B748486908C8F979399A3 -9BA4ADB0B3B6B8BCBFC0C5C6D1D5D6E3E3E3EEECEEF4F5EEF7F8F2EEEEE8E8E9E3E4E5DEDBDCD4 -D6D6D1CECCC9CDC6C4C0B6B8BFB2B6BCAEB4A7A6ABA1A5A99BA4A7939CA29799A28E8A96868B91 -6C6F75808186FFFFFFFDFDF9FAFCF6FDFDFBFBFBF9FBFBF9FEFEFBFCFCFCFCFCFAFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFDFDFDFCFCFC -FDFDFDFDFDFDFBFBFCFCFBFCFDFDFDFFFFFFDEDEDFDBDDDCF8FAFAFDFEFEF8F9F9F9FDFBF8FBFA -F7FDFCF8FFF9F8FFF9FAFDF9FCFEF9FDFBF9FBFBF8FFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFAFAF6 -FFFFFFE1DEDAD7D3CDFEFBF5FFFCFAFCFBF9FFFEFEFCFCFCFCFCFEFAFEFFFAFAFBFDFDFDFCFCFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707 -E4E4E4FFFFFFFFFEFAFCFEFBFEFBF7FFFFF8ECFEFF71A2C5EBD397FEF6F6F5FEFEFAFEF1FCFAFF -F8FCFAFEFFF8FFFFFBFEFEFCFCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -CECECE000000AEAEAEFFFFFFFFFFFF7D767F63636C858B92848E989097A49EA3B0AAB3BEB8BEC5 -C6CACCDFE3E3EAEFF1EFF3F8F0F7F1F0F7F1E7EBE9DBDDDDD4D6D8D1D0D3CCCFD6C8C9D2C5C7CF -C1C3D0B8BAC7B3B4C1A9AAB2A9A8B39A9BA691929F9899A6898B998B8F95727077857D83FFFFFF -FFFCFDFCFAFBFCFCFAFFFFFEFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFCFCFCFCFCFCF9F9F9FFFEFB -FAFCFAFBFDFCF9F7F885777C664D56DFD8DCFFFAFFFEFAFDFFFBFEFDFDFDFCFCFDFCFDFDFCFCFD -FCFEFDFBFDFDFEFFFFFEFFFFFEFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFEFBFFFFFAFCFFFFFF635647514231 -E4DDCAFFFFFFFAFDFFF5FAFDF7FDFDFCFEF9FDFBF4FDFDFEFEFEFEFDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFEFA -FCFEFBFEFBF7FFFFF9ECFEFF71A2C5ECD498FEFAF8F4FFFEFAFEF1FCFAFFF9FDFAFEFFF8FFFFFB -FEFEFCFCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2D2D2000000A8A8A8 -FFFFFFFFFFFF7C77806A6C74868D94848F989099A49BA3AEB1B9C4BBC1C8C6C9CFCED1D0C9CFD2 -C7D0D4B8C3C3A7B0B29CA4A88F989B868D947D848A858E998C949F8D94A29AA2B0A2A9B8A4ABBC -A0A5AFA6AAB7A0A2AF93919E9D99A8948E9E8C89936F6973837882FFFFFFFEFBFCFCFDFCFDFDF9 -FCFCF9FCFCFAFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFEFEFEFFFFFFF6F5F6FDFEFAFCFDF8FFFFFDCDC6C4 -4939393A2224968989F3E7E7FEF7F6FEF9FAFCFBFBFDFBFCFAFEFDFCFEFDFCFEFDFBFDFCFEFFFF -FEFFFFFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB -F5F5F5FBFBFBFFFFFFFBFBFBFFFFFEF8F7FEFFFAFCD5C7C12D190D41291C8F7569FFFFFDFCFEFC -F4FBFAFAFFFFFCFFFBFDFFF8FBFBFCFCFCFCF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFEFAFCFEFBFEFBF7FFFFF8 -ECFEFF70A2C5ECD59BFFFCFAF1FDF9FAFEF0FCFAFFF9FCFAFEFFF8FFFFFBFEFEFCFBFBFAFEFEFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6D6D6010101A2A2A2FFFFFFFFFFFF838089 -60646C757D837A8A908E9CA4AAB3BEB2BEC9AAB0B7949399686C6E4952534B5A5F54636B54656D -5E6F77697A855E6F7B596A76596A79495B6A3143532537482E3F534E5E746F7D8B8793A19FA5B3 -9C9BACA299AB93869A9288997A707F887A88FFFFFFFCFBFCFDFFFCFDFCF7FCFEF8F9F8F7FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFEFEFEFEFEFEFBFBFBFCFCFCFDFBFCF0F3ECFDFFFAF6F3EB9C8F87463129533A31583F3B -DDC6C2FFF9F5FFF8F4FEFAF8FDFDFAFAFEFDFAFCFBFAFCFBFBFDFCFEFFFFFEFFFFFEFEFEFCFCFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFEFEFEFFFFFF -FEFEFEF9F9F8FFFFFFF2E8E49078704622195E39315B372BD8D3C8FFFFFFF7FBF8F7FEFCF9FFFA -F9FFF7F5F5F4FBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFEFAFCFEFBFEFBF7FFFFF8ECFEFF71A3C6EFD69A -FEF9FAF5FEFFFBFEF1FDFBFFFAFEFAFEFFF8FCFFF9FCFDFAFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDFFFFFFFDFDFDFFFFFFDCDCDC030303989898FFFFFFFFFFFF787A825B62697D8D9293A5AC -8B9BA37381884D5B6744485378777EBFBFC4CDDADCB9CFD0ADC5D3A7C2CF9EB9C594B2C08FB0BE -81A3B37C9FAD799CAA7A9DAE7193A560839745677C2544541A34462F43536B748685889C8C8A9E -9290A27E788A867F8DFFFFFFFFFFFFFBFCF9FDFEF7FDFEF8FCFEF7FEFDFBFCFCFCFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFE -FEFEFEFFFFFFF9F9FAFDFCF2FFFEF5B1A195684E3E56372464422D623528764E44E7CAC2FFFFF8 -FAF7F1F9F9F6FDFFFEFDFFFEFDFFFEFDFFFEFCFFFDFBFFFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFDFDFDFBFBFBFBFBFBFBFBFBFDFDFDF9F9F9FEFFFFFFF6EB -A1897F825A506834276C3A2E744437534033E3D6CAFFFFFAFEFFFCFAFBF7FBFEF8F4F4F5F7F7F7 -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191 -070707E4E4E4FFFFFFFFFEFAFCFEFBFEFBF7FFFDF6EEFEFF6E9EC1EFD79CFFFDFCF3FEFCFBFEF3 -FDFBFFFAFEFAFEFFF8FEFFFAFCFDFAFFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFDFDFD -FFFFFFE4E4E40808088E8E8EFFFFFFFFFFFF73777E6670767F9094687D834E6269687A81AEBBC9 -E5E9F5E8E4EFCBCBD1C7D8DBB5D1D3AACCD89BBDC78EB4BF89B0BE82AEBB7FADBB7CAFB774A5B0 -6E9EAA6291A2608F9F588998568295527A8D3B5D701A35443C52616A7C8B7B869768708081808C -FFFFFFFFFEFFFCFCF8FDFEF6FDFEF7FBFCF7FEFFF9FEFEFBFCFCFBFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFDFEFEFEFEFEFEFDFDFEFEFEFBFCFCFAF9FB -FFFEF5E7D7CE8A6C60825946683B236D43248047366434229C776AFFFBF2FFFDF7FBFAF7FCFFFE -FCFFFEFDFFFEFDFFFEFDFFFEFDFFFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFF9F9F9FBFBFBFBFBFBFBFBFBF9F9F9FAFAFAFFFFFFD1BAA7815F4D996453682D1A -6A36217D4F395837259A7F72FAEFE8FFFCFBF8F4F4FBF8F8FCFCFCF9F9F9F6F6F6FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFF -FFFEFAFCFEFBFEFBF9FEFCF5E9FDFF72A2C6E8D195FFFBFCF4FEFDFBFEF1FDFBFFFAFEFAFEFFF9 -FEFFFAFCFDFBFFFFFDFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFDFDFDFFFFFFE1E1E1060606 -909090FFFFFFFFFFFF7D848A5E6B7057696C40575B82979ED0E2EBF0FDFFE3E6F4ECE6F1E6E5EC -BCCFD2B9D8D8ACD0DBA2CAD196C1C883B3BB7EB2BA71A4B06FABAF68A2A8629BA36198A35B929F -578E9C578BA04F81935E8B9B426B761B3F47193D46677D8E61717F757D88FFFFFFFFFEFFFDFCF9 -FBFEF5FDFDF4FCFDF7FEFFF9FEFEFBFCFDFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE -FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFCFEFEFEFEFEFEFEFDFDFEFEFEFCFDFDFDFFFDFDF7F8F8FEFFFFFBF3ECA98F887C5549 -92604D703C2078482388473477412E603728C4B0A6FFFEF8FDFEFBFDFFFFFCFFFEFDFFFEFCFFFC -FDFFFEFBFFFDFBFBFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFDFDFD -F9F9F8FAFBFBFAFAF9FCFAFBFFFFFFF7FBFC8E70557F533DA5695166270E652F167F5338784D3C -614034BBA39EFFFDFCFFFAFDFEF6FAFEFDFCF9F9F9F6F7F8FFFFFFFFFFFEFFFFFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFEFAFCFEFBFEFBF8 -FFFDF6EEFEFF6E9EC1E6CAA3FFFEEDF4FEFFFBFDFFFDFEFAFAFFFAFAFCF1FDFFF4FEFEF5FCFFF8 -FCFFF8FCFDF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEE0D0D0D7F7F7FFFFFFFFFFFFF -75847C3D4C4B485C5F789197B4CED4C0DDDEE8F0F9E8FBFDD6EAEBCED7DED0E1EDB7DDE7AECDDC -A8C7D49ABECC93BACA87B4C37EADBB73A8AD70A6AA68A1A8619EA45C9BA152949A5189933E828A -3A899236808A3F7C853362691C414C304C557B8C8FFFFFFFFFFFFFFBFBFDFEFFF6FEFFF7FBFCF3 -FEFFF6FEFFF7FCFFF6FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBFBFBF9FEFEFC -FFFFFBFFFFFBFFFFFBFFFFFBFFFFF9FFFFFAFFFFFBFFFFFCFEFEFEFBFBFBFBFBFFFBFBFFFBFBFF -FBFBFBFBFBFBFDFBF9F9FFF9F8FEF9F8FEF9FBFFFAF9FFFAFCFFFCFBFCF6FBFDF7FBFCF8FBFBF9 -FBFBFBFBFBFCFBFBFCFBFBFCFBFBFCFEFEFDFDFCFDFEFCFEFAFCF9FAFCF9FAFCF9FAFEFAFAFEFA -FBFEF9FFF9FCFEFBFFF9FEFFF7FAFBFFFBF8FFF2EFCEBCBD734F3E9C664C8B54387135167E360E -8C442C8D4C31854E336C4A36D8C9BAFFFCF1FEF8F3FCF9FAFAFAFDFAFFFFFAFFFEFDFFFCFFFFF9 -FFFFFAFFFFFDFBFBF9FEFEFFFFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFEFEFEFBFBFBFBFBF9FBFBF9 -FBFBF9FBFBF9FBFBF9FBFBF9FBFBFCFBFBFCFBFBFCFEFEFEFEFEFFFFFFFFFAFDF5F5FBF7F8FEFF -FEFFFFF8F6FAB4ABB1764F36A46B45904C23703213773E2486492A8054306F462E6F4B41DAC7C7 -FFFFFFF8FBFEF4FBFCFAFAFBFEFDFBFBFCF7FCFFF8F4FFF6FDFFFBFEFFFBFCFFFBFCFFFBFCFFFB -FCFFFBFEFEFEFFFFFF919191070707E4E4E4FFFFFFFFFEFAFCFEFCFEFBF4FEFEF7ECFEFF6FA0C2 -E9CEA5FFFEEDF4FFFFFBFCFEFDFEF9FAFFFAFCFEF2FDFDF5FCFDF5FEFFF9FEFFF9FCFFF7FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF0F0F0F7E7E7EFFFFFFFFFFFF67727227363A4F626B -96AFBAA6BFCAB8D2D9DAEAF1E3FBFFE9FBFBE5E8F1D4DCE9BCD8E4B4D0DCAECBD7A1C3CE97BECA -90BBC789B6C27FB4BD72AAB26EA8B266A2AD5F9FAA5799A4518E9A4A909D4594A02F7B873A7882 -3D6D7B3055611C3A435A6D6FFFFFFFFCFFFFFCFFFEFEFFF7FEFFF7FBFCF4FEFFF8FEFFF7FCFFF7 -FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFDFCFCFAFFFFFDFFFFFDFFFFFDFFFFFD -FFFFFCFFFFF9FFFFFBFFFFFBFFFFFCFFFFFFFCFCFCFDFCFFFDFCFFFDFDFDFDFDFBFDFDFAFCFDF9 -FCFCFCFDFDFCFDFDFCFDFCFCFDFCFCFDFCFDFCFDF9FDFDFBFDFCFAFDFDFEFDFCFEFDFCFFFAFDFF -FAFDFFFAFCFFFBFEFFFBFDFFFBFEFFFBFCFBFCFEFDFCFEFDFCFEFDFCFEFDFCFEFDFFFAFDFCFDFE -F9FEFFF9F9FBFFFFFAF9EBE7805F567E503AA46A4D7C4831551F057939188C4A278F4C2D864A2E -774C38886D5DE7D8CEFFFFFFFDFEFAF9FEFEF9FEFFFAFEFFFDFEFDFDFDF9FEFEFCFDFDFBFCFCFE -FFFEFEFFFFFFFCFCFDFEFEFEFCFCFDFFFFFFFFFFFFFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFCFDFDFFFDFDFFFBFBFFFEFEFFFDFDFFFEFDFFFFF8FEFFF9FFFAF6FDFFFFFFD8D8D66C6F69 -84513EB073537D3B18511E0575442D774325905935805030673E298F756CEFE4E0FFFFFFF2F9FD -FAFDFEF8F7FAFEFDFCFDFFFCFAFFFBFDFFFDFEFFFEFEFFFEFEFFFEFEFFFEFEFFFDFEFCFFFFFFFF -919093070708E4E3E5FFFFFFFFFDFBFCFEFEFEFBF9FEFDF8ECFEFF6FA0C3ECD2A8FFFDECF4FFFF -FBFCFEFDFCF9FAFFFAFEFFF7FCFDF6FAFBF6FEFFF9FEFEFAFCFDF9FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFF2F2F2101010797979FFFFFFFFFFFF55686C2942494C6F79719AA4779FABA2C8D2 -C2E3E6D7F7F8E7FAFDEFEAF6E2E1F0C9D9E7BCD5DFB7D1DCACCAD59EC2CC96BCC78DB5C07DB3BD -7AB0BB73ABB76CAAB666A5B35FA0AC508F9E468D9E4291A02E7B883674844D828E476D7A23444C -4C6464FFFFFFF9FFFEF9FFFDFEFFF9FEFFF9FBFCF6FEFFFAFCFFF8FCFFF7FFFFFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFAFFFFFDFFFFFDFFFFFDFFFFFDFFFFFCFFFFFBFFFFFB -FFFFFDFFFFFCFFFFFFFCFCFCFDFDFEFBFBFDFDFDFCFDFCFAFDFEF9FBFEF8FFFCFFFEF9FFFFFBFF -FFF9FEFEF9FEFDF9FEFCFDFDFBFBFCFDFDFEFDFDFFFDFBFFFEFDFFFAFEFFF9FEFFF8FCFFFAFFFF -FAFFFFFAFFFFFCFCFCFCFEFDFCFEFDFCFEFDFCFEFDFCFEFEFEFCFBFBFEFDF9FEFEFDFBF8FFFEFA -C8AFA96836219B62459A5D40845944683F2B612F178F552B894A248F4B2D8C523F714737A28679 -FFFFFFFBFEFAF6FEFEF9FEFFFCFDFFFEFBFDFDFDFBFEFEFCFDFDFDFCFDFFFFFEFFFFFFFFFCFCFC -FEFEFBFCFCFBFFFFFEFFFFFEFDFDFBFDFBFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFCFDFDFFFDFDFF -FBFBFFFEFEFFFEFEFFFCFCFFFEF5FFFBF4FDFFFBFFFBF3F1A09087675448A567589958419D654C -633C2C502D1A83563D83431991522E8C5333613C25B39E92FCF3EDF8FFFFF4F8FAF5F5F8FEFCFF -FFFEFFFEFDFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFBFFFFFFFF919095070808E4E2E5 -FFFFFFFFFDFFFDFDFFFEFAFAFEFCFAECFDFF6F9FC6EBD1A7FFFFEDF7FFFFF9FDFFFFFFFBFCFFFC -FFFFF9FFFFF9FCFEF8FEFEFAFEFEFCFCFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFC -161616656565FFFFFFFFFFFF4E72732756593E7C8151969D5EA2A67DBCC3A6CFD3BFE3E5E8F7FB -F6E9F8EAE0EFD7DFEAC7D9E1BFD2DCB8D0D9AAC8D29EC1C996BAC385B4BF80B1BB7AABB96EA7B1 -659FAA629CA85997A64C92A2418E9E428E9C3975854B7B894B707B3A58617C8E91FFFFFFFCFEFE -FBFEFEFCFCFBFCFBFBFDFDFBFCFCFCFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBFEFEFE -FDFDFDFEFEFEFBFBF9FBFBF9FBFBF9FBFBF9FBFBF9FBFEF8FBFCF7FBFEF7FBFCF9FEFEFBFDFDFD -FAFAFAFDFDFDFEFEFDFDFDFAFAFCF6FBFCF6FBFDF6FDF8FCFFFCFFFFFAFCFAF6F9FDF9FBFEFAFE -FBFAF8FFFFFEFBFBFBFCFCFEFBFBFDF5F4FAF8FCF9F8FDFBFBFDFBFBFDFCF7FBF9F8FBFAFAFDF9 -FAFCF9FBFDF9F7F9F4F7F9F6F7F9F5F4FBF6F4FBF9F9FDF9FFFCF7E5CBC3663E369661439E6442 -7A492EBCA395D3C0B56248396C441A8F533292452C9344308F5340784C3BC5C7B5FFFFF7FAFCF6 -F4F8F8FBFBFBFCFBF9F6F8F1FBFCF6F9FAF6FAFBF9FCFDFBFEFCFFFCFCFAFCFCFAFCFDFBFAFAF7 -FAFAF8FAFAF9FCFDF8FBFBF9F9FAF7FAFAF6FCFCF8FBFBF9FBFBFAFBFBFBFBFCFBFCFCFAF9F9F9 -F8F7F5ECFFFFEEF8F9FFFFFFD1AFAE7A4238924B3D9C5F547D4534D6B0A2CEC1BC5C4A40654230 -8B46258F4B259B582E804D266C472DCBB6A3FFFFFFF7F7F6F9F9F9FDFDFFFFFCFFFFFDFEFBFCFD -FAFCFDFAFCFDFCFDFEFBFDFEFBFDFEFEFDFEFFFFFF908F94070808E3E3E5FFFFFFFBF8F8F8F9FB -FCF8F6FFFCFAECFDFF6C9BC2ECD1A7FFFDEDF7FFFFF9FDFFFFFFFBFCFFFCFFFFF9FFFFFAFCFDF9 -FEFDFCFEFEFEFCFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFB151515676767FFFFFF -FFFFFF7C999D1F4A4D2B6A6C458A8F589A9F629EA297C3CAB5D9DCD3DDE6FFF1FEFBEEFEE6EEF8 -D9E9F0D7E6EFD2E6EDBCD7E0B3D1D9B0CFD89CC6CD95BFC791BEC779A8B1689AA56597A25E97A6 -5FA2AF46919D438996518996497784426370445E68CBDADEFFFFFFFEFFFEFDFCFBFCFBFFFDFCFE -FDFBFEFCFCFEFFFEFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFEFEFEFBFBF9 -FDFDFBFDFDFBFDFDFBFDFCFBFDFEFAFDFEF7FCFEF9FBFCF9FEFEFBFEFEFDFBFBFAFDFDFDFFFFFD -FDFFF9FCFDF8FCFDF8FCFDF5FDFDF8FDFCF9FAFCF8FBFBF7FCFDF9FDFEFAFCFEF4FCFDF6FCFCF7 -FEFEFBFDFDFBF8F8F8FEFDF6FCFBF4FAF9F2FBFAF4F9F8F2F8F7F0FDFFF6FCFEF5FCFEF5FAFDF3 -FBFEF4FCFEF4F2FDF7EEF9F3FBFFFBFCF2ED9D79706E3E339465488052337F5C46ECE5DFFFFFFF -A29A8D44270A7C4931924330A953409856407B4C327D715CDFD5C4FFFFF5F9FBF4FAFBF6FAFAF3 -FCFCF1F6F7ECFEFFF5FDFEF7FEFEF9FEFEF9FCFDF8FCFDF8FCFDF8FDFEF8FDFEF8FDFEFAFBFCF3 -FDFDF6FEFEF7FFFFF7FDFFF5FBFCF3FDFEF7FDFEF7FDFEF7FBFCF5FDFEF7FEFEF7F4FEF7FFFFFE -FBEFE9744B40884637B5634D80483DA17668F8E6DCE9EEF29E979355372682432C94532F9C5827 -995B2D7D502B917055E6DDDAFFFFFDF9F9F4FCFFFCFCFEFCFDFDFCFCFFFAFDFEFBFCFEFAFEFFFB -FEFFFBFEFFFCFDFDFBFFFFFF8F908E080707E3E4E2FFFFFFFDFCF6FBFCF9FEFBF4FFFFF9ECFDFF -6898BAEBD0A8FFFDEDF7FFFFF9FDFFFFFFFBFCFFFBFFFFFAFFFFFAFCFCF9FEFEFDFEFEFDFCFCFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A1A1A5C5C5CFFFFFFFFFFFFCCD7DF57717A -0E4045478188598E956E9CA282ADB6A9CCD1DCE3ECFFFAFFFAEEFDD2DDE6B9C6CCA0AFB693A5AD -7E989E73919674939B709598668A90668E94759FA682B0B780AFB56AA0AD5B9AA4519AA43F828E -568C96517984334F608297A4F2FCFEFFFEFFFFFCFDFDF8FBFEFCFFFCFBFFFDFBFFFCFBFFFFFEFF -FFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFEFEFEFBFBF9FDFDF9FDFDF9FDFDF9 -FDFCF9FDFDF9FBFEF7FCFEF7FCFCF9FEFEFCFDFDFDFBFCFCFAFAF8FCFDF9FBFBF7FAFAF3FBFCF3 -FDFCF4FDFFF7F8FDF3FAFEF4F6FBF2F7FDF3FAFEF4FAF9EFF8F8EDFBFCF2F8F6F2FDFDF8FDFEF9 -FFFFF6FFFEF5FFFFF7FFFAF1FFF7EEFFF6EEFFFFF5FFFFF3FFFFF3FBFEF0FCFEF1FCFFEFF0FEF8 -F7FFFCFEFFFFBEAFA76941378B5548805B41765236B69F8BF8FDF8F2FFF8E8EDDF7A66526C3C2B -9C493BAC5240A35E44956545614A329D8A76F9EEE1FFFFF5FDFDF3F7FAEEFCFDECFDFFEFFDFEEE -FFFFF6FEFFF3FBFCF0FFFEFCFFFDF9FFFFF9FCFCF8FDFCF9FDFCF9FFFFF2FDFDF0FCFCF0FBFCEE -FDFDF0FEFEF1FFFFF6FFFFF6FFFFF5FFFFF5FFFFF2FCFDF1FFF9EBFEF6EABAA59765402D8F5B42 -9A58387D4C40DDBCADFBF8F1F6FFFFD9D8D87C5F50773F308E5030904B189A5B23966439704A2B -A5918FF8EEE7FFFFFBFCFFFAFAFFFCFAFFFCFDFFF6FCFFF6FCFFF7FCFFF7FCFFF6FCFFF6FFFEF9 -FFFFFF90908F080806E5E6E3FFFFFDFDFBF3FAFBF6FCFAEEFFFFF7F1FFFF72A3BFEED2AEFFFFEF -F7FFFFF9FEFBFFFFFBFCFFFFFEFCFCFDFCFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -FCFCFCFCFCFCFFFFFFFFFFFF1D1D1D535353FFFFFFFDFCFCFCFFFFBACFD12E515728575E43747E -5F929D7EA29EA5BABEADB2B9A8A2ACA19EA49494988E9598838C8F848D92939FA5919EA585969B -79909781969F788F99617A8555707B5D7783718C9E6A92A2679BA95A909C608790556E7A5C6F6D -E3EDEDFFFFFFFDFDFFFDFAFDFEFBFDFBFDFBFDFDFCFBFBFCFEFEFEFCFEFDFCFCFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFBFFFFFCFCFCF9FEFEFAFEFEFAFEFEFAFBFBFDFDFDFDFDFDFDFDFDFDFDFDFDFBFBFCFFFEF8 -FFFDFBFFFDFEFEF9FDFFFBFFFFFAFFFAFAFFF9F8FCF6FBF9F6FFF8F3FFF6E9F8E9D8EFD2D5E9CC -D8E9CFDAE8CEDDE9D1E0E9D3E0E9C3D9E4C9D0E1C6D6EBC1D8E6C0DBE0C7D6E1C2DEE9CDDDE5CE -DCE7D0DAEACDD7EBC9D9ECCBDBE5C8E0E3CDD9DDCDD5E2D3D2E7D9D6ECD7E9F1DCE4D4BE603D24 -70442894634778543A928A71EEFAE7EDF4EDE7EBE9F0FDFDE4CABD633F377E4B48894539A6583C -AE5D33985D3E795236A19277E4EBD2D5E0C9E1E6D3D6EACCDDF0D3DDEECDD6E7C0DCE9C1E1EABF -DEE9CBDEE8CCE0E8CED9E4CCD5E3CCD3E5CBD8E3C8D7E8CAD0E6C5D5ECC8D6ECC6D3E5C2DCE8C6 -D7EABCD4EABFD4E7D1D6E6D5D4E5C7EFEAD9C7A99A6C3A2B81523D8B5D44673318C3A7A3FAEEEC -F2F5F6F1F9FCFFFEF8D7C9C16E443A7049328A5837904523A35A3B955E397A493AB59E8AEBEAD5 -E1E3CEDDE0CCD6E5C9D8E6C7D8E5C8D8E4C8D9E7CCD9E6CDDAE6CED6EAC6F3FDE1828077060609 -CFD2CADBEAC2D9E6BFDCE8CAE0E2C6DEDFCAD1EBEB5D97B0ECD2ACFFFFEFF7FFFFF9FFFAFFFFFB -FCFFFEFEFCFCFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFDFDFD -FFFFFF1F1F1F4D4D4DFFFFFFFAF9F9F9FFFFE6F6F891ACB2163B453C686F537F866E908E6F8283 -6B6F75928F959B979D94939A999E9D949B9D8F9797909B9D8F999C8D9A9B8B9CA08D9FA493A3AB -97AAB1889DA673889250667050727C5D8D9663959B61898D355457BFD1CFF4FEFFFBFDFFFEFCFE -FEFBFDFEFBFBFBFDFDFDFDFCFBFBFBFEFEFEFEFEFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFDFCFCFA -FEFEFCFEFEFCFEFEFAFBFBFDFDFDFDFDFDFDFDFDFDFDFDFDFBFBFCFFFEFAFFFEFBFFFDFDFDFAFC -FDFBFFFBF9FFF9F9FBFBFEFCFBFFF9F3FEF2E6F3E2D0DFCCBBD3B0BBD0AEB9CEACBFD2ADC0D1AC -C2D1AABDD4A6BAD2AEBFDBBBC7E5B7C4DFB4C0D5B9C7DBB5C8DDBBC0D7B8B8D3B5B8D6B1B5D7AD -B2D8AFB6D4B0BCD0B0C9DCC3BDD7BCBCDFC1C2DECBC6D0BAAB9C856640278252387F49307A5847 -D3CAB7F0FCEDF0F4F4F0F1F5EDF5FAFDF2E7A9918C69403C8F4E41A5563BA95029A05F387D512D -8A7B5BC5D2BAC6DCC8C7DECEB7D1ABBFD9B4BCD4AEBFD8AFC0D8ADBFD7ACBFD6ACC0D7ABBFD7AC -BEDAB2BCDBB1BEDFB7C4DBBCBFDDBAB8DAB5B4D9B0B8DEB3BBDEB4BCD9BDBADCB4B7DEB4B5D8C3 -B9D4C4BBD7BCD5D9C1917A66693E2D7F573F77503993644FF9EDE8F8F6F4E6EDEFE5EBF0FCFAF9 -F7E9E6AF8E8A63453385563C9A512F9D5331A769447F513E8E7E63C6CCAFC2CAAFC4CCAFBDCCAB -C0D0A8BFCFA9BFCFA9BFCDAABFCEACC1CEACBACEA7D4E1BF73746A050407B6B9ACC2D2A6C4D3A5 -C8D5AFC8CBAAC9CAB4C4DEDF5D97B3EED4AEFFFFEFF7FFFFF9FFFAFFFFFBFCFFFEFEFCFCFEFEFE -FEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEF8F8F8FFFFFF212121484848 -FFFFFFFEFEFDFBFBFCFCFFFFE7F6FD3D565F37555D4062684C676567767A92989E9B979D89878B -8683887A7B77727370656966666B6D656A6B5A5F61565F615C66695F6A6C727F838493988D9AA0 -98A2AA7B939A31575A5C898A4B706F62837FFBFFFFF8FFFFFAFBFEFEFBFDFEFCFBFDFBF9FBFBFD -FCFBFBFBFBFBFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFDFCFCFAFEFEFCFEFEFCFEFEFA -FBFBFDFDFDFDFDFDFDFDFDFDFDFDFDFBFBFDFEFEFCFDFEFDFEFEFEFCFBFBFBFAFAF7F7F9F9FAF6 -FBFFF9F9FFF7E2EFD8CEDEC4C1D3B6BCD7ABBBD4A8B5CD9FBED6A2BBD39CB9D098BBD9A4C6E2BB -AECDAA7A9D746B8D676C8C756B8E7462887164917B5D91795C94775C94735797795B9277649079 -698F785B846B63967B6D917E7888725C4F386F462F814D377A442FB0938AFFFFF6E9F5EDEEF2F6 -F2F1F7F1F6FCF8F7F4E8DFDE725957884F43A9593EAE4E27A45A2C86562B5F5231627B646B9282 -5E898064876A6B8F73698A71668C70638B6E618B6D638B6E628E6D5C8E6E63997A5D977861997A -63907D61947D5B947A5694755997775B967758907957946F5491705B91815C8C8166947F778467 -5A4A336C49347B5B44664936C9A598F8FEFBECF2F4E9F3F7EBF0F7F0ECEFFFF4F3E1D1D4746257 -674330A15C3F9F5031A25D36845B3F988C6AC1CEA8C3D2ACC8D7B0C2D7AAC6DAA3C6D9A6C6D9A7 -C5D8A7C5D7A9C5D8A9C0D9AAD9EABF787A6A070606BCC4AEC9DCA9C4D49FC6D4A7CFD2ADD7D9C1 -D7F1F369A2C1E8CCA7FFFDECF6FFFEF9FFFAFFFFFBFCFFFEFEFCFCFEFEFEFEFEFEFEFEFEFEFEFE -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFDFDFDFEFEFEFFFFFF2323233B3B3BFFFFFFFBFBFBFAF8F6 -FCFBFDFFFFFFBCC7CD3145483C55548293938D9B9A7D858778777A969597C6C3C3DDE3DEEBF0EB -F4F5F4FAFAFCF9F9FCECECF2E0E4E2CFD4D3B4BABB767E7F545E5E505B5B73767B8792988B9FA4 -4761624C6460D1EBE2FDFFFFF6FBFAFBF9FAFFFDFBFEFEFAFDFFF9FEFDFEFEFEFEFEFEFEFEFEFE -FEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFDFCFCFAFEFEFCFEFEFCFEFEFAFBFBFDFDFDFDFDFDFD -FDFDFDFDFDFDFBFBFBFDFEFEFDFDFDFDFCFDFEFFFEFBFCFCFEFEFEFAFFF5F6FEEEE2EED7C9DBBA -BFD6ADB9D0A3BCD7A3BDD7A4C2DFA8B8D69DBCDBA0BAD899CDE6BCA2B9A05C78674B725C548272 -49777A26738023768216717F10707C106F750E686F14737B22767F32757E3C777C4580833C7A76 -558276768C7D3E35206B46316C412F94655AFFECEDFAFCF7E6F5F3F0F4FAF4F2F8FAF7FDDFE6E9 -FDFFFFD2CACA684237934E39B35637A5592E77492666644A669285458582469194467F83487E86 -487D873F78843A7D872E79852B738A25778D1B788B14778B1172870D6D830C65730A667105676F -10707717727A1B737D1C736D1E7967237D6B2F7E7F307578337671637B68322E1D563C296D5742 -998C7CFFF1EAE3F5F8E8F5F8EBF3F8EDEFF4EEEBEDFBF6F7FDF8FFC3BDBC685145905240A65940 -AC5E3F775231A9A67EC1D8AAC2DCACC4D9A4C1D8A1C0DB9CC1DA9FC1DA9FBFD79EBFD8A0BFD7A1 -BDDBA6D5E9BB737D67060605B7C5A9CAE2AAC3D29FC1CFA5CFD2AEF3F3DEE9FFFF6CA4C7E5CAA4 -FFFEEEF4FFFFF9FFFAFFFFFBFCFFFEFEFCFCFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFE -FEFEFEFEFEFEFCFCFCFFFFFFFFFFFF272727323232FFFFFFFCFCFCFFFFFBFCFBFBFEFCFFF0F5F8 -7E8D8C5870687684846F7B7B939A9BD9DBDCEBE9E9D7D1D2D2DBDBD4DADCCED3D6D0D2D7CBCCD2 -BEBCC4B9BEBDB9BDBFBBBFC1B2BABDACB3B78A9498595E61545C6174808957656A919E9FF1FCF9 -FBFFFEFCFDFEFFFCFCFFFCF9FEFFF9FCFFF8FEFCFDFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFE -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFBFFFFFDFCFCFAFEFEFCFEFDFCFEFEFAFBFBFDFDFDFDFDFDFCFDFDFCFDFCFCFDFCFC -FBFCFFFBFCFFFBFDFDFBFDFCFCFEFBFFFFFDF0F7E7DEE8D4CAD9BBBFD2A9BED6A3BCD7A1BFDAA1 -BEDAA3B9D7A0BCDDA9C0E2AFC5E7B28FAE93628078678E9081BCB889D1D670C2D451C9E648C3E2 -31B4D332B5D638B4D33DAFCE48BBD55EC1DD72C1DD7EC0D691D3E099E0E9AADBD9B7D1C8676252 -644735725346CDADA8FFF3F4ECF1EFE2F5F0EEF4F8F5F0F3EFEBEAF2EEF5F8F8FCFBFDFC937C73 -77412F9D4D35A964466D46309AA294B7F1F18ADAE386E2EF89D5E68DD4E985CBE580CDEB70C9EA -61C7E458C4EA4EC4E940C5E431BEDC31BADC27ACD028A8C12DAFC92FB1CA3CB6CF46B7D34EBBD8 -5AC4CF5BC6C458C0BE70CCDD7DCBDF79C5D099B9B451504C574236736453D4D2C4F9F9F4DCECF3 -EFF7FCEBEBF0F2F0EFF1F2EEE8EBE5FBF9FFF0F1F19C8D87753A32A55949AB5D466B4728B1B188 -BDDBAAB8D8A4C0D8A1C1DB9FBAD69DBCD79EBBD6A0BDD8A3BDD8A5BED8A5BADBA7D3EABA707D67 -050506B3C4A7C5DFA6C1CDA7C8D4B5E3E5CBFCFCEAE8FEFF669EBFE2C6A2FFFFEEF5FFFEF9FFFA -FFFFFBFCFFFEFEFCFCFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FDFDFDFFFFFF272727323232FFFFFFFDFCFCFAFDF7FEFBFCFFFDFFEDF2F4919F9B5E776A5C6466 -959DA0C1CAC7BDC0C0BDBABAC1B9B9BCCACBC2CDCFC0C9CDBBBFC8B7B9C3AEAFBCA3A7A9A2A9AB -9CA4A59BA2A89AA4A99DA8AEA3A7AD737B843D4550676E77ACB0B3F6F8F8F9FDFCFCFCFBFEFBFB -FFFCF8FFFEF8FCFFF8FEFCFDFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFEFC -FCFCFAFEFEFBFEFDFBFEFDFCFBFBFCFBFBFDFDFBFCFDFBFDFDFCFCFDFDFDF9FBFFF7FDFFF8FBFE -FCFFFEF8FBF8F0F4F0D9E1CFC7D1BBC0CEAEBFD4A6BCD69FB7D496BFD9A0C0DDA5B8D6A1BFDEAE -C1E4B886A87E4A786768989989C2CD81D4DC59C2D048BCDC29C0DD1AB5D307ABCA15B4D524B5D7 -2FB9DA43BFE05AC7E868C2E17EC8DD88D0DA8AD7DCA6DADFA6C3C0636254503728B8A298FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF5F2986E5D8B4732A96958 -5537298598919DDEE877D3E373D9EE76D0DE6DC1D368BAD460BBDB4DB8D842BADA32B8D02BBCD1 -1ABDCE10BCCC0CB4C604A8BB0CAABF13B2C916B1C722B2C936BAD536AFCE44B9CF4FC2CC53C4CD -5BBCD965B9D873C5D97EA0AA5254594D3734D8CCBDFFFFFFFFFFFFF2FFFFFFFFFFFFFFFFFFFFFF -FFFFFFF9FFF5FFFFFFFFFFFFFFF5F19A625F984E44AF6252593217A9A983C0E1B1B9DEACBFDBA4 -BEDB9EBBD8A5BCD7A5BCD7A7BCD8A8BCD8A9BDD7A9B8DBA7CFE9BC6F7B68050506B0C3A7BEDBA2 -C7D2B7D9E5CCF9FAE5FFFFF1E7FCFF609AB9E3C6A2FFFDEEF7FFFFF9FFFAFFFFFBFCFFFEFEFCFC -FEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFFFFFF272727 -2F2F2FFFFFFFFDFDFCFCFEF9FCFCFAFFFFFFE8E9E9595D5E4F53558D95979CA1A4989BA0A0A3A6 -B6B7BBC2C3C6CED2DBD0D6DCD6DBE1DCE2E6D2D8DDC9CED4C5C8CFBEC0C9B2B6BE9FA7AD9FA7AC -959FA38F96A091979E878C9250515779797EECEDF2FFFFFEFBFAF8FBFDFBFEFEFCFDFEFCFEFCFB -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFF9FFFFF9FCFDF7FEFFF9FEFFF8 -FEFFF8FEFFF9FEFEFEFCFEFFFDFEFFFAFEFFF7FDFCFCFAF5FBFCF9F9FEFAF4FCF0E3F1D7D3E5C0 -C2D8B9BCD0ABC3D4A8C2D8A5BED8A3C0DDAAB8D49DB6DDAAC1ECC2A3C3A6678C704D825E76B3B7 -84C9D36BC5D549C2D934C3D722C0D206BECB05B6CB0CB0D01EB4D934B9DE44BDE360BFDC67CBE1 -6CCFDD82D6E095D9EA9CD4EBC8E7F99EB2BE373A3E362C29807474978F8E747E7C7C87847F8B87 -808784818181847E817D7E7D7B837E727F768E89836C4D505F29328D5C624A353D7F8E9D98DBF2 -70CEEF62D2F95FC2DD5CBFDD58C1DF4DC2DF3EBFDA36BDD91BC0D515C0D608BCD200B0CA00AECE -03AAD00EB5D41BBAD91DB5D635BFE03CBEE03EBDDE50B7D55BC8E357C7E25CC2DF6CC0E093DCFF -68808B2E364342363A8D7A7B9089868185827E888782868083847B7F7F7781827F7F838581868E -7C81878B888E796064582727A65C5E422E1197A579BBE4A9B8DEA2BBD9A2BDDAA9BCD9A2BDD9A5 -BDD9A4BAD7A7B9D5A5BCD7A7B7D9ABD0E8C571796C050605B0C0A9B8D2B4D4E1D0EEF7ECFEFCF3 -FEF8F4E8FCFF689BC4E8CCA7FFFDECF5FFFFF9FFFAFFFFFBFCFFFEFEFCFCFEFEFEFEFEFEFEFEFE -FEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF2727272F2F2FFFFFFFFDFDFC -FCFEF9FDFBFAFFFFFFEEEFEF595E5F3A3D4199A2A49AA0A3A1A5A8BDC0C3DADADEE2E2E6E8EBF2 -EFF2F8F6F9FFFFFFFFFBFDFFF4F7FDDCDFE6D1D3D9C6CAD0AEB6BBA5AEB29DA9AB9399A2969CA3 -A0A6AC44464B757579F2F3F5FFFFFDFAFAF8FDFDFBFEFEFCFEFEFCFEFEFAFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFAFFFFFAFCFDF7FEFFF9FEFFF9FEFFF9FEFFF9FEFDFC -FDFEFFFBFDFFF9FEFDF7FEFAFBFDF1FBFEF3F4FBEEE2EFD9D0E0BFC4D8ADBCD6B2C2DBB0C6D9AA -C6D9A6C0D8A5BFDAA9BAD7A9B9E5BA9ACBA95C8571507F6B81C0A58BD8DC73CAD15DC3D03CBCCA -31C3CF24C2C90DADC00EA9BF22B3CF3BBBD850BFDD61C7E276CBDF7FD5E385D8DF99DFE5A3DCE7 -AADCEAD1EEFA82939C41454A969292B1AEADA5A5A39297989DA6A699A3A399A5A49EA5A59E9FA1 -A3A3A59AA1A0909E98A9AAA7B6A0A2977279643F444739408395A09AD7E770C7E061C5E262C1D4 -64C3D65CBED353BFD542BACF38B7CB1DB1C316B1C20AB0C004A7BD10AEC91DB8D52DB9D530B7D1 -38B8D34EC4DE51C3DC54C0DA65BFD268C6DA67C7DB70C8E079C3E09EDEFF455C69404953A9A0A2 -B7A6A6ADA6A49EA3A1A6AEAEA2A5A1A3A49DA6A59FA8ABA7A7ADADA5A7ACA0A5A9A7A9ACC0B0B0 -916E6B85504E3B2D13A0B188BBE3ADB9DDA5BDD8A5BFD7A8BCDAA3BDD8A5BDD9A4BBD7A7BBD7A7 -B9D6A6B3D3A4D2E7C5707B6C040503ADBBA7C0D9BDE8F0E2FCFFFAFFFCF2FDF5F2E9FDFF6B9DC4 -EDD2ACFEFCECF4FEFDF9FFFBFFFFFDFCFFFFFEFCFCFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF2727272B2B2BFFFFFFFDFDFCFBFEF9FDFBFAFCFFFD -FEFFFF969C9D3D414598A1A3A0A5A9C2C7CAEEF2F5FFFFFFF9FAFDEDEDF3E1E2E7D7D8DDCFD0D5 -D3D4D9CBCDD2C3C6CDC6CBCEC2C6CAB8C0C3B0B9BBA3AFAE939AA38B919890959B4D50549FA0A5 -FDFEFFFEFEFCFAFAF8FDFDFBFEFEFCFEFEFCFEFEFAFEFEFEFEFEFEFEFEFEFCFCFCFCFCFCFCFCFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFBFFFEFCFCFBFAFEFEFBFEFEFBFEFDFBFEFFF9FEFDFEFDFEFFFDFEFFFBFFFB -F9FFF6F9FEECF4FCE8E4EFD6CBDDB9BCD1A4C0D6A6BCDCADBFDBA8BAD19EBDD09FBCD3A4C2DAAF -C2E3C186B799447D6962989392CFCC7DCBC15FC5D858C5D642B9CD2CB0C12CB7C320B2BA1D99AC -2EA9BA3FB3C151B4C365B6C472BDC77CC0C687CCCB8FCEC99DD1CEA1CFCCB1DADAC8E1E55F7275 -6C777BF5F9FCFFFFFFFAFFFFFFFFFFFFFFFFF9FFFFFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFF -FBFFFFFFFFFFECDEE35F4A4D3A363B778D9190C3CB79C1CC5EB4C265BBBD5DB3B558AEB54AA9B1 -3DA5AC34A3A8249FAA199BA30D98A01AA5B025AAB832AFC140A9BA41A9B846A8B853ADBA5FB5C2 -54A6B36EB4BB74BEC56BB6BD74B7C684BED49FD1F0314A59919BA6FFFEFFFFFDFDFFFDFBFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6D7D2563A33413C25 -A4B994BEE7B5BBD7A6C0D3A6C3D4A8BCDAA3BDDAA5BDD9A6BBD7A6BCD8A8B5D2A1BCD8A9D8ECC9 -6F7A6A060707BECDBCE4F8E1F8FDF1FBFEF7FEFBF1FEFAF5EBFDFF6C9CC2E3C8A2FFFDEDF2FEFD -FAFCFAFDFCF9FBFFFEFEFCFCFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF292929272727FFFFFFFDFDFDFEFFFAFEFDFBFDFFFDFFFFFFCBCCCC45484C -9DA5A7B0B6B9D3D7DAD8DBDEC6C7CBC2C3C7CED0D3D4D5D8D4D5DAD4D5D9CCCED1C1C2C6B5BABC -B7BBBDABAFB1A7AFB0A4ADAF9BA5A5979DA68D939A8B91975F6166CACBCFFFFFFFFAF9F7FDFDFB -FBFBF9FBFBF9FCFCFAFBFBF9FEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC -FFFFFCFCFCFAFBFBFAFBFBFAFBFBFAFCFCFAFEFEFFFCFCFFF8FBF8F7FDF5F7FFF2EAF7DDD7E5C6 -C7D9B2BBD3A3B9D39EBBD8A2B9DAA3B9D6A1BBD4A1C5DAB1CAE0BEC9E2C36D9789427E736DB2B1 -90D8EA78CCE363CADC43C7EF40BFE440BADF3EACCC23819B004F671851593A777B377772417C6D -437969497A67467764507D695B836A55795D59786260806B6F857041524995A0A2FDFFFFF4FCFC -EFFBF5F8FAF8F4FBF9F2FDF7F7FDFBFCFFFCFEFDFCF8F6F6FCFCFCEEF1F2F4F9F9FAFFFFF4FBFB -868684434A496777734C71674271652D67593A7B6536745F34705F3574652E7465287365246F6C -1C706A17716A267D781765651C6466346F6836736A3971673D75673C71613D71604C786A457465 -3F6D6054807F4A707B254961183044C0CCD4FFFFFFFEF5F6FAF5F6F9FBFEF9F7F8FBF6F8FEF6FC -FDFAFEF8FBFAF4FEFAFDFDFAF3F4F4F5F6FBF8F8F9EEF0EC75736D6E6F59AAC09EB8DCAEBED9A5 -C5D6A5C3D5A6BBD9A2BAD7A4BAD6A3BEDAA9BDD9A9B9D5A5BED4A7D8EBC8707E6D050506CBD8CD -FDFFFAFCFCF4F7FBF4FAFCF3FFFCF5EBFAFF6F98BEE2C6A1FFFFEFF3FEFDFAFDFAFDFEF9FBFFFE -FEFCFCFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF -2A2A2A262626FFFFFFFEFEFEFCFDF8FCFCFAFBFDFCFFFFFFC4C7C8484B4F969FA1A0A7A9A9AEB1 -AAADB0B0B1B5BABBC0C9C8C9C8C7C9C5C5C7BEBEC0BEBEC0B9B9BAAEB2B3AAADAEA8ADAD9EA8A6 -9DA6A498A2A090979F8C9299898E9464656BD6D7D8FFFFFFFAFAF8FBFBF9FEFEFCFBFBF9FDFDFB -FBFBF9FEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFCFCFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFDFDFDFD -FDFDFDFDFDFDFCFCFAFEFEFFFCFDFFF9FBF7F9FEF4F0F8E7D8E6CDC5D5B5B8CCA3BCD5A1BBD8A1 -BAD8A2BED8A3BFD8A4CEE5B7CAE0BEB0CCB26687715A888672B2B385D4E27BD0F161C5EB48C0E3 -27BDDD2BB5D333AAC83380981D475D0818293B3F3E89988C9DB89E92BA9591BB948EBA9290B694 -93B4919AB68E9BB38D99B58E8FAE899CB48D788974B8C5C3FDFFFFFBFDFFFCFEF7F9FDF5F8FEF6 -FCFFFAFFFFFBFFFDF9FFF4F4F8FBF3FCFBF6FBF9F7FEFDFDF7FCFCE5F2EEAFB9B288938A909D8E -A2B39D99B39691B58F8BB78D8DB38D93B69395BA9B92B99C90BB9D94BAAD8EB9A994C5B288B8A6 -456B5C516E6489AE8EA0C3A599BA9B90B28D95B68F9BBD948EAE928FAF909EBEA083A295415D62 -4762765B7188D1DBE4FFFFFFF4F1F1F8F7F8F9FBFFFFF9F8FFF9FEFFFAFFFFFEFFFCFFFFFAFFFD -FDFCF6F7F7F6FAFAFEFBFCFEE1E6E5B1B7B48B8B74ACC29DB9DBA9C0D9A0C2D7A0BED9A0BAD8A1 -BCD7A4BAD6A3BED9A9BBD7A7BAD7A6BED0A3D2E3C2707C6D070708D5DDD8FFFFFFFDFBF6F9FBF6 -FBFBF5FFFFF7EEFBFF6F95BAEDD0ACFFFFEFF6FFFFF8FCF9FDFEFAFBFFFEFEFDFDFEFEFEFEFEFE -FEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF363636232323FFFFFF -FDFDFDFAFBF6FAFAF8F9FBFAFFFFFFC7C9C94A4F5398A1A39DA4A5989DA0989B9EB2B1B5BEBFC3 -D5D4D6DEDEE0E2E2E4E1E1E3DFDFE1DCDCDEC7CACCBCC0C1B1B7B59CA5A497A1A1929E9C8C939B -8F959D8C92985E6066CECFD1FFFFFFFBFBF9F8F8F5FEFEFCFBFBF9FCFCF9FBFBF8FEFEFEFEFEFE -FCFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFEFEFCFBFDFBFBFDFDFDFCFDFDFDFCFCFB -FEFEFFFDFEFFFFFFFCECF1E5D5DECCC0D0B7C2D2B5C2D8ACBAD59FB6D49CBDDFAAC0D2A3C0D3A4 -CFE2B7ABC6A45E7F6962887792BFC490D3DD73C4DB63BEEA52C0F13BBEEE1AC0CA23B9C20C838F -0540492B333946292F58352B988671D3D7AEC2DEA9C0E7AEB7E5B0C1E1B5C0DDAECBE1B2CADDAD -C5E1B0BCDCAECBE2B09DB191B4BFBAFFFFFFFFFFFFFFFFF9FAFFF3F4FCEDF3F9EBF0EDE6F4E7E1 -FFEAE7F6FEF1FFFFF7FFFDF8FFFCFBFFFFFFE6F2EDB4C4B9939E91B1B7A2DADFBECFDBB2CCE2AF -C0DCA6CAE0AECCDCAED1DDB6C9DBB3C3D9B2CBD4C2C5D5BEC4DBC2A5BCA032402643452FB3CB9C -D8F0C2C5DCACC0D7A0C1DAA0C5E0A5BFDAB1D8F1C8BFD8AF5A725B6C8482B3CDDB7A8DA6D2DCE5 -FFFFFFFFFFFFFFFFFFFFFFFFFFF5F6DED4D9D0C6D2C6C3CBD7DDDCEDF8F2FFFFFBFFFFFFFFFEFF -FFFFFFDDE0E2B8BCBE98947AABBE97BADAA5C0DA9DC0D99BBBDC9ABCD8A2BED9A5BAD6A3BDDAA8 -B8D5A5BDDAA9C2D2A4CDDCBB72806E080808DBE0DDFAFDF9FFFBFAFBF9F9FBFDF7FFFFF6EEFCFF -7498BCECD4A4FFFFE7F6FFF8F9FDF9FBFCF8F9FCFEFBFAFBFAFAFAFAFAFAFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF3B3B3B222222FFFFFFFCFCFDFFFFFCFFFFFD -FCFEFDFFFFFFC9CCCC4F54578C9194909497A9ADB0D5D9DCEEF4F6F2F8FBF9FAFCFEFFFFFEFEFE -FEFEFEFFFFFFF6F6F8E4E8E9D8DCDCCBCFD1B6B8BEABAEB4A5A7AE9B9FA691949B909297606163 -D2D1D2FFFFFFFEFEFEFEFEFEFCFCFEFEFEFEFEFEFEFEFEFEFEFEFAFEFEFAFEFEFAFCFCFAFCFCFA -FCFCF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFBFBFBFEFEFEFEFEFEFEFEFEFCFCFCFCFCFCFCFCFEFDFDFBFCFCF9FDFDFB -FCFCFAFCFCFAFEFCFAFBFFF7FBFFF8FEFEF9FEFEFCFDF9FDFBF7FCFFFCF7FFFEF8FCFFF4E5F0DE -C3D4C0BFCEBAB8CFABB8D5A5C3E1A8B6DB98B7DFA1AED89EC3D4A0CCD5B4A0A4984E616D6B9DAA -96DDEA83CBD875C6D863C6DC46BCDB45C4E335BBDD129EAB0364634E76625A492A7B5B3F512E18 -724D30543D1D87835FD0E6B7B5DAA2AFDFA1B0DBA0B5D496C0D393CBDB9DC3D7A2BEDCABCFD9B9 -8EA877AFCEC2C8DFD6D9E2B4E3D6B5D2D5CFDDCFD98A757878210E962618653426D7DCCADEDFDE -E0DAD9EDE2CADAD9CBCADBEBBAD1D1859586A3BB98BBE1AEB8D4A5C5CBA9BDD79DC8E1AFBED3A4 -BACFA0BFD6A0BCD094C5DAAAC0DEB0C4D2AF6E47365728144E300F825E54BDBC9FBDD6AAC4DCA9 -CBD6A5CCD6A5C3DFAE8BAC8C4569607094A2ABCEE3BFDDF87891A6BADEE6BECEDBD4C582D1BEA1 -CDCED1BDBED07C7487614168804584693D63F1E7EBB0C6CBBFCEC7D9C19AC2B7AEB7D2ECB7C8CA -958B88B1B4A4C0D7B0B7D6A5BBDBAABDD9ADB1D3A4B4D2A4BED9ACBCD5A8BFD5AABCD2A7BBCBAB -E7F3DB86888009090AE5E3E5FFFFFFFDF9F4FAFDF8FDFEF6FFFDF6EEFCFF749ABEE8CEA2FFFDE6 -F5FFFBF7FAF6FFFFFDF7FAFCFCFCFDFCFCFCFAFAFAFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFEFEFFFFFF414141202020FFFFFFFFFFFFFFFFFBFFFDFBFCFEFDFFFFFFCDCECF -5055589A9EA1A9ADB0CACED1F4F7F9FAFEFEE4E9EDDCDBDDD1D1D4C6C7C9BFC0C2C3C4C7C2C1C4 -B8BDBEB2B6B7B5B9BBB5B7BDB0B3B9A3A5AD93989E92959B909196626366D3D2D3FFFFFFFDFDFC -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFAFEFEFCFEFEFCFEFEFCFEFEFCFCFCFAFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFBFBF9FAFAF8FCFCFAFCFCFAFCFCFAFCFCFA -FDFCFAFEFCFCFEFCFBFCF9FCFDFBFEFFFCFFFDFEF7F4F7EDE4EADBC2CFB8BCCDB1BCCEAFCAE3B7 -BCD8A4B6D295C1E09FBBDBA1C3E4AFB5D1AA7F947D5B6F6980A5B191CDDD7ECEDA69C8DE58BCD5 -4FBDD744BBD939B4CF1D9AB615727B4C858278816E8F6548844B32682B18734B2F6143255B4D2A -B2BF95BFDEB0B8DFAFB5DDA9B7D79EC1D79CC6DBA0B9D2A1B1D3A7D3DBBA99B18299B5AC586C62 -555A297F6F464148347A69697F655F94321BB63A2A692B1ABABEAF5B5E574E4D3D80794E4D5131 -6F8084BDD5D488998CA6BB9BBBE1B0B3D0A1C4CEA7C2D7A1C1D9A6C0D8AAB7D3A3C4E2AEB9DA9F -C1D9A8BFDAAD8C947169402F67341F6C40265C3329898167C1D3AAC6D9AFC3D6AEC1DAB06F9073 -476B597EA5A6ABD4E6A7CFE7B2D9F47D9BAA9BC2CF51646D756F18867C4A4351406A717E998EA0 -956793B46EAE6F4368CDC8C438554D556A55907D474E4632728B9CB6C1C18B8780B1B7A4C5D9B3 -BDDAA7BFDEACBFDAADAED59FB4D7A4B9D9A8BCD9A8BBD6A8BBD4A7C5D6B8F8FFEE8A8A84080809 -E4E3E4FFFFFFFFFCF7FCFEF9FCFEF6FFFDF6EEFCFF739ABDEACFA8FFFDE9F3FEF9FAFDFAFBFCF8 -F9FCFEFCFAFCFAFAFAFAFAFAFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -FFFFFF4646461E1E1EFFFFFFFFFFFEFFFFFCFFFFFCFBFDFDFFFFFFC6CBCA494F51A1A5A9BCC0C3 -C9CDD0C8CDD0BCBFC2BCC1C5D5D8D8E2E5E7E5E8E9DFE2E3D0D3D5C3C5C7B4B8B9B2B6B5ADB1B3 -A8ABB0A6A9AF9EA1A8999EA5979AA0919196606164D2D2D3FFFFFFFDFDFDFCFCFCFCFCFCFEFEFE -FEFEFEFEFEFEFCFCFAFDFDFCFEFEFCFEFEFCFEFEFCFCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFCFCFEFDFDFBFCFCFAFFFFFDFAFAF8FAFAF8FAFCF9FFF8FFFFF8FEFEF9FE -FBFAFAFBF9F8FDFDFBF3FDF1DAE5D5C5D1BBC3D3B4CBDDB7BAD1A6BFD9A5CBE7ADBEDA9BBCD89B -C6DFADCFE6BE557E684D746995BEC396D0E57FCFE16BC6D852CCEB52CBE93FB7D34CBED5188497 -00616E6D9592A8B7AA8369519555368A4024752A1575452A7A50345D42227B7956C3D1AEC4DEBB -BADFB4B9D9A7BDD8A3C9E2AFBDDBADABCCA9D0D7B3A2B6899EB5B03F4F456F7437B6A96A4A5432 -6D594DA6806EC14D31CE432E8F3F2AB7BDAF4C52426B734BB9BC71464E195A6E60C3DEDD89988C -AABEA1BDDFB1B8D7A6C1D1A4C4D59FC2D6A6BCD7A7B7D8A8B6DFA8BCEAAEBED6A7B2C0946C613F -875643692A19844733744239624E38ACB08FD3E2BFB3CCAF66917451767478A0A5A9D7E8A8D6F0 -9ECDE7B4E3FA83A7AE96BEC82E4446929122B8BA6B39552D54646AA79AABB279A7D27EC2885D7E -C6CABF1F422C6D885FBAAB634B451C6D878EC1CCC692948BAAB49FC7DBB1BEDAA8BEDEABB9D7A8 -B0DBA1B7DDA5BBDFABBEDEACB8D5A8B5CEA2D6E7CCFFFFFB8A8A87080808E4E2E4FFFFFFFFFFFA -FDFFFAFDFDF6FFFFF7EFFCFF739ABDEFD5B2FFFFF0F3FEFDF7FCF8FDFEFAFAFDFEFBFBFBFEFEFE -FEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF5151511C1C1C -FFFFFFFFFFFFFBFCF8FDFBF9FCFEFCFFFFFFC8CACA494C508F9A9B9EA8AA9AA2A4A5AEAFB0B9BA -B8C2C4BCC2C1BCC2C2B5BCBBB2B8B8B5BBBBB4BCBAB0B3B5AFB3B4A7ABAD9C9FA49C9FA69DA0A7 -989DA395989E8A8C91656569D2D2D2FFFFFFFCFCFCFFFFFFFFFFFFFCFCFCFEFEFEFCFCFEFFFFFC -FFFFFDFCFCFAFEFEFCFEFEFCFCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFFFFFFFFFFFFFCFCFCFDFDFDFDFDFDFEFEFEFEFEFE -FEFEFEFCFCFAFEFEFCFEFEFCFCFCFAFDFDFBFBFDFAFFFBFFFCFAFFFCFBFCFEFFF9FAFEF4E7EDE0 -C2DCBCB9D1B0B4CCA6C7DDB2BFD5A6C6DCABBBD5A0B0CC94BEDAA2C8E4B8A6C0A45A70605E9597 -96D0D994DBEA77CFE562C8DE58C6DA40C3E138B7CF3FB0C5136E782A74717EBFB8CACBB28D7A5F -7D502FAB6A468F492B7D391F743E247E4B2C7A4C29573E1B908766CFD0B6BDDAB3B3CEA4BBD7A3 -B9D3A6C2DEB5BAD9B9C7D1AB96AC82A3BDBA4A5D4B7D8735EBE48A65774676614AA87561C54123 -E44A348F3920C3C7BA495231849548E9F588606D225F735EC3E4E08B9992B2BEAAC0DDB2BBD9A5 -BFD39EC6D49FC2D4A3BED4A9B9DCADAED9A6B4E6AEBBC29986754F875D408E573E591C05813A2A -87483A61371E654F30A5A08B6E847853857D91C0D5B7E8FFA1D2F2A6D9F4B1DEF4B8E3F27BA49C -A5CFD4475D56B0B524C8D365446A346C8380A298A4AE76A2C877B98A5E7BCCD3C23C613A95B375 -E0DA745B5C1E678780B3C3B98B9689B3C1A7C4D9B0BED7A1BCDAA4B7D9A6B5DBA2BADFAABADBAA -B4CDA4BFD8B2CDE4BEEAFAE5FFFFFF91908F070808E4E3E4FFFFFDFFFBF7FCFEF9FCFEF8FFFCF4 -EEFBFF7498BFEDD0B1FFFBEEF3FEFEF8FBFBFEFEF9FBFEFEFBFBFBFEFEFEFEFEFEFEFEFEFEFEFE -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF575757191919FFFFFFFFFFFFFBFEF9 -FDFBFBFBFEFBFFFFFFCBCDCC4C5155909A9B97A0A2939C9DA5AEB0BAC3C4CED8DADDE4E4E2EAEA -E7ECECE8EDEDEBF1F1E3EBEBD2D5D6C3C7C8B9BDBFA9ACB1A2A5AB999CA493989E93969D919398 -646468D2D2D2FFFFFFFCFCFCFFFFFFFFFFFFFCFCFCFEFEFEFCFCFEFFFFFBFFFFFDFCFCFAFEFEFC -FEFEFCFCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFE -FEFEFEFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFEFEFE -FEFEFEFDFDFDFEFEFEFFFFFFFCFCFCFCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFEFEFEFAFEFEFC -FEFEFCFBFBF9FDFCFBFCFCFAFDFDFFFDFDFFFBFFFAEFFBEAE3F3DBCCDDC2B6D9A8B6D8A7BCDBAB -BDD7A8B9D0A0C1D4A4C1D7ABC1D9ABBFDCB18CAD915D7E7473929791CCD991D4E675CCE158C1D8 -56C8DD55CADD3EB7C731A1AD19767C417E788CB4A0C9E3C9B69A7D6C4627996040B47052702D13 -7939267D4B307E48298B552F734620715230B9A486BED4AFC5DAAFBDD4A2B4CE9EB7D0A8B7D1B1 -CAD9B099B48899B9B7475F497B8B2DDCDD6B566F3F7C6853A97361C13820DC46328C3D27C8CABA -536134799532D7EC6B5E6D1C617463BEDFDD869690B0B9A8C2DCB5BAD8A4BDD599C7D39EC3D4A3 -C2D6AABCD7AEB9DCAFB3DFAEA79674805435AD6B50925B3C5D260B81402F8340298652336E4627 -5540307E8B88A2D3D793CFED9FDAF999D2F3A5D4ECB9E0ECCAEAF0739C89A3C9CC4F5F56A8AD10 -C1CE553C652D71817B969298A67DA4C180BB7F5B75CDD0BB39582B8EAA62D5CE5B585F14699284 -B6CFC5869784B2C5A8C3D4ACBDD59FBCDAA2B7DBA4BADBA9BAD9AAB7D3AAB7CDACCDDFC3E5F5DC -F3FFEEFFFFFF908E8D070808E4E3E4FFFFFDFFFCF7FCFFF9FDFEF8FFFCF4EEFBFF7499BFE2C5A9 -FFFEF5F5FEFFFAFDFDFFFFFBFEFFFEFAFAFAFDFDFDFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFCFCFC -FFFFFFFFFFFFFFFFFFFDFDFDFFFFFF575757191919FFFFFFFFFFFFFBFDF9FDFBFAFBFEFBFFFFFF -CDCECE4D5255899494959FA0B0BABBDAE6E6F0FAFBF2FDFFFBFFFFF6FFFFF7FFFFF9FFFFF5FCFC -ECF6F4E5E8E9D9DDDDC8CCCEB5B6BDAAADB2A0A1AA90969C8F9398909397646468D2D2D2FFFFFF -FCFCFCFFFFFFFFFFFFFCFCFCFDFDFCFCFCFEFFFFFDFFFEFDFCFBFAFEFEFCFEFEFAFCFCFAFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFBFBFBFBFBFBFEFEFEFEFEFE -FCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFCFCFCFFFFFF -FEFEFEFAFAFAFCFCFCFCFCFCFAFAFAFEFEFEFEFEFEFEFEFEFCFEFAFEFEFCFEFEFCFDFCFAFDFCFA -FDFCFBFDFFFFFCFFFFF5FFF3DCEDD5C4DCBCB9D1ACB1DE9FB6DCA2BBDEA6BED9A6C2D9A9C1D3A6 -C6D8B3C0D7AF93B08B5276647BA3A5ABD1E69DD8ED7BC3D967C2DA55C9DE41BBCE39B7C93FACB1 -157679277573A0CBB9D8E8C8C9CBA58F5940854930B76D5296452E7024135F170E85553C85502D -884E258A54276E441B7B5834C0D0ADD4E6B9BCD19EC2DAA7C1D6ADBACDAFCCDEB495B5899DBFBF -4E70537F972DD1D958506D3C7F6A57A97064CB442DDE4E3B823B28C6C7B353632C7D9A2CCCE55A -56671064736ABADDD983928EACB6A8C4DCB8BAD9A3BBD696C4D19AC4D4A3C5D7ABB9D1ABC7E5BD -B0D5AB825E40914E35B35F498B522F582A09864E38964E2F91563381502F4F2F22959BA0AEDBE8 -8DD7F79FDFFF99D5F3A9D7EBC2E3E9B8D0CC4A745999BBBC566157ADAF08C4D1513E6734687068 -929496A78FB0B382B779576DCFCCB43F592991A95CD4CE544A5302649381B4D7CC7D947EA9BD9F -C3D5ABBBD39BBAD8A1B6DCA5C0DAAFBFD7AFBBD1AEC1D1B7E3EFDAF6FFEEF4FFF2FFFFFF929191 -070707E4E2E4FFFFFBFFFCF7FCFFF9FDFEF8FFFCF4EEFBFF7499BFE5C1ADFFF6EEFDFCFEF4FFFF -F7FFFDFCFCF6FEFEFDFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDFFFFFF676767151515F9F9F9FFFFFFFDFFFAFEFDFCFDFFFDFFFFFFC7CACA454A4C979FA6 -ADB5B9D2DADDEBF2F4E6EFEDD0D9D7C6CFCEC6CDCDBBBFBFAFB2B4B8B9BBB5B6B7ACB1B4AEB2B5 -B2B6B9B0B5B6ADB1B4A6ABAE9E9CA59A98A08F8E94646468D2D2D2FFFFFFFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFEFFFFF9FFFFF9FCFCFBFEFEFBFEFEFEFCFCFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF9F9F9F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9 -F8F8F8FDFDFDFEFEFEFEFEFEFDFDFEFFFCFCFFFEFCFBFCF7F9FEF6F9FFF6F7FDF2F2FAF4E5F1E5 -D5E7D2C1DEB6B0D29FB0D99BB1DFA2B8DDA1BAD99FBAD39FBDD5A6D1E8BFA9C4A86B8771618477 -91BFC4A6DAED89C3DE74CFD46AD0DC55CADB53CCE341B5CF2D97B215746269A391BAD2B7D4DDB1 -DDDEAD87804C79411C9F6346995946955A50DAACA3906B6355331A7E4D2C8B481FA15D348A5532 -5A3218AC8D79BEC89EB9DA9FC0D09DC9D6B0BCD8B8CADDB58CA78B93B4A8475F5A7E8F24E7E46D -5F6A5074685C987C69B24632C33639832C3EC8C7CC4F5B30839E3ACFE17352622B5B7276BDD8E0 -849587A7B990BEDF9EBBD898C3D199C6CFADC1D0ADC1D6B3C0D3AEC5CDA88F9269764418AA5F42 -AB5C486A3E25543314683B209555438D412A99482D935B4A59494E8E9AB3BCDEF3A5D0E9BEE4FC -C9DCE49CA9B26C7E8C3C4E53A0BED0526350AEA33EC0C46B3C6C4B647686908F9BAF9BB385678F -5A4A62D6D2D2455F5194AE72DFD281504D156D8F77C0CBDD7A827FABC09BCBEAACB9D99DBDD8A7 -BFD8A3C0D5A7BED1A7C8D8BAE1EDDCF1FBF2F6FFFFF9F7F9FFFFFF909090080808E2E3E2FFFFFF -FFFCF7FCFFF9FDFEF8FFFCF4EEFBFF7499BFE7CAABFFFAE4FAFBF5F5FFFEF9FFFAFEFDF4FEFEFD -FEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF696969 -141414F7F7F7FFFFFFFCFFFAFEFCFCFCFFFCFFFFFFC8CACB4E53569BA2AAAAB1B6B8C0C3BDC5C6 -AFB8B7B3BCBBCED8D6DAE3E1DDE3E3D6D9DAD0D0D3CBCBCDB9BDC0B1B5B8ABAFB2A1A5A8A0A4A7 -9CA1A39A97A297969C8F8E95646468D2D2D2FFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE -FFFFF9FFFFF9FCFCFBFEFEFBFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCFAFAFAFCFCFC6D6D6D6D6D6D6969696A6A6A6A6A6A6A6A6A6A6A6A6A6A6A -6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A -6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6969696D6D6D6B6B6BB9B9B9FFFFFFF8F8F8FDFDFDFEFEFE -FDFDFDFAFAFBFEFEFBFEFEFAFBFDF7FAFEF6FCFFF4F7FEF1E6F2E1D1E0CABFD3B5BAD6AAB7DBA3 -B5DCA1B7DB9DB7D799BCD69DC7DAAEC9DDBBB1C6A85A7D6F648A809CCAC9A1DBE688CCE17FC5DF -60C8DC55C1D356C4D54AAEBE287F8B1A677270B397AFDBBFC3DEB8D0DCACA5A0716D52278A522D -9862467D4939B28A84FFF0ECD6C8C3432D1B734B308E4F2D9D552F9D5A3A8E523776503BA09E75 -C7E3A8C1D9A4BDD6ACB0D4AFC1DDAD92AA8AA6B7AE4A4F547E8627E0E17949604E655F5A927C6B -A745299B1D115D1A18C2C2C64856377E964DCADE89546435607878B2CED07D8F7FA3B78FBDDF9F -BADA9AC6D79EC2D3B0C0D4B2B9CEABCFDAB7AFAB85665A338F5A31A66046995444A57D6C917462 -4E2C1F804730924D309F4F2D92513A6C4B48726A76BDD2DCBFDFEFBBDDE991A29F63706D90A1A6 -879E9DA4C3D0405340ABA147C0C476365944677780A39CA9A486A5674070472F50D4CDD53A5146 -8BA56EC7BC7253521D749381B7BDD6758075A7BB91C3E09EBAD99BBCD8A4BFD6A3BFD0A7C1D2AC -D0DEC1EFFBECF5FEF6F7FDFEFBFAFAFFFFFF919191070707E2E3E3FFFFFFFFFCF7FCFFF9FDFEF8 -FFFCF4EEFBFF7499BFE4CFA5FFFCDCFDFFF0F7FFF9FAFFF7FEFEF3FCFEFDFEFEFEFEFEFEFEFEFE -FEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF6C6C6C121212F6F6F6FFFFFF -FEFFFAFEFDFCFDFFFEFFFFFFC6C9C942484A929CA19AA2A69AA5A7A4ADAEB6C0BFB9C2C2BBC5C3 -B9C1C0BCC2C2B9BDBEBBBCBEB4B4B6ABAFB2A5A9ACA5A9ACA3A7AA9FA3A6999EA094939B94939A -919096646368D2D2D2FFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFF9FFFFFAFCFCF9 -FEFEFBFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -FFFFFFE9E9E90C0C0CBBBBBBA9A9A9A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7 -A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7 -A7A7A7A7A7A7A9A9A9AFAFAF6D6D6D676767FFFFFFF9F9F9FDFDFDFEFEFEFCFCFCF7F7F9FEFEFB -FDFFF9FAFEF6F9FEF0F5FDEBE0EBD8CCDABEC0D0AEC0D7ADB6D3A0BBDCA5BFE4AABCD59AC1D89F -C3D6A5D2E0C294A8955166597EACAFA8DFE58ECEDA82CFE175C9E06AC2DB4DC5E15AC7DE43A4B2 -256F6D42776E9AC3B5BCDDB1C6DEB2BCD3A3C4D09D78683C6F3B1A9A62427B4D37815E56F2E4E5 -FFFFFFF1FCFE938B80604332874F34924224A14E31A9553B8251386E5B33B8C48DC9E7B2B5DAAB -B2DEB3B9DDA890A682C1C0B84D3E4D494D00767F292D46406E676A91726AAC4626C74C36753C28 -CFCFD13F4E3D3A54296E82482C401C668278A2BFB77D8F7AABC097BEE1A4B9DB9CC2D79FBBD2AF -BCD4B1CBDEBBC9CAA67F6C47694821A7694B925641845045FFF9F4D9CECC6B585B673C1F985B39 -9648239C5131945B4C693F3E999496C6D3D57C9290546050B6C0ADD6E4D9809E94A1C1C4465A44 -4B49005F6122263C2F6A75799C8D9BA0749CB883C37B5D88D8D0E2253B3236531F5D5516373C11 -75958AA8A8C57E8777A9BD8FBEDB95BAD79ABDD7A3BFD6A4C0CEACD4E3C2EBF6DFF8FFF2FAFFFB -FCFDFFFAFAFAFFFFFF919191070707E2E2E2FFFFFFFFFCF7FCFFF9FDFEF8FFFCF4EEFBFF7498BF -D8CFABFFFFE3FDFFEEF8FFF5FCFEF8FEFCF5FEFEFDFDFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF7C7C7C0E0E0EEEEEEEFFFFFFFBFEF9FDFBFAFBFEFB -FFFFFFCACBCB4C5253919AA08B95999FA8ABB6C0C1C7D1CFD9E4E3E4EDECF3FAF9F4F9F9F9FCFD -F4F5F7E6E7E9DDE1E4D4D8DBC3C7CAB0B4B7A6AAAD9A9FA197969F94939C939298666569D3D3D4 -FFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFCFFF8FEFFF8FEFEFBFEFEFBFEFEFEFCFCFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFE6E6E62F2F2F -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFB3B3B3666666FFFFFFF7F7F7FDFDFDFEFEFEFBFBFBFDFDFDFCFEFBFBFEF8F9FFF4F0F9E6 -DAE6CCCDDAC0C2D7AABAD19FB8D19ABEDCA1B9D6A0B5D4A3C3D9A9CDE0B7C3D4B6768C7D5E7A79 -8CABB49CDDEE8FD5EA80D4EB66C5DE5CBCD164C5D657C4DC419DAB28706F67917CADC6A2C0CEA6 -CEDFA2CCD7A0CED9A595996A61441F9651388F5C44765544B5A6A4F7FFFFE1F2F9E8FEFFDEE1DE -78675E6A3B2CA2543EAA5037AF50369B5D3D835531746C3BC2E2ACB6E2B0AED7ABB3D9A0A4B88E -CFD1BE7F777D2A3C002E49065A6860C1A7AEC18984D34E31D9432C7F2F19E1E8E37D9183002004 -3A5625526D45A5C6B097B39E798B71B7CAA2BDE5AAB9DFA2B9D49AB7D4AAC2DAB1D6E4C1968768 -68402496593E894B35794F3ECCB7ADFFF1F6F9EFF8ACAAB858402875482C95512CA44F2D9A4D33 -95503C6B4A3A6A5F547B826FB7C39DCDD8B0C4D5B681A88FC2E3D4668261273F00425718586E56 -ACB9B49E8A98B77EAEBE7FC47C5B8CEEEEFE59756021470F525C1A5E6D43A2C7B79A9AAD8C9581 -BCCE9ECEE6A2C1DFA4BAD0A5B9CCA5CAD4B9E1EAD1F3FAE8FDFFF8FDFDFBFCFCFEFDFDFCFFFFFF -909090070707E4E4E4FFFFFFFFFCF7FCFFF9FCFDF6FFFFF7EFFCFF739ABDD3CDB8FFFFF2F8FBF1 -FCFFFAFCFCFAFFFCF8FFFEFEFDFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDFFFFFF7B7B7B0E0E0EEDEDEDFFFFFFFBFEF9FDFBFBFBFEFBFFFFFFCACCCC4E5354 -8F969E99A0A4BDC5C8E2E9EAE8F1EFDDE6E5D9E3E2CFD7D6C3CAC9BFC2C4C5C6C8C1C2C2BDC1C4 -B9BDC0B4B8BBADB1B4A7ABAEA0A5A796949D94939B908F96666569D3D3D3FFFFFFFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFEFCFFF8FEFFFAFEFDFBFEFEFBFEFEFEFCFCFCFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFE6E6E62C2C2CFFFFFFFAFAFAFDFDFD -FDFDFDFDFDFDFEFEFEFCFCFCFEFEFEFCFCFCFDFDFDFDFDFDFEFEFEFBFBFBFFFFFFFDFDFDFDFDFD -FDFDFDFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFBFBFBFFFFFFABABAB686868 -FFFFFFFDFDFDFFFFFFFDFDFDFBFBFBFAFBFBFBFFFBFAFFF9F1F9EAD7E3CBC4D1B4BACAA7C1D9A9 -C9E2AABDD99CB4D196BBD8A6C3DFB6C2D9BBA3BA9F718B795F827D94BFC8ABDBEE8CD4EA76C7E0 -70CBE767C9E164C2D25FBAC433888A226661699783BCD7B2CBE0B0BBCE99C5E0A0D0DBA6CDCFA4 -6058326D4A2E9A5842683E2A9C8278F1EDF1E8F5FEEBF8FFECF5FBF2FAF6C8BBB57A5449823C29 -A24F3AA74D38AA623EA665425D3E16A4C38CBAE2B0BFDBAFBDDAA39CB383859977576B636A9038 -5B84383D5539846E659D5D51CB351AE23B2AA543348B998C627D64568152698F4D3C5D25688C6C -688469809374C7DCB3B6DEA4B4DDA1B4D19AB9D4A0C8DFB0B7BF995E472E7C4733A8604D6C3025 -998173FAFBEFF1ECF2FFFAFFF2F8FF8A80755333218E5437A151319E5031AA5E437E4A356C5540 -AEB294DCE8B9C4D2A1CAE0B77EA78476987A4C7142608D3B5D883B3456225D6E66897380C184B3 -B975BC7B5D87A4ACB04D744D51843F667E35405F2C4C7C6045484D9EA392D1E3B5BBD393C1D9A8 -BBCFAFC1D0B4E7ECD5F8FCE9FCFEF0FDFDF7FDFCFDFFFBFFFCFCFBFFFFFF909090070707E4E4E4 -FFFFFFFFFCF7FCFFF9FCFEF6FFFDF6EEFCFF739ABDCAC6C0FFFFFFFCFBFBFDFDFFFEFCFDFEFAFA -FEFEFEFDFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF -8686860B0B0BE8E8E8FFFFFFFBFEF9FDFBFBFBFEFBFFFFFFCACBCB4B50529BA3AAABB3B7BDC5C8 -BEC7C8AEB8B7B2BBBAC1CCCBCFD7D6D2D8D8CDD1D1CECDD0C2C2C4B2B8BBABAFB3A5A9ACA2A6A9 -9EA3A59BA0A29E9BA598979E929198666569D3D3D3FFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFEFCFFF8FEFFF8FEFDFAFEFEFBFEFEFEFCFCFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDFFFFFFE6E6E62D2D2DFFFFFFFCFCFCFFFFFFFEFEFEFFFFFFFCFCFC -FFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFF5F5F5FBFBFBF7F7F7FFFFFFFFFFFFFBFBFB -FAFAFAFCFCFCFBFBFBFCFCFCFCFCFCFFFFFFFDFDFDFFFFFFABABAB666666FFFFFFFDFDFDFBFBFB -FCFCFCFAF9FAFBFAFCFBFEFBECF2EADBE6D6C6D2BAC1D0AFBECCA9BBD7A2B9D69BC3E1A1C7E3A7 -AFCA9EC6DCBCA8C1B0637D6E607D73B1DBE0ABDEED8AC6DE83D1E779D0EA5DBFDA65C4DB59B3C0 -398B90225F5481B19FC1DDC0BCD1A3BFD79FBDDB9EAEDA95CBDAAACBC6A34A351B7C573E854832 -76503EDAC4BEFEFEFFDBE8F7EBF0F9EFECF1E8EFECFAEFE8BA958A6B2B1B9A4E3D9B4B38AC5C35 -AA603D734B24A6BF8BBDE3B0CCDEB4CCDEAD8BA773395F32335E47669E3D6FA35246713F584D35 -80452CE2492BE43A28A13D3346514441613E699A596F9A47567A38456A452B4929859975CAE0B6 -B7DFA8B5DFA3B1D197C4DA9FC9DBA8878C654E331D995E5293433A89524AD6CABCEBFAEDF0EEF5 -F8F1FBF8FFFFCECFCE6F594F7A4631A05637A55837AB604291533C795C44969976CCDCA7B8C993 -CAE5B66B966C284C23416A3070AE526CA64A6796493F514A695660C17FAFCB87C970567946544E -51804C72AF5D7598445A82463369441E2520A8AC9ED9E8BDBFD79AB9CFA4BDCFB5D0DFC8F9FCE9 -FFFFF2FEFEF3FEFBF9FFFBFCFFFAFFFBFBFBFFFFFF909090070707E4E4E4FFFFFFFFFCF7FCFFF9 -FCFEF6FFFEF6EEFCFF739ABDB5C3E0F6FFFFF5FDF2FBFCFAFAFDFFF8FFFFFEFDFCFEFEFEFEFEFE -FEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF8787870A0A0AE7E7E7 -FFFFFFFBFEF9FDFBFBFBFEFBFFFFFFC7C9C9464B4D92979E94999F9FA3A8A7ACAEB4B9B9BCC2C2 -C5C9C9C6C9CAC2C4C6BABEBFB8BDBEB6BABBADB1B1ADB1B1A7ACAEA7A9B0A5A8AD9EA2AA95949C -939299949399616065D2D2D3FFFFFFFBFBFAFEFEFBFFFFFBFEFEFBFEFEFBFFFFFCFCFCFBFEFCFC -FEFEFCFEFEFCFEFEFAFCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDFFFFFFE6E6E6282828FFFFFFFEFEFEFFFFFFFFFFFFFFFFFFE9E9E92A2A2A000000FFFFFF -FCFCFC0E0E0E080808E9E9E9FBFBFBEBEBEBFFFFFF2B2B2BDFDFDFE5E5E5EFEFEFF2F2F2FDFDFD -FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFA7A7A76A6A6AFFFFFFFEFDFEFDFFFEFCFEF9F9FEF9F8FFFA -E7F3E3D2DEC6C2D1AFC0D2A8C2D4A9C4D9AEBBDAA5C2DDA3B5CD92B8CD9CCDE5C08BA48A4D6A61 -7FA4A3AADDE49CDEEC8CD6E08FDBE46CB8C86EB1C481C9DA58ACAB317B72275C51C4D9BBD7E7C4 -C3D1A5CAE1ABB6E0A6A6E0A3BADA9FD1DDAABDAE8A4E2918724941673E3EB3ABA3FFFDF8F4F2F4 -F7F7FAEFF0F2F2F1F2FFF7EEFAF9F7E5E9EA715D547C4A2FA0562CA55E2D995731714A29D3D8B3 -B9D1A1BDD1A2C7DEA68DA77631542761985F5EA35C54A84F7DB579705E3F622A14DB5F50DB4F48 -80422A43453C889E777199557EA45A85AE6D4F834A1229008AA177CEE4B7B9D3A0BADBA0B6DE9C -CEDEB2BFC49A7D704A634125885A47653124CBBCB0FFFCF3ECEBE9E7EEF2E8EFF2EBF0F0F7FCF7 -B9B4AF624C487E4A39965031AE572CB8653D744522747447C4EBA8BADE9CCDE3AF809360395D29 -6BA6605FA5435896337BAF564C5D59554762B689C3C39CCF5C5E67385F4579B0686799586B985E -7FA66F4E713C183C07A4B38CC6D5ADCDDCB3C6D4B1D0DCC6E9F7E6FDFDF1FDFFF3FCFDF5FBFEF8 -FCFEF8FCFDFAFDFDFDFFFFFF909090070707E4E4E4FFFFFFFFFCF7FCFFF9FCFEF6FFFEF6EEFCFF -739ABDB6C4DBF7FFFFF6FEF0FBFDF7FBFEFEF9FFFCFEFDFDFEFEFEFEFEFEFEFEFEFEFEFEFCFCFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF909090070707E4E4E4FFFFFFFCFEF9FDFBFB -FBFEFBFFFFFFC8CACA4D52549398A093989D989CA1AAB0B2BEC4C4D6DDDDE9ECEEF7FAFBFBFFFF -FCFEFEFBFDFEF1F5F6E1E5E6D7DBDCC2C7C9A6A9AE9C9FA493989F929199919097919096636267 -D3D3D4FFFFFFFBFBFAFEFEFCFFFFFDFDFDFBFDFDFBFDFDFBFDFDFBFEFEFCFEFEFCFEFEFCFEFEFC -FCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFE6E6E6 -292929FFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFD0D0D0232323A2A2A2FFFFFF454545686868 -CACACABABABA6E6E6EAEAEAE525252A9A9A92A2A2ABBBBBB525252FFFFFFF8F8F8FFFFFFFFFFFF -FFFFFFFFFFFFA9A9A9686868FFFFFFFDFBFEFEFDFAF9FCF4F2F6EAE5EADDC9D6BDBFCFB0C0D0A9 -C0D3A7C2D7AABED3A7BED7A5C3DAA6C8DEA9B5CB9F809A7A5D7A6388ACA8B7E7EA9EDDE883D3E4 -6FC5D574C8D65DBDC456A4AF4E90992A655F638A7CB7C6B5C9DBBEBED6B1B5D3A3BCE0A8B4DEA4 -ADDBA2C1DCA3CFDBABA89A7959382958372D92746DF3EDE2FFFFF8EBEAE7E8EBECF3F5F5F2F4F2 -F9F2EBF4F5F1FAFFFEBBB2A6715036844F2AA35F2F985A326F4923DFE7BEBDD7A8B5CE9FC3D9A9 -8AA478294920558150578E4D569549608C4F56562E4430138C4739A34B475B362830402C517747 -5F954A5688375A8C43306B28304A269DB792BED9AFB9D9A9B4DEA9ADDEA3C8DDB0B1B2897B623F -774B31663D27916D5AF8ECEBFAF4F3F3F1F4F1F3F8EEF1F3EEEEECF0F8F9F2F0F1917C7C76463A -9A553AA14B25B568468B6044999C77C3E8AFB8DCA2D2ECBE6C7F633458384A8052508F47518945 -59874B4151434D47578367978C77A546515B325A44618C49537D3E5B8348587D482D4E1D3C5F2F -B5CC9FC4D9AEC3D3ABD2DDC1E7EFE0F8FDF6FEFFF5FCFDF3F9FAF2FDFEF8FDFEF9FCFDF9FCFCFD -FFFFFF909090070707E4E4E4FFFFFFFFFCF7FCFFF9FCFEF6FFFDF6EEFCFF739ABDB8C4D7F8FFFD -FAFFEFFBFCF3FDFEF9FBFFF8FEFDFDFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDFFFFFF999999050505E0E0E0FFFFFFFBFEF9FDFBFBFBFEFBFFFFFFC6C8C9 -4E5355969BA19DA2A7BBC0C4E5EAEDFCFFFFFBFFFFF3F7F8EEF2F3EBEFF0EAEDEEEBEFEFDEE2E3 -D4D8D9CFD3D4C7CCCEBEC0C6B2B5BBA4A8AF99979F96959C929197656469D4D4D5FFFFFFFBFBFA -FEFEFCFFFFFDFBFBF9FCFCFAFBFBF9FEFEFCFEFEFCFEFEFCFEFEFCFEFEFCFCFCFAFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFE6E6E6292929FFFFFFFDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFBBBBBBCDCDCD090909FFFFFF4D4D4D5F5F5FEBEBEBC8C8C83A3A3A -898989292929A8A8A81B1B1BE4E4E4020202F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFACACAB -5E5F5FFFFFFFFFFBFEFFFFFBF6F8E9E5E9D2D5DABFBCCCA7C2D3ABC2D3A7C2D7A7BDD4A7BCD2A8 -C5DAAECFE4B8BED4A96F866757775F93B6A6BEEEF0A1E0E880D2E573D4EC68C5DB77D0E456AAAD -124E53002B2A7FA08DBFCFB2D5CEAFC0CFAFB7D2ABB7E2B1A5D69FB1DBA4BCDCA8C3DBA5CDD3AB -90836A583C316D554EDDCBC3FFFFF3FFFFFDFCFDF8FAFFFBFFFFFFFDFFFAFFFFFCFBFFFCFCFFFF -F2F6E9A598816D54379C5E34985F3A624017E0ECBCC2DEACBEDBACC6DAB092AB8247643D3E6135 -3E642E355D1F3F5C213C521E20391233342B4837390F0A06474F3536592831691E24580838681E -1C500D596F4AB2C89FC6DCAFBDDBAABADEA9B1DEA6C4DFB6A7A37F6A4128804C356E5037C2B99B -FAF6FFF0EDF5EBECF2EFEFF2F4F2F4FAF4F4E5ECF5F8F8FFD9CDD47247448D4C36A1502D9F5230 -92654AA6A281BDDDA5B2D099D4E8BC829075435C413A643C3362233760254362353E4E382B363D -31395F334269102C3428533F3A59194361293657223A5A282F501F618457B2CE9CBDD4A8BDCDAA -E8EFDDF7F6F1FDFAFDFDFFF6F9FBF3FCFDF7FBFCF8FBFCF7FBFEF7FCFCFDFFFFFF909090070707 -E4E4E4FFFFFFFFFCF7FCFFF9FCFDF6FFFFF7EFFCFF739ABDB0BACFFAFFFDFBFEEDFEFEF5FDFDFA -FEFFFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFDFDFD -FFFFFF9F9F9F010101D7D7D7FFFFFFFBFEF9FDFBFBFBFEFCFFFFFFC7C9CA4A4F519CA1A8B3B8BD -D5DADFDEE3E5DBE1E1C6CDCCC8CCCDC3C7C8BDC1C2B4B9BAB4B8B9B1B5B6AEB2B3AFB3B3ADB1B4 -A9ACB1AAADB3A6A9B0A19EA69B9AA1908F95646368D0D0D1FFFFFFFAFAF9FCFCFAFEFEFCFBFBF9 -FDFDFBFBFBF9FEFEFCFEFEFCFEFEFCFEFEFCFEFEFCFCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFE6E6E6292929FFFFFFFDFDFDFFFFFFFFFFFFFFFFFF -FCFCFC8A8A8AE7E7E73D3D3DB1B1B1444444555555B9B9B9323232717171757575232323959595 -141414D3D3D3000000E6E6E6FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF464645FFFFFFFDFFFB -EEF3E5D9E0C7CBD6B3CAD6ACC1D5A6C4D8A8BFD5A4B8D0A3BDD3AEC0D9B8BDCFB196AA905F7560 -688C7FB8E6E0B4EAE88CCED885D8E86BCEE768CCE471C4D964AAB6434B4F1F1B1D372D24BAC4A4 -D1E4B9C5D6A5BECEA8BBD9AFB2DCAEB6E3B0B9DFACBAD6A4C0DDA7CCD5B16D615147332F72635C -B6AFA6BFB9ACB0AEA5B4B8B4B4BABAA8AFACAEB1ACB7B7B6ADB3AF9FAEA4ABB7A89A9B8E51473D -7B503E875D434A2D08D9E4B0BED8A7C0D9AEC6D9B1BBD3ACAAC79B9AB989A5C08EA5BB85BACD9C -96C28B487B5742787C4E78801A2020755D49B8C59BA3C78CA7CC8AA5C38EA4C599B5C99CC1D4A2 -C9DBA3C0D398C3DAA2C7E2AE89AF966E705D4C291E72423ABBA698FCFFEDFFFFFFFBFAFFF7F4FA -FAF5F8FCF8F7FFFFFFF5F6FCFAFAFFFFFFFFC3A6A87D4C3CA25E40A55A347C4A2CC1B392BED099 -C3D79FC4D3A6C5D199B9CB99B6D098B5D58BB2CE87C0D59E9EC5A9558B883077903A86A1286668 -A2D4C0BED29AB4CC96BAD3A0B6CEA0AFC99EBDD5ABBED7A7C5D9B4D1DEC5FAFEF6FFFDFEFFFCFF -FDFCFAFDFEFBFBFCF8FEFFFAFEFFFAFEFFF8FCFBFCFFFFFF909090070707E4E4E4FFFFFFFFFCF7 -FCFFF9FDFEF8FFFCF4EEFBFF7498BFB4BCD4FAFFFFFAFCEFFEFCF8FDFBFDFDFDFCFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F3F3ADADADA2A2A2 -A5A5A5A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 -A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4 -A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 -A3A3A3A3A3A3A3A3A3A3A3A3A1A1A1B6B6B6FFFFFFFDFDFDFDFDFDFFFFFFFFFFFFAFAFAF000000 -D2D2D2FFFFFFFBFEF9FDFBFBFBFEFCFFFFFFC8CACB474B4E9CA1A8ADB2B7BBC0C4B1B6B8ABB1B1 -B1B7B7C6CACBD9DDDED8DCDDD1D5D6C8CCCDC1C5C6B6BABBAFB3B4A4A8A9A0A2A8A1A4AA9A9EA5 -9B99A1919096919095636266D1D1D1FFFFFFFAFAF8FBFBF9FCFCFAFCFCFAFDFDFBFBFBF9FEFEFC -FEFEFCFEFEFCFEFEFCFEFEFCFCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDFFFFFFE6E6E6292929FFFFFFFDFDFDFFFFFFFFFFFFFFFFFFEBEBEB878787D2D2D2 -F6F6F6DBDBDB999999A3A3A3CBCBCBAFAFAFD3D3D3A6A6A69B9B9BA3A3A3929292D5D5D5838383 -DFDFDFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFAEAEAE474748FFFFFFEBF3E5D5DFCAC0D0AFBFD2AA -C3D6A9C1D6A5C2D8A6C3DBABBCD3ADC1D9BCBCD3BD90A5935F766985A19DB4E1E49ED7E097DBE4 -7ECFD976D4E65CC6DF70C6DE69A1AE47676E623E3A63343062372A746C4CAFC298C4DEB4BCD5A7 -BCD5ACB9D2ABBBD7ADBEDCACB5D39EB8DBA6C0D2AF494435625051857473887F778880787D7A76 -7E83847A8086767E827B7F827E7A7F7C807E7781776E756C84817F7C70766B51566C4B42543C1D -E2EAB6C3D5A5C2D1A9BDCDA7C0D8AABADBA8BADEA7BAD8A1CBE0A8C4D7B4A2D7A1639076427687 -356972332823542E1DB1B390BDDEAFBADFB3B7D7B6B1D3BDB6E0B8B9DCAFBDDCA8BBD4A2BED7AD -9FB895426965525E5A321F22634247B0A0A1C5C7C5BCBEC2C1C0C1C4BDBDC1BBB7C1BFBDBDBEBF -BFB8B3C5C3C5BEBBC5C8B6BA6B463A7C46298B543661432EBFC1A7C4E2B7BEE0B1C4E1BFC4E1A8 -C3E2B2C1E4B2C4ECAAC0E4A8C9E6BA99DABF47A5A01694A6239CB217706DA2DBC4C4D8A1C2D7A4 -C2D5A6C5D6ABC4D2ACC2CEA9BED0ACD8E6CAF2FAEBFCFFFDFFFEFEFFFEFEFDFDFEFDFDFDFDFDFC -FDFEFAFEFFF8FEFFF8FCFBFCFFFFFF909090070707E4E4E4FFFFFFFFFCF7FCFFF9FDFEF8FFFCF4 -EEFBFF7499BFB6BCD9FBFFFFFAFBF2FEF8F8FFF9FFFCFBFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBDBDB8F8F8FDFDFDFD9D9D9D9D9D9D8D8D8 -D8D8D8D8D8D8D8D8D8D9D9D9D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 -D9D9D9D9D9D9D8D8D8D8D8D8D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9 -D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 -D8D8D8E2E2E2616161FFFFFFFBFBFBFBFBFBFEFEFEFFFFFFAEAEAE000000D2D2D2FFFFFFFBFEF9 -FDFBFBFBFEFCFFFFFFC7C8CA4A4F519CA0A8999EA39DA2A6A1A6A8B6BDBCC1C8C8CBCFD0C6CACB -C2C7C8C2C6C7C7CBCCBFC3C4B2B6B7AFB3B4A8ACAFA1A4A9A0A3A9979BA298969E919097929198 -626065D0D0D0FFFFFFF8F8F7FAFAFAFAFAF8FDFCFBFBFBFBFBFBF9FEFEFCFDFDFAFCFCFAFCFCFA -FCFCFAFCFCF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF -E6E6E6282828FFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFDFDFDFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFAAABAB575658F4FFF0CBDBC5C3D2B8BDD1AEBCD5ABBBD5A7C2D7A6BFD5A3 -BED5A6D1E8C6B3C9B37C9183687D7298B1ADBEDDE4A5D8E798DAED7ECEDF6BC4CD6BCEE262CDE6 -519EB332555D393A387242347A3D30793C2A573E247D8464C4D2B8BFE3ADC0D7ACC2CBABC5CFAE -C1D6ABBCDFA7B5E0AB97AD8D3B392FC8B7BCFFFCFEFDFCF5FDFBFAFDFCFEFBFCFFF7FCFDFAFCFD -FCFCFEFCFBFCFBFDFAFBFDF9FCFBFBFFFEFFFFFCFF7A6D8342282B69513AE2E5B2C5D1A1C9CEA8 -C6D1AABFD7A8B8DDA3B4DC9DBDDDA0BFD79DBED3BCA1D9A77697842A55712C5F6A43261D5C3724 -59624059835876A5816D98826A978B64A585649F7964966B789F7A5E816748685A7AA2AB6B7F88 -211E2B7D6D7896889683818C7F7F828885838F89808D857E848581848B8B8B7D718C858482828A -95898E8B6E617246296C4D3D4A413981948B97C8A982B89686B7A28CBA938CBB9F8ABB9D89BD91 -8CBC9893BCAD63B79C1C94900098A810A7B80D766FA1DEC6C7DBA4BFD3A2C6D7ABC7D4ABC7CDAA -C7CAA7D2DEC2E7EEDAF8FCF5FCFFFFFAFFFCFDFFFBFFFEFFFEFEFFFFFEFFFCFDFAFCFFF8FEFFF7 -FBFBFBFFFFFF909090070707E4E4E4FFFFFFFFFCF7FCFFF9FDFEF8FFFCF4EEFBFF7498BFACBAD2 -FCFFFFFEFDF3FFF9FAFFFAFFFDFEFFFFFFFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFD8D8D8A7A7A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D6D6D -FFFFFFFFFFFFFFFFFFFEFEFEFFFFFFBCBCBC000000C8C8C8FFFFFFFBFEF9FDFBFBFCFEFCFFFFFF -C7CACB50545896A09C8A9193A0A5AAC6C8D0D7D7DBEFF0EEF5F9FAFEFFFFFFFFFFFFFFFFFFFFFF -EDF1F2E1E5E6D7DBDCCBCFD1B4B7BCA8ABB29B9FA794919B939299919096616166D1D1D1FFFFFF -FAFBF5FDFEF7FCFDF7FEFFFAFEFFF8FEFFF9FCFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFE5E5E5313131FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -B5B2B2605A59E9F1DABED0AFB9D5A9BCDCA4B9D79FBFD8A3C3DCAABAD4A9BED8B3A4C1A96D8877 -68857AA7CCBCBBE7E19DD8DA91D9E780CFE277C7DF78CDE666BCC758A6A3315D503F4239795F5B -79472964331A8F54427C4032644633899171D7E3B5C8DEADB2D4A0AFDAA3B7E1AAB0D9A5C4DEAB -ADAF86635645F5EFF5FFFFFFFFF3EBF5FFFFFFFFEFFEFFEBF1F6FEF5F8FFFFFAF5FAFEFFFDF5FF -FFFBFFF6FEEDF5FFF2FFFFFF9F9899514F50676E61D5E5BCC4DAA7B9D0A5BFD8A8C1D9A9BFD7A7 -BFD6A8BFD9A9BED5A4B6D3A8B7DCB968907831443762534C613935864B354E312215251E185F62 -0E6D7B0574890C798A0E6D7D034C5A00313B2C5D5E83B5B089B2B72B3E43797478FFF9FFFFFAFF -F5F5FCFEFBFFFFFBF9FFFCF4EFFFFCEDFAFDFFF5F9FBFDF8FBFEFFF5F8FEFCFEFFFBF4EDC9BCAC -4E343339423E2B635D1A79790971740C727A14757D11727B0E72790B73790A757B09737700888A -008E8F00A2AC0DAFC00F777DA8D6C9AFDAA2B4D9A2BCD69BCBD6A9C0CBABC8D4BFE8F1DFFAFEF2 -FFFDF9FFFBFEFFFCFDFCFCFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFEFEFEFFFFFF919191 -070707E4E4E4FFFFFFFFFCF7FCFFF9FCFDF6FFFFF7EFFCFF739ABDA9B9D1FBFFFFFDFEF3FFF9FA -FFFAFFFDFDFFFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFD9D9D9A4A4A4FFFFFFFDFDFDFCFCFCFCFCFCFEFEFEFDFDFDFEFEFEFCFCFCFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFBFBFBFEFEFE -FDFDFDFDFDFDFDFDFDFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFDFDFDFDFDFDFDFDFD -FDFDFDFEFEFEFFFFFFFCFCFCFCFCFCFCFCFCFCFCFCFEFEFEFFFFFF6C6C6CFFFFFFFFFFFFFFFFFF -FDFDFDFFFFFFBFBFBF000000C5C5C5FFFFFFFCFEF9FDFBFBFBFEFCFFFFFFCBCCCD4E545595A09D -9BA2A3C6CBD1F2F5FCFFFFFFEDEDEDDEE3E4D8DCDDD1D5D6D0D4D5D1D5D6D0D4D5C5C9CAC2C6C6 -BFC4C7B9BCC1B0B3B9A7ABB19E9BA396959B908F95626066D1D1D1FFFFFFFAFBF5FDFEF8FBFCF7 -FEFFFAFEFFFAFEFFF8FCFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F5FFFFFFE7E7E7191919E9E9E9D1D1D1D1D1D1D1D1D1 -D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0B0B0B0D3D3D3DDDDDDD3D3D3CFCFCFD1D2D2 -D2D1D1D2D1D2D2D1D1D1D1D1D0D1D1CFD1D1D2D2D3D2D2D2D5D6D5D9D9D891928E585752DBE9C8 -C1D4AEC0DBABB9D8A1B9D49FBDD6A1C3DAA9C9E1B69DB69667847384A19BB9D4D4B6E8E7A6DDE2 -92D4E18BDAEC71C4D972C8DD65C4D036848841756D777E6F695543A27A687843215A280881462C -90503D6D452E655D3DB5BE96CADDB1B3D7A3B7E5ACB3E3A7A7D69AC3D7B0B6BB9488846BFEFFFF -F6F9FDFAF5F4F4F9FCFAFCF1FFFFF4FEFFFFFFFFFFFFFDF4FBFEFFFCFBFFFBF7FBF5FAEBF4F8EB -FFFFFFB5B3BD9D9DA6787F76CEE1B5C1DAA5BAD4A8B9D5A0C2D9A5C9D6A8C3D4A7BBD4A6BCE1AF -BED8B0C1D0B26D6F5C63493E8452457837277C422E71564634463C2F7C8038A8B62BAEC42FADC8 -2190A917768B448F9D85C7D092D3D8496F77374953B7B2B9FFFFFFFCF7FCFDFDFFFFFFFFFFF7FA -FFFCF9F7FFFCF4FFFFFEFAFEFFFFFBFEFFFFFAFEFFFAFCFBFFFFFDEFE9E1282B35416870308691 -1A9CAE17A2BB17A3C01DA3BE1CA3BE1BA2BD1AA4BE19A4BE16A5BD11A6B208ABB801B3C510B2C6 -0B757BA6D7CBB3DDA5B6DBA4BFD9A3BDCEA1C9D7B9DAE7D5F2FEEEFBFEF5FEFCFDFFFCFFFFFBFF -FDFEFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFF -FFFCF7FCFFF9FCFEF6FFFDF6EEFCFF739ABDA6B7CFF7FFFFFEFDF3FFF9FAFFFBFFFCFFFFFBFBFB -FBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9D9D9A4A4A4 -FFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFBFBFBF8F8F8FFFFFFFFFFFFFFFFFFFCFCFC -FEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFDFDFDFEFEFEFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FBFBFBFCFCFCFCFCFCFCFCFCFCFCFCFFFFFF6C6C6CFFFFFFFFFFFFFFFFFFFBFBFBFFFFFFC4C4C4 -000000C4C4C4FFFFFFFBFEF9FDFBFBFBFEFCFFFFFFC7CACA4C50539FA9A5ACB3B6CBD0D6D3D5DC -CECFD3C8C8C8D0D4D6D4D8D9CCD0D1BFC3C4BEC2C3B4B8B9AFB3B4AFB3B4A7ABADA2A4AAA0A3A9 -9DA0A7A19FA797969D908F95616066D1D1D1FFFFFFFAFBF5FDFEF9FCFDF8FEFFFAFEFFFAFEFFF8 -FBFBFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFF5F5F5FCFCFCF0F0F01A1A1A4C4C4C444444414141414141414141414141424242 -4040404343434343434444443B3B3B3A3A3A0000004F4F4F606060494A49494344444243434241 -3E3E3D3E403E3D413C4043423A3D3C40443F383D342B3125656B5DD2E5B9C0D6A8B7D19DBEDAA4 -CAE1AFC4DBACCADFB394AB885F79608DABA5C0E0E5C5E4F399DAE98BD2E383D1E56FC5DB76CFDF -58B1C11578774B8782A0AC9F835D46855031B074526B39116333107D4523894329834E33603F1F -797A58BDC9A2C2E4B2B2E4A8ABDE9EB1E4A1C4D9BABBC4A08A9174F9FFFFF8FFFFFFFFFFFDFBFF -FBFFFAFFFFFBF4E9EBF2E5E2EFE7D5EFEDEFFDFFFFF6FAF9FFFFF2FFFFF1FFFFFFB0B5C5ADB3C2 -717F79C9E0B4C0DBA5BAD8A8BADB9DC5D7A3CDD1A5C6CDA4B7D4A8ACDBAAD0ECC4ACAD9173513E -9E5D4B93472E81300F8745297C563D5053431D5E5928969C1EACB5007C97007791319EB57DD5E6 -96E0EE82CBD15B7D888698A5CAC7D5FFFFFFFDF8FAF8FBFAF1F7F7FAF2F8FFF7FAFFFFFAFBFFFD -FBFCFFF7F7F5F5F8F5F8FDF8F2FAF5FBFFFEF4F6F84F66775A98A92B9AAC10ADC704ABD102ABD7 -04A7CA06A9CE08ACD003A7CA06ABD009AFD20AAEC603ACC306B9D20DA9BF0F747CA5D4C8B4DAA2 -B5D8A3B9D6A6C0D3ACD4E2CBE9F6E6F4FEF5F5F8F4FEF8FFFFFCFFFFFCFFFDFCFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFCF7FCFFF9FCFEF6 -FFFEF6EEFCFF739ABDA5B7CEF6FFFFFBFFF4FFFAF9FDFBFFFBFEFFFEFDFDFEFEFEFDFDFDFFFFFF -FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7D7D7A2A2A2FFFFFFFDFDFDDDDDDD -D1D1D1D1D1D1D7D7D7CBCBCBE7E7E7FEFEFEF7F7F7FEFEFEFFFFFFFBFBFBFEFEFEFCFCFCFBFBFB -FBFBFBFAFAFAFCFCFCFDFDFDFFFFFFFFFFFFF9F9F9FAFAFAF9F9F9FEFEFEFBFBFBFDFDFDFBFBFB -FCFCFCFDFDFDF9F9F9FCFCFCFBFBFBFCFCFCFBFBFBFDFDFDFDFDFDFCFCFCFFFFFFFFFFFFFCFCFC -FAFAFAFFFFFFFFFFFF6C6C6CFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFD3D3D3000000B5B5B5FFFFFF -FBFEF9FDFBFBFBFEFCFFFFFFC6C7C9484D4E9CA7A4A2A9A9B2B7BEAAACB4AAAAAEB6B6B6C9CDCE -D1D5D6CFD3D4CDD1D2C9CDCEBFC3C4B6BABBB2B6B7ABAFB1A1A4A99B9EA49A9EA598969E8F8E96 -919096626165D1D1D2FFFFFFF7F9F3FAFBF6FAFBF6FEFFFAFEFFFAFCFFF8FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -FAFAFAFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF8B8B8BA6A6A6E1E1E1FCFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFF3FDEADFEED4DBEDCDD7EAC9BDDAA4C0D8A3BDD4A0CFE4B5C7DDB3BBD0AE7E9378 -5D74619EBCB3CFF5FAB8E7F89FCDE485CDEC82CFEA7BCAE26FC1CD4E9E9F35847F4F9484B6CFBE -B69781762F0FAF6441AC6843572F105A37138052308C4A2E96523578421D6E4F37918966C0D3A7 -ADD79EB4DFA5BCE3A8C2D7B6B1C0A07B8B74E0FCF2DAE9DBF0EED1EAE6E2E5EEEBCBCBC7987567 -976D5293744EAFA0A2EBF2EFDDEDDFF0EDD2F0E9CEF5F8E3B1BBCBACB7C374827CCBE4B7BFDAA5 -BDD9AABBD9A1C5D6A5CCD1A5C9D1A8BBD3A4B3D9A6BBD1A67C745284583FAE694E7C381674380D -9B4A2588431F805231454C342B62511D7669207B8652AEB87DD6E37BCAD395D2D9A7D7DA75909E -8393A2B9BBC8FFFFFFFDFFF8F6FFEEF0F7F0FBFAFFFEF4F9FFEDE2FEEDE1FCF3F7FFFFFFFDFEF7 -FCFEEBF6FAEAFEFFFDF3F7FE87979E7AADB324848B1DA4AE17A7B61CA9BD18A6B318A6B318A6B3 -17A4B21AA6B51DA7B716A7B818A8B711A5B60F92A21D6F71ABCEBFBCD9A3BEDAABB6D2A8D2E6CB -E8F3E4F8FFF7F0FBF3F9FBFAFDF9FEFFFDFFFFFEFFFFFFFEFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFCF7FCFFF9FCFEF6FFFEF6EEFCFF739ABD -A1B4CBF7FFFFFAFEF4FEFAF9FDFBFFFAFEFFFEFEFCFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8D8D8A2A2A2FFFFFFFFFFFF9999998C8C8C343434464646 -8F8F8F9C9C9CFFFFFFFEFEFEFFFFFFFBFBFBFDFDFDFFFFFFFBFBFBFCFCFCFFFFFFFFFFFFFBFBFB -FFFFFFF0F0F0CFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFFFFFFFFFFFFFBFBFBFCFCFCFFFFFF -FFFFFFF7F7F7FFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFB9B9B9FFFFFFF8F8F8FFFFFFFFFFFF -6C6C6CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2D2D2000000B9B9B9FFFFFFFBFEF9FDFBFBFBFEFC -FFFFFFC7CACB4C515395A09C93999B93989F9E9FA7C0BFC3C3C6C3CCD0D2D2D6D7CED2D3D8DCDD -D6DADBD2D6D7C3C7C8B7BBBCB1B5B7A6A9AF9FA1A89A9EA5908E97908F969291975F5E62D0D0D0 -FFFFFFF9FBF6FBFCF7FCFDF8FEFFFAFEFFFAFCFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFC -FDFDFDFBFBFBFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFAFAFA -FFFFFFFFFFFFEEEEEE999A99A19BA0969497D3D3D1FFFFFFFFFFFAF6FBEEECF8E2CFDCC4BAC9AA -BED5AABAD5A5B6D39DBFDFA8BBD7A3C1D7A7D0E1B9ABBCA06F826A748D80B3D0C8CFF5F3ADE1EB -9CD9EA86C6DE83C7E58BD0EB8BD1E2458B892E6F5F67A58BC7E6D1C1BFA6734728964C2CAD664B -96553E71544459412964462A844B2E8D4A2B91552F80482F6F5232A4A77DC3E0B0BFDDAEBAD2A5 -BDD7A9B9CDAE798E869AB7B35764469187457978646271658D8D828A5234A560328A551D886B6B -A9B1A65B70588E8A648077506773509BA5ACB9C3C878877DCADFB1C2DCA6BED5A9BCD1A5C2D8AB -C1D5A9BDD0A1C3D4A4D4E6B3A39A746C54318E6144AD735556210C5D30148841238A3F20994F32 -7E553B37381F2F4E388FC8C590D1D38BD2DC94D5E09ACCD6B0D4DE8FABB56B7D87C0C7D0FFFFFF -FFFFFDFFFFEEFFFFFFF0ECF5997C87A36A59996656B08F96EAF4FDFFFFFFFFFFEFFFFFE8FFFFFF -FBFCFF7F7F8180A1A0175F5709706610776D11726A127B6F13796F14786F14766E16776F1A7871 -0F7975127B750673721072761F5956BACCBBC1D1A0C5DAB0C0D4B3E3F2DFFAFFF8FDFCFBF7FFF8 -FBFEFBFFFBFDFFFCFFFFFEFCFFFFF8FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF -919191070707E4E4E4FFFFFFFFFCF7FCFFF9FCFEF6FFFDF6EEFCFF739ABD9DB0C7F6FFFFF8FEF1 -FDFAF9FBFCFFFAFFFEFEFFFEFEFDFEFEFEFEFBFBFDFBFBFDFBFBFBFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFD8D8D8A2A2A2FFFFFFFCFCFCF7F7F7FFFFFF656565767676FFFFFFDADADA7F7F7F -E9E9E99F9F9FFFFFFFFFFFFF898989FFFFFFFFFFFFE6E6E6868686FFFFFFFFFFFF6767671C1C1C -EEEEEE818181E2E2E2A8A8A8FFFFFF9F9F9FFFFFFFFBFBFBFFFFFFB1B1B1D4D4D4FFFFFF767676 -C7C7C7A3A3A3FFFFFFFFFFFF414141414141F1F1F1FFFFFFFFFFFFFFFFFF6C6C6CFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFE1E1E1000000B1B1B1FFFFFFFBFEF9FDFBFBFBFEFCFFFFFFC9CCCD4F5357 -909B97949A9CA7ACB2CCCDD5E3E4E8FBFAFAFAFFFFFFFFFFFEFFFFFFFFFFFAFEFFECF0F1E4E8E9 -D9DDDECBCFD1B2B5BAA9ACB39FA3AA9B99A296959C8F8E94626065D1D1D2FFFFFFFBFCF6FCFDF8 -FDFEF9FEFFFAFEFFFAFCFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFEFEFE -FEFEFEFFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFEFEFEFFFFFFFBFAFBFCFCFDFBFBFCF9F9FAFBFCFB -FFFFFFF9F8F9D7D7D8A3A3A061615AC7C8BDFFFFFF5B6849D6E4C4C0D4ACC3DDA8B8D79CB4D696 -B5D9A1BDD9A3D6E8BB95A27F6F7F688C9C8DBED9D7CCECEEB9E2E69AD3E085CADC7FCCE186C6E1 -7DBDD43F7F893D786D82B49ABAEBC3D3D5BC7E6A4B7D4E2BAD694B8D4D3A985D54E4CFCA8E8174 -4A3720804D328E4E2D8D50289E513A7B4D2D7C734BC1D6A7C1D5AEC2CFAEC5E2AAB5CBAD72888A -849CA0383F16AB9A3B767658293C298A8877CF8A5FE48F53C9833F9269699396882E4627ACA67B -76704119320198A1A0BCC6C5798779CEE0B3BFD4A0C1D2ABC7D5B2BAD1A9B6D7A7BDD9A4CCD8A3 -CBCC9A7C51317B4F30A7745887513A855544673B2B74433189463299463397533F71503C534D38 -8BB6B0A0D4D791D2DE9AD9ECA5D2E8B9DAF1ADC9CE7E9098979FA773776F80887084926A6E735B -A09BA35F3D498A402C732D1C905D689CA6B877776D8E8E6C88845D827B68C9BEC07D797F98B0B1 -619C9265B6A362B09766AB9260B19A61B19965AE9967AF9969AE9968AC9763AF9864AD9760B0A4 -68B3AF7FA9A1CCCFBBC3CC9DCAD7B1DCECCFF0FCEDFAFBF8FFFAFFF5FFF3FAFDF8FEFAFAFFFEFE -FFFFF8FFFFF3FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4 -FFFFFFFFFCF7FCFFF9FCFDF6FFFFF7EFFCFF739ABD9FB7D1F7FFFFFCFFF8FFFDFBFEFBFFFBFEFC -FEFCFAFEFEFAFEFEFAFCFCF9FFFFFCFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8D8D8 -A2A2A2FFFFFFFFFFFFFCFCFCFFFFFF5F5F5F727272FFFFFFE8E8E8050505797979646464E5E5E5 -181818BBBBBB353535EEEEEE282828CACACA000000FFFFFF616161929292FFFFFF444444737373 -2B2B2B4E4E4E5050502E2E2EFFFFFF606060949494444444C5C5C59797972E2E2E626262181818 -FFFFFF151515BFBFBFFFFFFFF8F8F8FEFEFEFFFFFF6B6B6BFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF -E8E8E8000000ACACACFFFFFFFDFEF9FDFBFBFCFEFCFFFFFFC8CBCA4A4F538F9997AEB7BCD1D8E0 -EFF5FDF6F9FDDAE0E2D9DDDED2D6D7C3C7C8C3C7C8C6CACBC7CBCCBCC0C1BCC0C0B6BABDB6B8BE -ACAFB5A5AAB09A98A096959C929197626167D3D3D2FFFFFFFEFFF9FEFFFAFEFFFAFEFFFAFEFFFA -FEFFF8FCFCFEFCFDFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFDF7FDFEF8FDFDFAFDFCFAFEFCFDF9F4F7FFFCFDFFFDF9 -FFFFFEFFFFFF919E8E3F4D400000004F5145D0DABAC3D9ABBDDAA6B7D8A2C6E1ACC2D8AE89997C -67796DA0B5B3D1EDEDBAE1EBA7DCED93D9EF80CEE883C9DE95D0E178A7BD4271744C7A64A5C8A0 -D0E9BFC2D7ACA18F666D401C9F5D3A916140775A44BDA499FFFFFFDBD7D66E5B5B683C2D8A4E2D -954F22A1553A9B603C6C46248F806CD4D5B8CCD7A7CFD9B3ACC9A26A918690A5B75E5932FAE360 -9BAF6B30464F83875CDA8F49EC8A36E38A438F74548B97714B6F34DEF097A4A9603942179EB1B3 -BACABD717F64CFDFB5BFD7A2C0DCA3C1DCA9B6D7A6ADD5A4BED9ABD8DDAD877E4B6E4A18A75E43 -A4594D715B4EDDD2C8A58182582B2F7C423B8A412C94412DA2574C833E3E6063669AB1C3A4CFF6 -9BCAF2B9D8F2B8C1CF7D868070887E7A909E192305646D1F828C591625017C7B728A454FE74F44 -BD442CAC7D6A8C9D8B002627807835A37B2321302297A0A2878381B8BFAFB6C8A8D4EDBACBE7AC -CDE7ABCEE7A8CBE8A9C7EBABC3E6A8C9E5ADD0E9B3C5E7A6C7E8B7C9E7C6CCE2CBCEE1C1C0CFA8 -C4D3ADE1E6D1FFFFFFFEF4FFFDF8FFFFFCFEFFFFF9FDFEF8FFFFFBFDFFF9FEFEFAFCFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFCF7FCFFF9 -FDFEF8FFFCF4EEFBFF7498BFA4BBD7F4FFFFF8FCF5FFFDFCFFFBFFFBFEFBFEFEFCFEFEFCFEFEFC -FCFCFAFFFFFDFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8D8D8A2A2A2FFFFFFFEFEFE -FCFCFCFFFFFF5C5C5C727272FFFFFFE8E8E8090909D1D1D1FFFFFF9A9A9A0A0A0AC0C0C0939393 -FFFFFF9B9B9BB3B3B3000000FFFFFF5F5F5F8B8B8BFFFFFF454545D0D0D07F7F7F7F7F7FBDBDBD -181818FFFFFF131313939393919191E6E6E6858585757575E0E0E0171717FFFFFF1A1A1AB8B8B8 -FFFFFFF9F9F9FEFEFEFFFFFF6B6B6BFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFF0F0F0000000A9A9A9 -FFFFFFFCFEF9FDFBFBFBFEFCFFFFFFCBCDCD494F519AA4A2B5BDC1BDC4CCBFC2CDBDC0C5C3C7C8 -CFD3D4D5D9DACED2D3C5C9CABFC3C4BABEBFB5B9BAB0B4B5A9ADB0A1A4AAA0A2A89DA1A896959D -95949B929097626165D1D1D2FFFFFFFEFFFAFEFFF9FEFFFAFEFFFAFEFFFAFEFFF8FEFCFEFEFEFE -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFBFDFDFCFDFDFBFDFDFEFBFAFAFBFAFBFEFDFCF8F9F2EBEFDFD3DEC5E6F4DC -74836A2A2F26333C29A2B18BC4D7A9BFD8A9C8E1B1B8CAA076866471806AB3C7C2CAE6EAC5E3EE -A1D6E58FD0E185D1E485D2E487CBD5629DA2476F7D5C887EA8D4ADC1E1AAC5D8A9AFBC966C4C35 -87523C975B42754F359B8A74F3E8D9F6F7FAF8F2F7D3C3C5532E2378422A8F502CA151339E5A34 -8858376A4E3CAEA58DCFD2AAC9DBAFB1D1AB6A928E8FA1B85B5628EED84290AC5236504E8A9064 -C87B3CF38C39E48838967B608D9773486C30C5DC7E92A14B30450A94ABAAB7CBBF70846ACDE1B5 -C2DCA9B9D79EB9D9A8B6DCA8B6DBA8CFE4B1B4B38062511B8E6135AC644C7B362CAD9A93FFFFFF -F2DBE3704B4B703F33944E388D3F229B4F38A258475B4E4782868BB4CFE5B1D8F2A3C2D1738489 -6A7F7088A9987A969D4E5931AFBA61D0D997596843949289853E44E14332BF3B1FB576619BA99F -225652C3BD6AEAC866506A5B9EB0C1838487AEB7ADA2B598BCD7A6BBD69CC0D89CBBD898B9DA9A -B7DA9DB5D9A3B9D7A5BDD7ABB8DC9FB3D69EB8DBA6BAD5A8BBCFA8C1CEAAD4E1C1ECF2DFFCF7F6 -FEF9FFFCF9FEFEFDFDFDFFF4FAFCF2FDFEF6FDFFF9FEFFF9FCFDFAFFFFFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFCF7FCFFF9FDFEF8FFFCF4EEFBFF -7499BFA5BCD9EFFFFFFDFFF8FFFBFAFFFBFFFBFEFBFEFEFCFCFCFAFEFEFCFCFCFAFFFFFDFFFFFB -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8D8D8A2A2A2FFFFFFFEFEFEFEFEFEFFFFFF656565 -737373FFFFFFE7E7E7090909CDCDCDFFFFFFCFCFCF000000F1F1F1D3D3D3CACACA222222BABABA -000000FFFFFF5A5A5A646464E7E7E74C4C4CCBCBCB7D7D7D797979B6B6B6151515FFFFFF3A3A3A -727272DDDDDDF5F5F5898989747474D1D1D1131313FFFFFF0B0B0B8D8D8DE2E2E2FFFFFFFEFEFE -FFFFFF6B6B6BFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFAFAFA000000A4A4A4FFFFFFFBFEF9FDFBFB -FBFEFCFFFFFFC5C8C9454A4D95A09EA2AAAE9FA6AFA9ACB4ADB2B6B0B4B6BABEBFBFC3C4C1C5C6 -C3C7C8C4C8C9B6BABBB0B4B5ADB1B0A4A9AC9DA0A59EA1A79CA0A79D9AA397969C908F9566666A -D3D3D4FFFFFFFEFFF9FEFFF9FEFFFAFEFFFAFEFFFAFEFFF8FEFCFEFEFEFEFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFF -FEFEFFFEFFFFFAFBFBFEFFFFFCFFFDF6F9F4E5EADED4DEC4C7D4B0BFD0A8B9CBA2CBDDBBC2D5AF -BBCEA4C0D1A6CFE1B7BCCDA56470557A8874B6CAC1C7E3EAB5D9EBAED6ED94DBEE86D1E37FD0DE -7ECAD058969430665B759594B6DDBEBCE3A6BCD790D1DAA58B88666C3C349259508A5549685340 -C9C7B3F9FAE9F4F2FAEFEBF3FFF8FF7E636165392B824B34A54F2F9F522BA96A47774B3E7C6455 -C9C0A4C3DEA8ACCEA76D90948C99B358521BE4D1278AAE3E355342909469CB7A41F68936E07D25 -967D6787927043682CBFDB7389A04026470090ACACB5CFC26C8569C1DBAEB8D8A4B2D69DB3DAA9 -B0D8A5C9EBB5C2CE977A6B386B4B16965E3C924D3A8D554FE3D8D7FAFEFFFAF9FFBCA6A0613F31 -7D472E99512DA0512DA5502B835B45745E549AA0A19EB8BE67848071867DA9CBAEA8D3B670938E -3C4A19A0AE46C8D37F4756348D8A818C4245E9412ACB3616C56F598F9A9A164A3EBCB853DCC14A -47685791AFCF81868FB1BDB7A8BBA2BFD7A8C3D89EC6D89ABCDA96BBD999B8DA9EBADBA9BBD6AC -BED4B2B9DAA1B7DC97B6DC90BAD894BACD9FCED8BCEAF3DDFAFDF0FEFDFBFFFBFFFBFBFDFCFEFC -FDFFEFFBFDF1FBFEF2FEFFF7FCFFF6FCFFF8FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -FFFFFF919191070707E4E4E4FFFFFFFFFCF7FCFFF9FDFEF8FFFCF4EEFBFF7498BF9FB6D1F4FFFF -F5F9F2FFFDFCFFFBFFFBFEFBFDFCFAFEFEFCFDFDFBFCFCFAFFFFFDFFFFFBFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFD7D7D7A3A3A3FFFFFFFCFCFCFEFEFEDEDEDE4444444F4F4FE7E7E7DCDCDC -373737B7B7B7FFFFFFFFFFFFCFCFCF404040E6E6E6FFFFFF585858D2D2D2808080FFFFFFE7E7E7 -4D4D4DF6F6F6545454999999686868838383848484505050EEEEEEFFFFFF626262939393FFFFFF -6262627878788787874C4C4CE7E7E7EBEBEB4D4D4DF5F5F5FCFCFCFFFFFFFFFFFF6C6C6CFFFFFF -FFFFFFFFFFFFFDFDFDFFFFFFF9F9F90000009F9F9FFFFFFFFEFFFBFEFCFAFAFBFAFFFFFFCDCECE -555B5F8B9694899296939AA2B2B7BFCACFD4DBDEE2DFE3E4E3E7E8E3E7E8ECF0F1EAEEEFDFE3E4 -D1D5D6C9CDCDBEC2C5ABAEB3A4A7AD9FA3AA96959D94939A929197646368D2D2D2FFFFFFFEFFF9 -FEFFFAFEFFFAFEFFFAFEFFFAFEFFF8FEFCFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF9FEFFFFFFFEFFFCF5FBF5 -F6FEF5F2FBF2DFECD6CBDABBC0D1AAB8CA9ABFD29CC6DBA6B7D1A7C8E1B5CCE2B6C2D8B299A78C -5D6A5599A9A3D0E6E4CFF0F5ADDBE99ED2E891C8E58BD4EB89D3E278C3C642817440725B96C0A4 -C3DFC0B6D9A8BBDE9AC7D997C8C49166512F6B3A33885553694343AEACA4EEF6ECF8FDF2F5F0F5 -F3F1F9FCFAFFE3D5D98266626A4339A85534A95931AA5D3B9D6355654537B4A98FCAE5ACADCFA4 -6F8E8E8F9CB4615E28EBDE3D99B64D294638888C60E39056F08433C45E0C9C8A7B8B997D466933 -DFF2939CAE512B4C0293B0B1AECABE60795FC7E5BABDDDAABCE3ABB0D9AAB6DBA7D7EDBA8B8856 -593B11956840844B34754336DAB9B4FFFFFFF0F8FEE5F3FDFFFBF4A090845737219358379B4E24 -A9501FA25D3B855237543D25707961889F84AFCDACC0E3BB99C6A16B90873F4E1BA5B147C9D57B -4258378E8D838D443FED4227CE3414CC715D939EA2174A3BC4BE4BD9BD3E4169538CB2D17E808C -AAB4AFB5C5AEC4D9ACC7DCA4C4D69AC4DB99BFDA9DBCD79FBBD6A8BFD5AFC5D5B5B8D8A5BCDF9D -B8DD91B3CE8DC5D5AEE1E9D9FEFEF7FEFEF8FDF8F6FFFBFDFCFCFBF8FCF8FBFCF2FAFCF1FDFFF6 -FFFFF9FFFFFAFFFFFBFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707 -E4E4E4FFFFFFFFFCF7FCFFF9FCFDF6FFFFF7EFFCFF739ABD9FB6D2F6FFFFF9FDF5FFFCFCFFFBFF -FBFEFCFDFCFAFEFEFCFDFDFBFCFCFAFFFFFDFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -D7D7D7A3A3A3FFFFFFF8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFBFBFBFFFFFFFFFFFFFFFFFFFCFCFC -FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFF9F9F9FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFF6C6C6CFFFFFFFFFFFFFFFFFFFBFBFB -FFFFFFFFFFFF0000009A9A9AFFFFFFFDFFFAFEFCFAFAFDFCFFFFFFC7CBCB4F56588B969497A0A4 -B3B9C2E3E6EFECEEF4E2E6E9E2E6E6DBDFE0CFD3D4C7CBCCC4C8C9C1C5C6C2C6C7BFC3C3B9BEBF -AFB2B7A8ABB1A1A6AD9A99A196959C929197646468D2D2D2FFFFFFFEFFF9FEFFFAFEFFFAFEFFFA -FEFFFAFEFFF8FEFCFEFEFEFEFCFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFCF9FFFEFAFAFEF5F3FBEDE9F6E3D5E4D1C4D9B1 -C1D6A8BFD59FC1D89CCBE2A6BAD095BDD6A9C3DBAFBED5AD82957B7080729BAAA2CAE7EFCCF2F8 -B8E8F19CD7E593D3E594D3EB7DBCCD6EAEB743807A54876FA1C9A6BDDFB8B7D59CB4D69DBADBA5 -CAD9A8ABA1766345217B563F6A453C755F5FF1F9F9ECF3F1F8F1EFEFE9EAF5F5F6E4E9EFFEFDFF -BFACAB6345419B53339F532DA35631A268536E523EB7B393C9DEA9B3D0A06D8A7D94A0B35D5C38 -E4DF5B9FB16734484C848557DF8B4BDF7427A643027B6F6583918049653CE6F0A0989D542B3D07 -94AFB2A6BEB4698269C7E1B8BCDAAAC1E4AEAED4A6BDDCAAD2E2B262562C6C492A94624C714533 -987A6BF8E9E4F5F2F4F0F5FAE0EDF3F7FFF9D9D9D179695D6A3E239D5832AD592BAA5A38985B38 -603D18999870BED4A5C5E6B6B3CFA1A0C7A0759391475328A5B150C8D58544603A898E8089453D -EA4429C02C11BD655D95A29F194A3EC8BB52DEBA3E4B6B5297BACB7A747F9DA29EB3C0AAC3DAB0 -C2D9A6C3D8A2C5D79FC2D8A0BED7A1BED5A9C2D5AEC7D4B0BAD8A8BEDDA9C0DFABBAD1AAD1DEC9 -F6F9F1FFFFFFFFFDFDFFFBFBFFFEFAFBFEFAF7FFF7FBFBF6FAFBF5FCFDFAFFFFFEFFFFFDFFFFFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFCF7 -FCFFF9FCFEF6FFFDF5EEFCFF739ABD9FB4D1F6FFFFFBFFF8FFFBFBFEFBFFFBFDFCFDFDFBFEFEFC -FDFDFBFCFCFAFFFFFDFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7D7D7A3A3A3FFFFFF -FAFAFAFDFDFDF9F9F9FAFAFAFDFDFDFAFAFAFDFDFDFDFDFDF9F9F9FDFDFDFCFCFCFDFDFDFBFBFB -FFFFFFFBFBFBFDFDFDFBFBFBFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFAFAFAFCFCFCF7F7F7FAFAFA -FBFBFBF8F8F8FCFCFCFAFAFAFDFDFDFEFEFEFFFFFFFAFAFAFEFEFEFDFDFDF8F8F8FCFCFCFDFDFD -FDFDFDFEFEFEFDFDFDFFFFFFFFFFFF6C6C6CFFFFFFFFFFFFFFFFFFF9F9F9FFFFFFFFFFFF000000 -989898FFFFFFFDFFFAFDFCFAFAFBFBFFFFFFC7CBCA5055589CA8A6B2BABFC2C9D1CACDD6C5C8CE -BFC5C7CDD1D3D7DBDDD6DBDDCCD0D2CBCFD0C5C9CAC2C6C6BABEBEADB2B3A5A8AEA0A3A99C9FA6 -A09FA998999F949398636468D2D2D2FFFFFFFEFFF9FCFFF9FCFFFAFEFFFAFEFFFAFEFFF8FEFCFE -FEFEFEFCFCFDFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFEFFFFFFFFFFFFFFFEF8FDFDF5FBFFF2F0FCE6D6E4CBBCCCB3B5D099B9D39CBFD99ABFD796 -BBD496B9D094CDE1B5C2D7AD7086605C705CA8BBB4D4E6E7D2F8FFB3E0EE95D0DC91D5E18ED5E3 -93D9E97AB1BE4276784A7F72ACD5B6CAEAC1B9D2A6B0D085BBDDA2A7C89ED0DEBEA49774654419 -6E54315B422CCDC2BEF7FFFFE7EAEFEFDBE4F7EEE9ECEDEDE3ECF0F4F8FAF1E7E59B847F712F13 -9D582FA15630A36A51846C52B7BB94CCDAA8B1C99369836A919EB033331B9F9A31606638283548 -7F7D4ED5853EF0873DBC58277D747087968B273F1F949552635E24303411809A9E8FA69C829681 -C5DCB7B9D5A6BBDAA9BDDEB1C2DBACCED9AA58482368432D753F36755441D7C8B8FDFCF2EFEAEC -F6F6F7EAF3F0EAF7F5F4F9F9BFB8B2532F1B985A38A9572DB15D3BA05D3763360CC0BB86D0E4AC -BADFA2C4D5A7ACCAA77992944C5331A7B35ACAD88F4868408C998781433AD6361BA81B04A75A59 -94A59D26564CD2BE5CF7CD55526C4EA2BFC47A6E7694928EB7C2ACC6DAB1C0D7AAC2DAAAC7D5A4 -C2D7A6BED5A7BFD4A7C3D5ABC8D5ACBCD8ABBCDAB2BAD4B5D0E5D3E8F3EBFAFEFBFCFAFFFEFAFE -FFFDFDFCFBF6F7FCF5F0FCF3FBFAFCFAFAFBFEFEFEFFFFFFFFFCFFFFFCFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFBF6FCFEF8FCFEF6FFFDF7 -EEFBFF7399BD99BDD1F6FFFFFCFCF2FAFEFAFAFEFCFEFBF9FFFEFCFCFCFAFEFEFCFCFCFAFFFFFD -FFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8D8D8A2A2A2FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFEFEFEF8F8F8FDFDFDFAFAFAFDFDFDFBFBFB -F8F8F8FDFDFDFCFCFCFCFCFCFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF -FDFDFDFDFDFDFCFCFCFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFFFFFF6B6B6BFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFFFFFF0000008F8F8FFFFFFFFEF9FA -FFFEFDFFFFFDFFFFFFCBCCCB50514D9A9E979FA6AA9FA7B3A7B0BCB4BBBFB7BAB5BCBEBDBBBCBA -BABCBABCBEBDBABCBBB5B7B5A3AEACA1A6A7A4A4A8A1A2A89DA2AA97A0A699949A95929C8F8B99 -66626AD3D1D3FFFFFFFCFDF7FFFFFAFEFEF8FCFFF7FEFFF7FEFFF8FEFCFFFEFEFBFEFFF8FCFFF6 -FCFDFBFCFCFFFFFFFCFFFFFBFFFFFBFEFEFBFEFEFBFEFEFCFEFEFFFEFEFFFEFEFFFEFEFFFEFEFF -FFFEFFFBFEFEFBFEFEFBFEFEFBFFFEFCFFFFFBFFFEFDFEFFFCFEFFFCFEFCFEFFF9FDFFF9FEFDF7 -FFFCFAFFFFFEEFF5EBC2D5BCB9D4B1B3D4A9BDD8A5BDD8A0BDDB9EBDD79BC1D5A1DAE8BA9AB68E -6B826084937CD6E7E1DEF7FBC3E3EDA9E2EE9BDEE691DEE27DC8CD8ACCD55A939E32636A85A9A9 -CEE1D9C7D7BCBACEA7BCD4AAB6E493B3DD9CBDDFB2C5D3B792886D694E315146299E9985FDFBF2 -EFEDF2F7F3FCF8F2FFFBF2F5F3F3F3F3FCFAF0FBFAFFFFFFE9E2EF88593D844B2EA66643905B35 -896C49C5BB9BC5E2A8B1D09F83A386B8D0C12A3B182B360044532A889C97B2A8A3CF783DF9883F -E47B4591868BC7C5BF3D4227282500504E2C8D93819DACB9707D79AEBFA5C5DAAFBCD9A7B3D39E -D2E0ABC6D7A7ADAF8D66423A6E40386A4239CBADB6FEFFF9EBF9E9FAEEEAFDECF3F1F0F8E0EFF7 -F1F7FCF9F8FF998C9B69403C9A5334AD5F35AC6744734B28C2CFA1C0DDA7B4CD94CAD8AEB1BAA9 -8087872D371F6E79478C9657364A30869174814D33DA4535AF2715A7574290979F223A16888139 -9C8F3838581A98BAB572726B899787B5D4B9B9DDB4B8D8A9BAD3A1BFDBA8BED8A5BCD7A0BEDBA5 -BED9A0BCD79FB4D4ADB6D1B3C5DAC5EAF7EDFAFFFAF9FEF6FDF3F6FFF9FBFFFEFFF8F9F7F5FCF9 -F2FCFAFCFBFAFAFAFAF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFAFAFCFDFFFCFCF7FFFFF8F0FCFF749BBE94B7CD -F4FFFFFDFFF3F9FFFAFAFFFCFFFBF9FFFEFCFEFEFCFEFEFCFCFCFAFFFFFDFFFFFBFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFD8D8D8A2A2A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFCFCF9F9F9FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFFFFFFFFFFFF -F4F4F4F8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFEFEFEFDFDFDFFFFFFFDFDFD -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF6B6B6B -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF0000008D8D8DFFFFFFFFFCFBFFFDFBFEFEFCFFFFFF -C8C9C84C504D979B9591969A959EA8A2ACB5B7BFC2D5D7D3DEE0DFE7E8E7E7E9E8E8EAE8E9EBE9 -DFE0DFD0D7D3C6C8C8BCBBBCAEABB1A2A5A8999FA292929792929C9495A0626368D1D2D3FFFFFF -FBFBF8FDFEFCFCFCFAFEFEFBFEFDFBFEFDFCFEFDFEFEFDFCFEFFF8FEFFF7FEFEFCFCFCFFFFFFFE -FFFFFCFFFFFDFDFDFBFDFDFBFDFDFBFDFEFAFDFEFBFDFEFBFDFEFBFDFEFBFDFDFCFBFDFCFBFDFC -FBFDFCFCFEFDFDFFFEFCFFFDFDFBFFFEFCFEFEFCFBFCFAF7FBF9F3FEFBF4F8F9F0E5EBDDCDDAC4 -B9D0AFB7D7ACB2D5A7BFE2A9B6D79DBAD9A0C3D9A7C6D9B0A8B7945D795C8DA48FD2E9E0D8F4FA -C1E6F4AED9EC9DDCEE8CCFDC91DCE17AC1C24D8C89447A7984B59DB3DABEC9E4C0BED4A4C0D6A0 -BDD8A0B9DD9CB7DAA3BDDAB3C9D7B8817F60503E1F595846DADBCEFAFCF8FAFAFFFCFBFEF8F3F9 -FAF3F7F5F3F4F0F7F6EEF5F5F2F2F6FFFFFFB8A08D69472F976D4F77543170633DC7CBA6BEDBA5 -B6D3A485A38284A189425E2D64812D4C6542596C61978976D7873EE78A3BD4834D988175A2A689 -3E5D2D6886444D642F576C4B809394607363BDCDACC9DDA8C2DAA0BDD99FC5D89FC7D2A69F9679 -714540613734A0867DEEE5E7F6FAF2F4F7EEFAECECFAF1F5EBF7FBEFF9FAEDF0F1F4F4FCDED7DF -82675C7E4724A55532A96447734D2FBCC89FC4E0B1C2D9AAC5CEABB2BAAEA1AAA836452A1A2E00 -384E0F556E59B2B8A57C4034DD413BC53229C26253BFB7BF3B5338363A09423F0456704BC9D9E4 -717469859582BDDABFBBDEB4BCDAACBAD4A3BCD8A4BAD8A4BCD9A4B6D49EB9D7A2BBD9A1B8CFB2 -C2D5BFE1F0E2FAFFFBFEFFFDFDFEFBFEF8FAFFFBFDFEFEFEFCFDFDFAFEFDF8FEFDFDFDFCFCFCFC -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191 -070707E4E4E4FFFFFFFFFBFAFCFEFFFCFCF8FFFFF8EFFCFF749BBD8FB1C7F1FFFFFEFEF3F9FFFA -FAFFFCFFFBF9FFFEFCFCFDFBFEFEFCFCFCFAFFFFFDFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFD8D8D8A2A2A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -F8F8F8FFFFFFEDEDED3030304545457979798C8C8CFFFFFF5B5B5B505050FFFFFFF6F6F6FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF9F9F9FFFFFFF6F6F6FEFEFEFBFBFBFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF6B6B6BFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF0000008A8A8AFFFFFFFFFFFDFFFEFDFDFDFAFFFFFFC6C9C74D524E939793 -969C9DB6C0C5DCE5ECF1F9F9FBFEFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F7F9E6E9E3E0DEDC -D3CED0BCB5B7ACA9ABA3A5A6989DA390959D9296A15F6468D0D3D3FFFFFFF9F8FCFDFDFFFBFBFE -FEFEFEFEFDFEFEFDFFFEFEFFFEFFFCFEFFF8FEFFF7FEFEFCFCFCFFFFFFFEFFFFFDFFFFFDFBFBF9 -FBFBF9FBFCFAFBFCF7FBFCF6FBFCF6FBFCF6FBFCF6FDFEF7F9F9F9F9FAFAF9F8F9FDFDFDFDFDFD -FCFCFBFFF7FFFFF7FBFEF9F9FCF9F5FEFCF4F9F7EDDFEBD3CFDDC0C4D9B3B8D4A4ACCE9AC4EAB4 -B9E4A3AFD29AC4E1B1C8DDBA8B9B84637461AEC7BCCCE9E2CBEEF2AFD9EDA8DAF4A9DEFB84C6DD -8ED3E288CFD3387A704F867698C7B5B9E6B3BAE0ADBCD9A3BFD598C0D89DBFDB9FBCD8A8BBD6AA -BFDAB3C9DAB85E6347322D0F4348427C83826D7276696D746D6A71716971756F70717170697070 -6E74747170757B747E776F68412F25634734584225726C48C8CFA8BDD8AAB0CC9E5F7B52496A45 -4E77377BAE4B5385533E5A36614D1FD17E29EC903DD47F477956325F6C384782396DB15855843E -4D7245445C4E445A3EB7C99BC2D698C6DC9AB6CF8EB6D49BDAE6BC8A7661734045785455CCC4BE -EEFFF6ECF5EDFEF7F2FFF3F8F7F7FBE2FBF9FAFFFCF5F4EFF3F1F2F8FCFFB6AA9D82643FAC5E45 -A2614B6F4B31B7C59FC2DEB6C2D7B3C2C6AAB0B4AB9FA9A05A714F486B3545702F608162AFB39E -85423ADF433ED84237CF604DC3B2A15672544E654057653C587359B4B3BF5B635491A38EBED8B9 -B4D4A9BCD8ABB8D3A3B9D7A1B9D8A4B9D9A5B9D6A3B9D8A5B6D7A2C1CFBDDCE6DAF2F9F6FFFFFF -FEFBFEFEF9FDFFFDFDFFFDFEFFFFFFFEFEFEFAFFFEFAFFFEFFFEFEFEFEFEFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFF -FFFBFAFCFDFFFCFCF8FFFFF8F0FCFF749BBE9CBED3F7FFFFFCFEF3FAFFFAFAFDFBFEFBF9FCFCFA -FEFFFDFFFFFDFDFDFBFEFEFCFCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8D8D8A2A2A2 -FFFFFFFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FFFFFF -828282717171FFFFFF3F3F3F7E7E7EA3A3A3171717FFFFFFFFFFFFDCDCDCFEFEFEFFFFFFE0E0E0 -F9F9F9EAEAEAFFFFFFFFFFFF9797978F8F8FFFFFFFF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF6B6B6BFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF -0000008A8A8AFFFFFFFBFBF9FBFCF9FBFEFBFEFFFFC6C9C74B514CA6A9A7AEB5B4D1DBDBE6F1F0 -EBF3F1D4D7D5CBCBCEC0C1C3B2B3B6ACADAFB2B3B5B4B4B7AFB2AFB2B0B1B5AFB0B2ADB2B0AEB4 -A9A9AF989EA29297A08D909A5E6367CFD2D2FEFFFEFCFCFEFEFCFFFEFEFEFEFDFEFEFDFEFEFEFF -FBFBFEFCFCF9FBFCF7FEFFF8FEFDFCFEFEFFFCFCFBFCFCFAFCFCFAFEFEFCFEFEFCFEFDFBFEFFFA -FEFFF8FEFFF8FEFFF8FEFFF8FEFFF8FCFCFCFCFBFCFFFFFFFBFAFBFFFFFFFDFEFEFFF8F9FFFBF8 -FFFDF6FBFDEEF5F9E4DDE2CBC6D7B4C0D2A7BCD59FBCD99EC0DFA4B4D69DBEE1AAC7E1B4BCCEB0 -728274768882BFD2D0CDE8E9C2E8EFB7EAFA9CDAED91D0E696D0E695D3DE64A1A62D666175A793 -A2CDAEB7DCBAC3E0B0BBD7A7BED9A6C1D9A6C1D8AABED7AEBFD5ADB9D1A7C7DFB2B0C29E404C31 -7B836DC8CDD1CCD5DAC6D1D6D0D6DCCCCBD0D4CFCFD0CFD0CFCECECCCDCFD3D3D6D4D3D8CAC9CF -DFD2DDC7B2BA8D7170452B1B6E6449C1BF9FCDE9C4BFD7AB435A2B46673664965068AA445CB15A -64934A4D4200BD7220FD9C52F88853694917455C1D61AD5956AA4961A1517AA770192E104E6238 -BED09BC8DB9DB9CF93BFD79EC4E9B9B7CAA865594A461C2462474D94959084A4938A8F8A9B9095 -9A989F8F9A9C7E9090979790948D87959490989FA27E80774F43256D362A825343664E36BCCDA6 -C3DEB6C8D9B7C4D1AF919A852B3A225C7C4573A4604F8B46426E2A67663F7C3422C9402DCC4A2D -AC452374662E527E3E618F5372985D4C764567695A30442CA3B99CBED8B4B9D4ABBBD5A9BED8A9 -B7D5A3BCD9A7BCDAA9BFDCAFBAD7ACB2CEA4DADFD8F6F9F6FCFAFFFEFAFFFFFBFFFFFDFFFEFEFF -FEFEFEFEFEFEFFFFFFFEFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFBFAFCFDFFFCFCF8 -FFFEF7EEFCFF7399BCA4C6DAF9FFFFFDFDF3F8FEF7F8FBFAFEF9F6FCFDFBFDFFFDFFFFFDFCFCFA -FEFEFCFCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8D8D8A2A2A2FFFFFFFEFEFEFEFEFE -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFEFEFEFFFFFF7676766E6E6EFFFFFF -252525B4B4B48E8E8E222222F8F8F8868686999999707070FFFFFF6363636F6F6F494949A8A8A8 -FFFFFF0707078A8A8AFCFCFCF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFCFCFCFFFFFF6B6B6BFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF000000888888FFFFFF -FAFBF8FAFDF9F8FDF9FFFFFFC7CBC94B544EA5A8A8A6ADAAB3BEB9B3BDBAB1B9B7C2C4C2D8D9DE -E0E1E5DDDEE2D9DADED2D3D7C9CACEB3BABCADAEB4AFADB2ACA8B0A9AAB29EA2AB98979C90909A -9696A1606267D0D1D2FFFFFEFBFCF9FEFDFBFEFDFBFEFDFBFEFDFBFEFEFCFBFBFDFDFDFBFBFCF7 -FEFFF8FEFDFCFEFEFFFEFEFBFEFEFCFEFEFCFEFEFCFEFEFCFEFDFBFEFEFBFEFEFBFEFEFBFEFDFB -FEFDFBFCFEFBFFFCFEFCFAFBFEFDFEFBF9FAFFFDFFFDFCFEFFFDF7FFFFF5FDFFEEE8F3D7D2DFBC -C5D4AEC3D1ACC2D3A4C2D89CBFD698BDD79DB8D39FCADEB4AAB89A74796C8E9696C4D6D7D2EFEF -CBECEFB0DDE4A2E0EB96DCE796D6DD98D2D45D9188396C60709D8CB9DEC3C4E6C3B2D3ACB8CDA0 -C3DAABC1D8A7C0D9A8C1D7ACBFD7B1BDDAA7BDD9A5C4DDA79DAF874F5942C2CABFFFFFFFFFFFFF -FCFFFFFDFFFFFDFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFFFFFCFFFFFBFFB8A3A6 -48362B76725AB9BC9BC1DEBDBCD3A74B5C2D4962346E9C5C65A64C509E4169984F414C108F7138 -D59B65D07D51604B1C4F69325EA45C58A44F5D934D6C9462212E08748154C5D3A0C4D5A3CAE0B4 -D5EFCA99C39C56775B1D26186E585CBDA7AAC1BBB6A7C2B1B3B4B2B9B4BAA7B4B8ACB8BCB3B1B6 -BBB9B5C0B7B0B4ACAAB6BAC2BBBCBEADA2927F5F59573D2F51492BB6D09FBFDBAACDDBB1CAE0B1 -758A610C2100759B5173AA5759A04C6291444A471C732C20C95446BF583C863816474A03569040 -6EA45779A95B6096563E53341A3216ACC4A6BFD7B5C3DAB3BED8ABBFDAABBED7A7BBD3A4C0D8AB -C1D7B1C0D6B1C5DCB7F1F3EDFFFFFEFBFBFDFDFBFFFFFDFFFFFEFEFCFDFDFDFEFDFDFDFDFFFFFF -FFFEFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFBFAFCFEFEFCFCF8FFFFF7EEFCFF739ABC -97B9D0EEFCFDFBFAF0FAFFFAF8FDFCFFFBFAFCFBF9FFFEFCFFFFFDFDFCFAFEFDFAFDFCFAFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8D8D8A2A2A2FFFFFFFCFCFCFCFCFCFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFF7C7C7C272727A3A3A3C4C4C4FFFFFF8A8A8A -222222F5F5F5898989DDDDDD000000EEEEEE6B6B6B6969699F9F9F1A1A1AFFFFFF171717CDCDCD -FFFFFFF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF -6B6B6BFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFFFFFF000000858585FFFFFFF8FAF6F8FBF7F6FBF7 -FFFFFFC3C9C74149449C9D9F9EA6A29DAAA2A1ADA6AEB7B3AFB1B3B5B6BCC1C3C8C3C5CAC1C1C8 -C0C0C6BDBDC2AEB7BEAAAFB7A4A4AF9D9BA99498A6929AA696939A93909A94909D636068D2D1D4 -FFFFFEFBFDF5FDFFF8FEFFF8FEFFF8FEFFF8FEFFF8FBFBFEFDFDFAFCFCF7FEFFF8FEFEFCFEFCFF -FEFEFBFEFEFAFEFEFAFEFEFAFEFEFAFEFEFBFCFCFFFCFCFEFCFCFEFEFDFEFEFDFEFCFEFFFEF9FA -FBF7F8FAF6F7FEF8FBFFFDFEFFFCFEFDFCEFF9FCEAECF3DCD0DDBABBCEA2BFD5A4C7D3AFC5D4A4 -BED193BFD594C9E0A6CBE2B0A7AB8C70715FA59F9BE5E7EEDCEEF3C3E2E2B5DADAA9DDE0A2E9EE -8AD6D780C1BB6AA093406B558DB79EC6E8CEB5D5B6B9D6B3BBD7B2C5D6A6BFD39EC1D99EBFDA9F -C0D8A5C0D6A9BBE0A5BFDEA0CCE7A8A4B58677816DDAE1DCFFFFFFFFFAFBFBFBFFF7FBFFF9FCFD -FCFEF9FEFFFFFEFEFEFFFDFFFBF9FDF9F8FEF8FAFEFBF7FDFFFFFFB6ADAB595A4C788369B6CDA6 -C2E0C1B3C79A576332384A1F3760261D5B0B1D5908305A2112320E3647274C492452340C322600 -324F221B591E26631C2D591A3356292F340B8B9263BDC798C4D5A9C0D8B996B39C4A7457568067 -102D1DCBC6C5FFFFFEF9EDE8E9FCEDFAFAF7FBF9FBE5F9FBF1FBFBFCF2FBFBF9F7FCF8F5F9EDEE -EEF0FCFAF8FDFFFFFEAB9C9953493B555A39B0D19AC3DFA5CDD9A5B0D397728C562C45087EA94C -5A993653A24273A1565F53346F2226C05453AE56477736234555105FA15068A450699B4564A35D -294D2E2D4529BAD3B2C0D6B3C4D9B3B9CFA5B7D1A3C4D5A7C3D4A7C1D2AAC1D2AEC7D7B7E4F5D4 -FBFEF8FCFEFBFCFDFDFAFCFFFDFFFDFEFFF9FAFEFCFAFEFDFBFCFBFFFFFFFFFCFFFFFCFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF -919191070707E4E4E4FFFFFFFFFBFAFCFEFEFCFCF8FFFFF6EEFBFF7399BD95BED0E8FFFFF2FFF0 -FCFFF7FCFCFAFAFDF7FDFFFDFBFFFEFBFFFEFBFFFEFBFFFEFBFFFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFD8D8D8A2A2A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFAFAFAFBFBFBFFFFFF7F7F7F7A7A7AFFFFFFFFFFFFFFFFFF888888202020FFFFFF5A5A5A -D7D7D7050505EAEAEA7171717F7F7FBBBBBB1B1B1BFFFFFF111111C4C4C4FAFAFAFAFAFAFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF6B6B6BFFFFFFFFFFFF -FFFFFFFAFDFCFCFFFEFFFFFF000000818584FFFFFFFAFFFEFBFFFEF9FDFDFFFFFFC5C6C843484E -8D97939B9E99A3A19DADABA4C7C9C2DEE5DBF5FCFAF5FFFCF7FFFFF4FDFFF0F7FAE3EAEDDADDE7 -D1D4D7C4CBC6ACB3AFA4A8AB9CA0A896949F919298939297636462CFCFCBFFFFFFFBF9F4FEFCF7 -FEFBF7FEFBF7FEFBF7FEFEF7FDFEFCFAFEFDFAFEFBFAFCFAFAFCF7FAFEF5FEFCFDFEFEFEFEFEFE -FEFEFEFEFEFEFCFCFDFFFFFDFFFFFFFFFFFEFCFCFEFEFFFFFEFEFFFEF6FFF9F3FCFBF8FDFAFBF7 -FCFCF4F8FBF2E9F6DBDDECCBC9DCB0C4DCA9C2DDA8C3DFABC1DDA8BED2A3C6D4AAD0DEB9C3D3AD -91A57E717365BFC4B8ECF8F4D9EEF7C2E1F4B5D6F2A4DEE6A4E0E58AC6C682B9AE52826B406B4D -B7DCAEC8ECC0BDDEB0B6D0A0BED8A8C4DEADC1D3A4C3D8A7C4D9A9BED6A4BED7A5BED9A4B9DCA0 -BFDDA3C3DBAABDCAAB949B8DE2E2E3FFFEFFF6FCDEF2FFF3EEF7FCFEFEEEFFF9F9FFFFFFFFFFFF -FAFCFFFBFFF5FDFCF7FDF7FEFEF9F9FFFFFFBCB9C59EA399A8B39DB8C2ADC1DCB2C2D7AEA3B78F -9AAF8496B18590AE8197BD6E7A946A3D706A278A96216D6A465B449BA187A1B19296B38D91B086 -93AE8294A67B98997CC8D0ABDEEEC5BCDCB67AA38B2F5F526EACA77DB1A7446C5FDDEFE4FEFDFD -FFF7FFFFF8F2F5FBFDEFFEFFFFFEF9FFFBFAFFFCFFF7FEFEFFFAF4FFFDF6FFFFFFFEFEFFFFFFFF -ACAEAF777564717649B1CA87C7DD9DCDD39FBCD99A7BA05A2C550A487522476E1D527724656833 -4F532538281C6A38566A364D4F2326365128597036486C2937723A4076462D53244F6F4AC6E4BB -BDD9AAC2DDA7BDD5A2BED5A5C4D8ACC3D4ACC1CFACCDD7BCE0E5D0F3F8E4FDFEFFFDFDFDFBFBFB -FCFCFCFFFFFFFEFDFEFBFAFAFEFCFDFCFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4 -FFFFFFFFFBF8FCFEFDFCFCFBFFFEFAF0FCFF749CBB8DB2C6E7FFFFF3FFF0FEFFF9FDFEFBFBFEF8 -FDFFFDFDFFFEFDFFFEFDFFFEFDFFFEFBFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8D8D8 -A2A2A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFD -F6F6F63C3C3C363636F0F0F0FEFEFEFFFFFF6060601C1C1CD9D9D9000000C1C1C12F2F2FEDEDED -4343436565658181810E0E0EFFFFFF646464505050E5E5E5FEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF6B6B6BFFFFFFFFFFFFFFFFFFFBFEFCFEFFFE -FFFFFF0000007F8280FFFFFFFBFFFDFBFFFCF8FCFEFFFFFFC9CBCD495156929A9A9FA3A3CDCACB -EDECEBFDFEFBF4F7F3EFF4F1E9EDECE6E9EAE6E9ECECF0F4E3E7EAD9DCE5D0D3D8CACDCDBBBEBF -B2B5B9A5AAB09E9DA996949F929096666166D2CFCFFFFFFFFBFAF5FDFDF8FEFDF8FEFDF8FEFDF8 -FEFDF7FDFEFCFBFEFDFCFEFAFCFEFAFCFDF9FAFFF7FEFCFDFEFEFEFEFEFEFEFEFEFEFEFEFDFDFD -FDFDFDFDFDFDFDFDFDFBFBFCFDFDFDFCFCFEFFFDFFFEFAFFFDFDFBFBFCF7FDFFF4F1F6E9D1E0BE -C5D6AFBCD0A0BED5A2C1D9A4BFD8A6BDD8A5C4D8AAD2DFB7B4BD9E778066879178C3D1C2EAFBF0 -DFF6F3BEE0E9B1DAEDABDAF19BD0DD8FC8CE76ADAD4071606B9677AFD4ADBADDADBFDEB0B6D6A6 -B9D3A3C1D9A8B9D09DBCD0A2C3D8A9C0D7A7BFD8A7BDD7A8BDD7A7BADCA0BAD8A1BDD4A5C2D1B2 -9BA494E5E8E6FFFFFFFCFFD9FAFFECF9FFFFE6E9DFD3C4CADACDD1CFC7D3DEDCE6FEFFF7FFFFF9 -FFFEFFFFFFF9FFFFFFBAB8C2ADB3A7ACB69EA9B6A1C0DAADC2D8AFC9DDB3C5DCB1C5DFB3BFE0B2 -D1E1AD9AB399408A901AA7B71993963B7E71DEE4C3CBDEB9C0DAB1B9D5A8C8DAAEC7D3A6D3D6B8 -CCD9B5ABC29D5C846842706577ABAC8ACDD292CCCC4D766EDAECE4FEFFFAFEF9F8FEFAF0F3FBF9 -F6FFFFFFFFF9FFF9F2FFFDFAFCFFFFFBFAF9FEFCF9F8FAF3FAFEF9FFFFFFC0B4BCC4B6AF919073 -A5BF8FBEDAAFC2D1B2D3CDB3B0AF937879597F805F847F5E847858578263447C5E135349276272 -215C651F5F53788169848F66758A546C96646B9268738C618DB284BEE2B0B9DAA4C2DFA8BDD8A3 -BAD5A2C2D7A7C1D2A8C2D1AEDEE7CEF6FAEDFBFCF2FDFDFEFDFDFDFAFAFAFBFBFBFDFDFDFAFAFA -FDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFBF7FCFEFD -FCFCFCFFFEFAEFFCFF749BBB8EADC3ECFFFFF4FEEFFEFEF7FDFDF9FBFDF7FDFFFDFDFFFEFDFFFE -FDFFFEFDFFFEFBFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8D8D8A2A2A2FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFAFAFAF8F8F8D1D1D1D0D0D0 -F4F4F4FDFDFDFFFFFFDCDCDCD8D8D8FFFFFFDEDEDEEEEEEEECECECFBFBFBD3D3D3E0E0E0DDDDDD -D4D4D4F6F6F6F8F8F8D5D5D5FAFAFAFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCFFFFFF6B6B6BFFFFFFFFFFFFFFFFFFFEFFFEFDFEFDFFFFFF000000787878 -FFFFFFFDFEFEFDFEFCF8FBFEFFFFFFBCC4C7444F5299A1A6ACB0B8D9D9E2EEEAF4E6E5E8C6C8C8 -C3C2BFC0C0BDB9B8B8C3C3C5C1BFC4B6B5BAA9ADB2A4A8ABA8ACAEAAAEB1A8ACAFA1A6ABA19EAB -9794A1928F99666066D1CED1FFFFFFFBFAF7FDFCFAFEFDFAFEFDFAFDFDFAFEFBF9FDFEFDFBFEFD -FCFEFAFCFEFAFCFDF9FAFFF7FEFCFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFBFBFBFDFDFDFBFBFB -FBFBFAFCFCF9FAFAF8FEFEFCFEFFFAFCFEF6FAFFF1F2FAE6E7EFDBC1D7ACB8CD9DC2D7A5BFD8A2 -BCD4A0BED5A5C2DBA9CCDDB2BBC6A57C7F6D767970D7DAD6E5FEF4CCEBE6BBE1E3B2E3EE9ED4E5 -A0DAECA3D7E26C9FA338676178A186B6D7AEC6E3AEB7D5A2BCD9A7BCD7A3BCD3A1BDD19EC5D6A4 -C2D9AAC1D7AAC0D7A8BDD7A8BDD8A8BDD7AABBDC9FB9D6A2C1DAAEBECFB299A693DBE4DBF3F6EE -F6F7BCF0F3CFE8F4FAB0B5B35C4854644B585E4C6199919FEFF4E7EEF4E2ECF2E5F0F3E1FAFAFB -BABBC4A6ADA2A7B49CB2BFAAC4DFAEBED6A7BED3A6BBD1A4BDD8ABBADCABCFD3AB96B3A32F8F98 -00AEC210ABB521807DD5E7C4BED9B5B9D7AFC6E0B8CFDFB7D6DDB6D1E0C0AEC8A763876C3E7268 -6FA9B198D5EB76C0D061A0AB3A6B6DD5EAE2FFFFFFFFFFF3FFFFF1FFFFFFF8FBFDFCEDE3FCEAD9 -FCEDD9F4F4EDFDFFFFFEFFFFFCFFE8FFFFF6FFFFFFBDB1B9CBC1C0737D6F5E8E7278AE9C73A29A -76A49B6E9E95679894759C9C77999A7B9395699FA74B969C147C8B1E9AB419899C298C8EB5C4B7 -C9D4B6C1CFA4B2D4A9B0D2A9B8D0A5AFDAA2B4DCA3B2D89BB6D89CBAD8A2BAD4A3BED3A1C1D2A9 -C9D5B7F0F6E6FCFEF7FEFCFDF8F8F8FCFCFCFCFCFCFDFDFDFFFFFFFAFAFAFDFDFDFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFBF8FCFDFDFCFDFDFFFEFAEFFCFF -749BBBA5BED5F4FFFFF7FDEEFDFDF7FDFBF9FAFBF7FDFFFDFDFFFEFDFFFEFDFFFEFDFFFEFBFFFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8D8D8A2A2A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFBFBFBF9F9F9FFFFFFFFFFFFFBFBFBF9F9F9FAFAFA -FFFFFFFFFFFFFBFBFBFEFEFEFEFEFEFBFBFBFCFCFCFFFFFFFCFCFCFFFFFFFEFEFEFBFBFBFCFCFC -FFFFFFFBFBFBF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -FFFFFF6B6B6BFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF000000767576FFFFFFFDFAFBFFFDFD -F9FBFEFFFFFFC2C9C93D484998A6AAB1B7C1ADACBDA59EAEACA8B2C3C0C5DDDFD9EAEBE7DADAD9 -CFCFCFC9C9CBC6C7C8BEC1C5BABFC1B2B6BBA5A7AC9FA3A6989C9E97999F8E8F958E8E946B6970 -D2D3D4FFFFFFFAF9F7FCFBFAFDFCFBFCFBF9FFFDFBFFFEFBFBFEFCFCFEFDFCFEFAFCFEFAFCFDF9 -FAFFF7FEFCFDFEFEFEFDFDFDFDFDFDFDFDFDFDFDFCFCFCFEFBFBFDFFFFFDFDFEF9FDFEF7F7F7EF -F8FDF0F8FEF0F6FFEBE9F5DACCDABBBDCBA8C8E3B3BDD7A5BCD4A2C4DCAABED6A9C1D7B0CBDAB6 -94A1845F6653ADB1AFF6FEFFE4EEF8C1E8EAB9E7EDADE1EB9BD6E39FDCE187C1C34B7573527A71 -91B49FD1EEC5C5DFAFB8D39DBCDAA4BFDBA7C0DBA8C1D7A5C4D7A8C4D5A6BFD5A8BED7A8BDD8A8 -BDD8A8BBD8A8BBDAAABAD99DBAD7A3BED7AEC0D4B999AA93566655141B00645D074A43091B2F37 -76828C8F738AB997B8A286AE9E8EAA555946212A02525D301724002E372C7C848AA8B3A7A4B29C -AEBCA3C0DCA4C0D8A4C1D7A7BFD6A9BCD8ACBBDCADC7D4A19CC1A722899000AEC5039CB01D7783 -88C7B082C0AB81B9A584AE9A92B19E9FB6A37297893F6D5F49858089CFD781C7E07BC1E4327894 -427E9543717AC7E1D8E0EAD2D6D8B4CFDBB2D6DECEB7AFAB562D1D5C2B085A2D006C5F4BDBE0E5 -C3D2CEDCE4A8D8D8AAD8E0E8B0C0BCB6CCC850827A03675F0B82860A7E900080870685900B8B9D -0B849A0B7E91127E8F0A82980B8CA2069EBA0AAFD11299B43691A5AFDAC3BCDCB8C4DEAFB2DAAB -ACDAA8B4DEA6B7DFA0B5DC9EB4D798BBD89FBCD6A4BCD6ABBFCEA4CFDEBBEEF8E0FBFEF3FFFEFE -F9F6FEFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -FFFFFF919191070707E4E4E4FFFFFFFEFAF6FEFFFFFBFAFAFFFFFAEFFCFF749CBBACBFD8F8FFFF -FEFFF3FEFCF7FEFCF9FCFDF7FCFFFDFDFFFEFDFFFEFDFFFEFDFFFEFBFFFCFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFD8D8D8A2A2A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FDFDFDFFFFFFFDFDFDFEFEFEFFFFFFFEFEFEFFFFFFFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF6B6B6BFFFFFF -FFFFFFFFFFFFFFFCFDFDFCFDFFFFFF000000706E6EFFFFFFFAF4F5FAF8F8F4F6F7FBFFFFC7CDCD -49575895A5A48C949B9C9CAEB4ABBDB9B1BBCCC7C6BDC3BCC6CAC3CDD1CBDBE0DDDCDFDDCACDCD -BEC3C3ACAFB39DA0A9A8ABB29CA0A48D9090929D98919A968E9694585E5CCFD1D1FEFFFFFCF8FA -F8F4F6FDFBFCFCFAFBFFFCFDFFFEFEFBFEFBFCFEFDFCFEFAFCFEFAFCFDF9FAFFF7FEFCFDFDFEFE -FCFCFCFEFEFEFEFEFEFEFEFDFEFEFFFBFBFCF9FAF8FAFBF4FDFEF3FEFFF4EFF7E2F3FEE6E2EFD3 -C9D8B6C6D7AFC3D4AAB4D2A3BEDAA9B6D1A1B6CEA2D1E5C2BFD1B67E8872757C6BBAC1B8ECF8F9 -DFF3FAD3EBF5B6E3F1A9DCEAA5E1EE9ED7DD7FB2AD578579668671A6C2A8C1DAB6BBD0A5BFD7AA -C0DAACB6DAA3BADBA7BBD9A8BED8A9BFD6ABC1D4ABBED7ABBDD8ABBDD7ABBBD8ABBBD8ABBADAAB -BDD99EBAD7A5BAD3ACB9CFB396AB90657963535D33D0C75CB8AE643B545C8391A2896B87B791C8 -A587BDAF9CC06A6A54666E35C6CE8A7C92645967567B8588A6B3A7A1AF98A9B6A0C1DFA2C1D89F -C0D6A4C0D6A9BCD7ADBBDBAEBCD09D99BEA83491A000ADD109ADC9067686066E6B066B6A12686A -25656A1F545A052F38275C615D9CA16FBAC578C8DA85D1EE59A1C45D96B3A8DBF36B95A1748F80 -4B5D3C6673435A6E345F694C85726A9D5F47D28756CC8340967F5F9699A33E514C6E711D666421 -545A60758E81B5D9CF4C928D0B8E9019B7C710AFD116A4BD16A7C514A7CC13A5C715A2BE159DB0 -00B5BA01B3BE04BCCE00BACE009AA5249194A3D9B4B9DBA9C1D8A0B8D9A4B1DBA6B4DEA1BBDC9F -B6D69BBCDB9FC4DBABBFD2AABECEAEC7D5B6E4EFD5F4FCEAFEFEF8FFFEFEFCF8FEFCFCFBFCFEFC -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707 -E4E4E4FFFFFFFFFBF8FCFDFDFDFCFCFFFEFAEFFCFF749ABBB3C0DAF9FFFFFDFDF1FFFBF9FFFCFB -FEFFF9FBFFFDFBFFFEFBFFFEFBFFFEFBFFFEFBFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -D7D7D7A4A4A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C6C6CFFFFFFFFFFFFFFFFFFFDFBFE -FFFBFCFFFFFF000000716E6FFFFFFFFFF8FAFDFAFBF7F8FAFFFFFFCACFD13140447D8F8B98A2AA -A8A5B9BDB5C7E9E0E7F6F1ECF4FEF3F6FFF7FAFFFCE1E9E6E2E9E7F5FEFBE6EBE8D4D8DBBEC2CB -B9BDC49FA1A694969596A99D8394887F8C855B675FCED4D1F6FEFAFCF9FBFDFAFBFDFBFCFBFBFB -FEFDFDFFFEFEFBFDFCFCFDFCFCFDFBFAFCFAFAFCF9FAFFF7FEFDFEFDFEFEFDFEFEFCFDFCFCFDFD -FEFFFDFDFCFFF9F9FBF8F9F6FDFDF5FEFFF4FFFFF4F5FFE8E6F1D6CCDBBAB5C8A0B9CDA1C6DBAB -B6D8A9ABCB9BBAD6A8C6DFB8BDD0B37A8D75777970CAD0C9ECF3F1E0F2F7D4F3F7B7DDE3A5D6EC -B0E5FC98D5E878B0B4558075688873ADC6A3CDE2BAC9D9ADB4C598C0D9B0BDD8B5AFD9A3B6DCA7 -B8D9A9BBD7AEBED7B0BED6B1BFD6ABBDD7A9BCD7A9BAD9ABBAD9ABB9D9AABBD89DBFDCABBEDAB6 -B9D0B591A98C597257576432E5D865C4B86534505A7B8DA3896687B892D69E81C1B09EC7706D55 -6A6D2DDFE48E8EA874576852758284ADBCB2A6B79FACB9A3C0DFA1C1D79FBFD6A2C1D9ABBCD7AB -B7D8ADC2D3AA9EB9B3398DAD00A6D701BADF01A0B2129AA81D9BAA2D99AD3D92AA185E78074460 -72B1C580CADF73C7DD76CCE586D4F15198B97CAFCBC2EEFF688E99698375576D45A7B78298B46D -64704A846A5DB86B51F1955EED8E3FA1825A8787913F514BC2C15EA39D4B5E6368748C7ABBE0D5 -4A9794008D9909B8D506B9E907B7D202B7D800B5DB00B7D802BCCF03BBC304BFC513B4C314B7CD -03BECE01A1A428968CA3D5A4BAD69CC7CF91C3D69EBEDBA4C0DEA1BBD69FBBD59DC6DCA7C7D9AF -C1CDAEBBC6AEDDE8D1F2FCE9F9FDEFFCFCF6FEFCFBFFFBFFFBFBFBFDFEFEFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFEFCF9 -FAFAFAFEFEFEFFFEFAEFFCFF759CBBA6C2D8EFFFFFFAFFF3FDFEF6FEFCFAF9FEF8FEFDFDFEFCFE -FEFCFEFEFCFEFEFCFEFDFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBDBDB919191DFDFDF -D8D8D8D8D8D8D8D8D8D7D7D7D8D8D8D7D7D7D8D8D8D8D8D8D8D8D8D7D7D7D8D8D8D7D7D7D8D8D8 -D8D8D8D8D8D8D9D9D9D8D8D8D8D8D8D8D8D7D8D8D7D8D8D7D8D8D8D8D8D8D8D8D7D7D7D8D8D8D7 -D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 -D8D8D8D8D8D8D7D7D7D8D8D8E2E2E2626262FFFFFFFBFBFBFFFEFFFBFFF9FEFFFDFFFFFF000000 -676668FFFFFFFBFAF7FEFCFDFFFFFFF5FFF899B39B0024003D492E7E8879DFE3E7FFFFFFF4F4FF -E7E5EADFE7ECCBD9D3A8BCAB466149405B49A5BFB5CECFCBC8C7CFC2C0D1BBBAC9B7BEBFA6B1A5 -64766E3449351D38164B643FD3DECEFCFFFCF7FCFFF6F6FAFDFAFEFFF8FEFEFAFFFCFEFFFAFDF8 -FCFDF7FAFEF7FDFFF9FDFFF8FEFFF8FDFBF7FEFCF9FEFAFCFFFCFFFFFAFFFBF5FEF9F8F9FBFBF8 -FFFFF8FAFDEBF8FBE6F2F5DBCBE4BEB6CFA9B8D2A8CAE5B5BBD6A4BFD9A6C1DDAFC9E1BBCAE3C3 -94A8975F756A8EA29DEFF8F3EBFAF9E0F5FAC1E2E9A6CFD2B2E1DEA7D7EB95C1D16D959B466C5E -89AC94BBDDBECFE2A9B8CE96C0D7A2CBE3B2B5CC9CB7CFA2BCDFB0B9DBADB6DAAAB9DCABB7DBAB -B5D9A9B4D9A9B8DBACBADBACBCD7A9BDD6A9BDD6AABDD9B5BBD7A2B7D29BB8D0AE9BAD9B5D7062 -596A48E8D941BEA84736565879939193619FBE88CCA078C1AF9EC8686F476B7A28C7D57B798C56 -4C6C47739283ABB3AFAAAA98B8BE98C1D9A9BFD8A5C1D9A4BFD7A3C1DAACBFD7ADD3D2AC87BAAC -2598A601A7C903B0CF09B2CA21BDD715A2CA0F88B00058702D8CA177D3EF72C7E66FC9DF6BC5DE -7BC8EE8FD3F28CCCD767898D6B9099668C9379988B516842C1D498B9C9726466336D675FBD6D40 -FF8C32D98C3EA17A5A7782853B5D41EDE170C9AF54665E52738769BFD4C55783860768751A93A6 -0E8CA40D85990D849614889A158A9D118C9B0F8F9C089186128C8D158B910D8885077A6D2A8E7E -B9CEA7C4DAB0C3D8A6C6DCA3C0DDA1B7D99BB7DC9EBCDBA4BBD9A8C0D3B0C2D2B7D6E3CDF7FCEF -FCFEF5FBFDF8FBFBFAFCF9FFFEF9FFFAFAFAFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFCFBF6FEFFFFFBFBFAFFFCFA -EFFBFF7499BAA9C4DAEFFFFFF7FFEFFEFEF8FEFCFAF8FFF8FEFCFDFEFEFEFEFEFEFEFEFEFEFEFE -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9B4B4B4A2A2A2A4A4A4A2A2A2A5A5A5 -A1A1A1A3A3A3A2A2A2A4A4A4A4A4A4A3A3A3A2A2A2A2A2A2A2A2A2A5A5A5A4A4A4A3A3A3A5A5A5 -A4A4A4A3A3A4A2A2A1A2A2A1A2A2A1A4A4A3A3A3A2A3A2A1A2A2A3A2A2A2A2A2A2A2A2A2A2A2A2 -A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 -A3A3A3A0A0A0C0C0C0FFFFFFF9F9F9FDFCFCFBFFFAFEFFFDFFFFFF000000666567FFFFFFF8F1F6 -FBF7FAFFFFFFC4D2C03E5A39335A2C49663D4F674BB2C2B9DFE4E4CFD0D7C1BEC4C3CAC3A3B2A0 -394F3133512F48654748644CA2A6A2B9BAC0B1ADC0A5A5B4AAB1B18D988C203B1D47653F4B6C3B -2A471CAFC2A7FCFFFCFEFFFFFAFAFDFEFBFDFFF9FEFEFCFEFCFEFEFAFCF7FCFDF8FAFCF7FDFFF9 -FDFFF9FCFFF9FEFCF7FDFDF9FDFCFBFEFBFFFFFDFFFCFAFEFDF9FAFEFCF9FEFCF3F9FBEAECEDD6 -DCDDC4BFD6ABBFD6ABC6DCB0BAD2A2BAD2A0C1D8A6C9DEB4C7DCB59FB39464776595A99DE2F6F0 -E2EFEED0E1E5CBE3ECC0E3EDB4E0E8B0E2E79AC7CB699593466F6594B8A1BCDEBEBFE0BAC3DAA7 -BFD5A5C2D9AABFD6A9BCD3A8BCD3A9BBDAAABBD8ABBBD9AABBD8AABBD9AABCD9ABB6D8A9B9DAAC -BADAACBCD9ABBDD8ABBFD8ABC1D6B3C0D9A5BCD7A0BBD4B595AC995C76685E674EE9DA3DBFB13F -3B5969778C9F8A648DC590D0A67EC2B39FC6666A3D717C26CED67A80955D54724B799785A8ADAB -AEAE9FBCC4A2C2D9A8C0D7A4BED9A0BBDBA4BBDCABB8DAACD0D9B892BDAA2A8383038C9908A1B3 -06A5B8189CAD0F89A80370902586976CCCDB6CCAE36CC3D670C8D57CCFE086CDE98ECCDEA8DFE0 -55726B3253504B6B696D8A71536D36B5CD81A3B95D616A30767667BC6F41F6842BD48B3D9A8561 -7D8B9637533FE8DA51C1AC40626566888173CDC2BF6A7077275A632F717A2D6C7B317075326E75 -326E74316E742F71742D727348696948626C425E6B3C656640635B6B8073B6CCA4C2D8ADBDD1A0 -BBD39BBBDB9EB4D799B6D99EBDDCA6B6D2A5B5C9A8CDDFC5E7F6E0FBFFF5FAFDF4FAFBF7FCFCFC -FDFBFFFEFBFFFCFCFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDFFFFFF919191070707E4E4E4FFFFFFFDFDF8FBFEFDFCFDFDFFFDFAEFFBFF7498BAB2C7DF -F4FFFFF8FFF0FEFEF8FEFCFAF8FFF8FEFDFDFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -F8F8F8FAFAFAFDFCFDFBFFFAFEFFFDFFFFFF010101656465FFFFFFFEF5FEFFFFFFF4FAEF8CA17F -4265326F9B5D689B583C66353C5C3C6B7B6FADB2B0DEDCDFD5E0CB7C8E7049693A6B945E769C6B -37582D5D665E9C9FA19B9BA7B3B3BD929C975F705F3761276E9A5963914932591D6F8D64C1D6BE -E7EEEDFBFFFFFDFDFFFFF9FEFDFDFBFEFFF9FAFCF9FCFEFAFBFDFAFDFFFBFDFFFBFCFFFBFCFBFA -FCFDFAFCFDFAFCFCFBFFFFFFFDFDFFFFFEF8FEFDF6F8F8EBE9EBD6D7D9BDC2C4A7BED5A4C2D7A7 -BDD0A2B9CD9EBFD3A3D9EDBCBAC6A281916E6A795FBACBBCEBFDF6E2F5F0D4EAEECDE6F0C2DEEB -B3DBE6B7E4ED8ABFC5557E6A5D856D96BC9BC7ECC0BBDCADB7D4A6BBD5A7C5DEB2B7CFA5B9D2A8 -C5DCB2C7DEB5BBD3A4BED6A8BFD7AABCD4A6BFD7A9C1D8ABB9D7A6BCDAAABBD8A9BFDBABBFDBAB -BEDBABC7D5B3C6D8A7C3DCA7B4CEAF87A392537265605C4EE4DB3DC3C13E314D6A7C8DB58E7388 -B681BC8A62A0A08AAE6C6E3F6B721ADDE38698AD745673487D9683979895B6B6AAC2CBB0C5DAA9 -BFD7A6BCD89FB9DDA4B6E0ACB2DEAEB8D9AD9BC39F3C73571A6A5E26888A097582005C6502687D -3A9BB276D7DE6FCFD56FD1E275C7E086D8E87AC4D69AD3EDAAD9E86C9894546D5290A8977E978A -7C9470546F2BAFCE70AAC868677737767D66B87240FF913AD9944A99946A7B8DA53D4F41F0DD3F -C7B83B54656F867978D5C2C3A19997A2B4AABDDCCCC2DCD0C4DDC4C8DDC6C6D6C3C8DDC8C4DEC8 -C1DFC9BCE1C4BCDCC4B5DBC3ACE7C3A8E5B8ABDDACD2E2BDC3D6ABBCD39FB5D196B3D498B5DA9E -BAD9A5BDDAA9B8D4A9C6DABCDDF0DAEEFFECFAFDF9F4F7F1FBFCF9FEFEFEFFFDFFFFFBFFFEFEFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191 -070707E4E4E4FFFFFFFEFEF9F7FBFBFDFEFEFFFCF9EFFBFF7499BAB4C6DFF8FFFFFDFFF2FEFBF5 -FBFCFBFAFFF9FEFFFDFEFDFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDF7F7F7F8F8F8F4F4F4FCFCFCFBFBFBFEFEFEF8F8F8DBDBDBFFFFFF -FFFFFFFFFFFFFEFEFEFEFEFEFBFBFBFBFBFBFEFEFEF9FAF9FEFCFEFCFEFDF8FAF8FCFDFDFCFEFE -FCFEFDFCFEFDFAFBFEFBFCFEFAFBFDFEFEFFFCFEFFFBFCFDFBFAFDFDFDFFFDFDFFFCFDFFFCFDFF -FEFEFFF9F9FAFDFDFDFBFBFBFCFCFCFCFCFCFEFEFEFEFEFEFDFDFDFEFEFEFDFDFDFAFAFAFDFEFD -FBFDFAFDFEFBFFFFFF0E0F0E5B5A5BFFFFFFFFFEFFDCE2DA8295783F682F6D9D5560974760A14E -70A95F2F5D252D4825687761A9B0A24656312545116296506FAA5B5D964977AB622741212C3E2A -4E5850919A8F465D422D512963A14A6DAD5264A3436BA04E3761252F51267E8E7CEEF7EFFEFFFF -FAF8FBFDFBFAFDFCF6FDFFFDFDFFFBFAFCF9FAFCFAFDFFFCFDFFFBFCFCF9FCFCFBFCFCFAFEFEFA -FDFEF9FFFFFBFBFDF0F3F8E8E6EAD4CCD0B4C6CCA9C5CBA6C0D39FBFD19EC1D2A5C8D8AED2E2BB -B1C19B81886C89947ED2DFCEF4FFFFDBF4F3D2EBEFCCF0F9C3E6EFB2D7E2B3D9DE719A984B7470 -7D9E79B3D4A7C5E6B4B7D59DBBD9A5B4D09FB4D2A6B8D5A9C0DCB1C3DCB0BFD6AABACFA4C2D4A8 -C1D4A7C0D2A5C7D9ACC1D3A6C3D4A7BED9AABBD6A5BEDAAABBD7A7BBD7A7BAD8A6C9D7B4C3D6A3 -BCD59FB7D0B68DA99B5A7A715B5145D0CC4FACB741334D617D84B587717FAF75AD714586947EA5 -6B6F47616D22BDC6787E97634F6A438194817D7A75B3B0A2C8D3B7C0D5A5BFD6A4BFDBA1B7DBA3 -B2DBA8B2DEADACE2A3B1D79AA1BA88ABB9A0849896405A6721798454AABF78CFE474CED16CC6C7 -80D8E683C9EF86C4E2A9DDF897BBD961808E5A776BA7C08ED3E6C97D8A7B7F8D6E57692DC2D982 -A8C5705B6C316D725EAC6A36FC9239B16D278A835E7084943A4F3FEBDD4EC0BA4A557274768A8B -B0BAB58F9E8AA8CAA3BBDFB0BBD5A4B8D497BED79DBBD39CBBD39EBAD7A1B7D7A3C2CEA4C6CEA5 -BCCD9FBBE1ABB7E0A4B8D79BBFD1A8BCD4A5C0DBA5C3E0A5BBDAA0C0DDA7BCD2A8BACFA6C9DBBB -E3F3DCF3FFF1F4FFF5F8FCFAFCFEFDFDFDFEFBFBFCFCFAFDFFFCFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFF -FEFEF7FBFEFDFDFCFCFFFFFAF1FBFF7399B8BAC6E2FAFFFFFDFFF2FEFAF5FBFDFBF9FFF9FEFFFD -FEFDFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFEFEFEFBFBFBFEFEFEFAFAFAF3F3F3FEFEFEF0F0F0A2A2A2929292E1E1E1B1B1B1E2E2E2 -FFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFDF9FEFFFDFFFFFF -0A0B0A5E5D5EFFFFFFF8F9F98798833B5D30336A235C9D4864A74D61A0496CA45454813C52713D -4E643B677655445F323C682962A2505DAB4D58A04567A8534470364B6B3E3D52335368473D6230 -30632064AE505AA33F61A83F62A14443732B345D26617957DBEAD5FEFFFEFCFAFEFDFAFFFDFCFB -FDFFFEFDFFFEFAFCFBFAFCFCFDFFFEFDFFFEFBFDFAFBFEFBFBFDF8FCFEF8FCFEF7FFFFFAEAF4E1 -DDE6D1CDD9BDBFCBA7BECCA3CBD9AECAD9A7C9D8AAC6D4AAC8D5B2A5B194717E629BA192DFE9DD -F4FFFCD7F0F2CDEDF3C4E6F2B3E3EBB7E2EAABD3D871938C54715F8AA68BC2DDB3BFDBAAC4E1A8 -BDD79CC2DBA9C4DAB2B3D6A8B7D9AABCD8AABFD9A9BED4A3C3DAA9C1D4A7C1D5A7C1D5A6C2D7A9 -C2D5A8C0D5A6C1D7A8C0D7A7BED7A8BDD8A7BBD9A7BBDAA6C1D6B1C2DAA5BED8A2B3C9B297ADA5 -768E8B3B342274752850600A5A71748B8BB68E7088CE8FC89265A7A38CBC869176364A0F587035 -445830657E5DA0B09F6E685FB5B29FCCD7B4C2D9A8C6DEABBDD9A0B7D6A0B7D8A7B2D4A8B9DEA8 -C9E7B8CCE0BFA2B1A96A818A5B748762B8CE74C8E66AC1DA75CCD17FD1D681CEDD8CC5E39ED1E4 -92BAC9597582637F74AACBA3D1EEB3C6DAB9848B8282837960653FC2CC8CAAC3805B673C6F7365 -B87141F68A338A44037E654B7588863A5C41E3E17AACAD584B6E5C668184899A9293A68DB1D8A8 -BBE3ACBED9A4B4D690B8D695BDD99CBEDBA1BDDFA7B9E1A8BEDCA9C3D8A8BCD6A3ABD89CB7E1A6 -C3DCA7B9D4A5B9D6A4BDDEA4BCDB9FC2DAA6CADCACC5CDAAC2CBABDAE3C9F5FDEEF7FEF5F8FCF8 -F9FCFFFCFCFFFDFDFFFDFCFFFCFAFDFEFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFEFEF8FBFEFDFDFCFD -FFFEFAF1FBFF7399B8BFC9E4FDFFFFFEFDF0FEFBF5FBFEFCF9FFF9FEFFFDFEFCFEFEFEFEFEFEFE -FCFEFEFCFDFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFEFEFE -FFFFFFFCFCFCFCFCFCFEFEFEFCFCFCFFFFFFE1E1E1A2A2A20000002D2D2DFFFFFFEAEAEABCBCBC -AFAEAFB1B1B1B1B1B0AAB0B3ACB1B4ABB0B3ABAFB2A9B0B1A9AEB1ACB1B4AAB0B4AAB0B4AAB0B4 -ACB1B5AEB4B7ADACB0ADABB0AAA9AEABA9AFABA9AFA9A7AFB0B0AFB1B1B1AFAFAFB0B0B0AFAFAF -B2B2B2AEAEAEAEAEAEAFAFAFAEAEAEAFAFB0CBCBCAFFFFFEFEFFFDFFFFFF1B1B1A515052FFFBFF -F6FAF3678062618D5764A6565AA44C61AF515F98436397466F9C5076995A4A622D283A10779566 -6B9F5D5CA74E49A23D55A94659A44769A156709A5C4863341C39096A9A5566A34F54A64855A43E -5BAA3D5CA03B69A151618F51557040A3B596F6FDF6FDF9FFFDFAFFFDFDFFFEFFFDFBFEFDF9FBFB -FAFDFBFDFEFEFDFEFEF9FDFBF9FFFCFAFEFAF9FEF7F9FDF3F4F7EEC1D1B9C0D0B6C5D4B5C0D2AC -BECFA4C4D9A9C9D5A7CBD5AAD0DBB39AA286788067A5AC96FAFFF7F4FCF7DFF3F3D0EBF5BCE1EF -B1D9EDB1EAF198CAD05D8988547160A4B99BCADBB0C5DDB3C3DBA8C6DDA2BFD59CBED3A7C0D2B3 -B5DCABB7DCA8B9D9A5BED9A5C1D8A1C2D8A0C1DAA7C0D8A7C0D8A7BFD7A6C2D9A7BCD4A2C1D5A3 -C5D8A7BED6A3BED8A5BBD9A5BADAA5BBD6AFC1DDA7BCD7A4B3CAB59BABAA9EAFB337311D414119 -2535009BB3A4A8A1C48F6C92CF8BC6A777C0A997CBB0BFAF304C21274B202A3A1A82997FABB7A8 -746C5EB4AF97CEDDB4BED7A5C4DDA9C2DCA5B4CE99BDD6A8BDD4AAC7CEAFC5D2BF95ABA7396571 -49849A79BED468C0DD69C3E76EC7E77CD0DA82CDD78DCEE4A5D5DF81AEAC587B73769184BBDAB4 -B8E098BCDD9DC5DBB981828390878C4E4939737449647442646A4B777773BA7142FC8F39BA7431 -A87C6E839683154320777E3C6E70354A734D808792757471ABB09BC8DEB3BDD7A6C7D5A9C1D999 -C6DA9FC6D49FC1D4A2C1D7A8BDD8A9B1DAA9BDDAAABEDCAAADD6A1BDDFADC6D4A8B5D5A4B5D8A1 -BBDFA5BFDDA4C5D6A5C2CC9FCACBAED9DABEF0F1DCFFFFF7F9FBF5FCFCFBFAFDFFFCFDFFFFFEFF -FFFEFFFCFAFEFEF9FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFCFEFDFFFFFF919191070707E4E3E4FFFFFFFEFEF8FBFEFDFDFCFBFFFEFAF0FBFF7399B8 -B7C4DAF8FFFFFDFEF8FFFAFEFDFCFFF8FFF9FAFDFCFBFDFCFCFCFCFEFEFEFFFBFEFFFBFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCFFFFFFC4C4C41E1E1E131313B3B3B3CDCCCC5A5E5D7072716C70706C726F -6E71727074736D71736E717772757B73757D70737773747B72757A75787D73767B73757B707578 -73767974787B74797C757A7C787C7E7777787979797C7C7C7B7B7B7D7D7D7B7B7B828282818181 -8282827D7D7D6F6F6F747474FFFFFFFAFAFBFFFFFF1A1A1E535255FFFFFFE5EBDD6A865F4A833C -56A54461AD4F5A9E485F9F4A60A03F5F993A76A25E577F411D410061903E65A14D5CA84D52A546 -54A44557A243649F4373A4535E853E1F490057903A67AC4D60A0395DA73858AB3358A63365A33E -78A64D4A6B3858704CEAEFE2FFFDFFFFF6FFFFF1FFFAFDF7FEFEF9FEFEFBFCFBFAFFFCFFFFFDFE -FEFBFEFEFDFCFBFEF6EDFDE8E4F7DFC4DCBEB0CDAEB8D4B2BBD4B0B5CD9EC4D8A7C7DBA7C8CAA3 -C2C7A38F967C788174BECCC4F7FFFFE0F2F6D7EFF3C7EAECB7E1E4BFEAEEBAE5EB7FB0B358817C -62816FB7D3A9C6E1A6C7E49FB8D5A0BBD7A2BDDAA4B9D69FBEDBA4BCD8A2BBDDA2BADAA1BDDFA5 -B8D99FB9DBA0BADBA1BBD7AABCD8A9BCD7A9BEDBAABED9AABEDBABBCDBA9BBD9A9BCDAA9BCDBA9 -BDDAA9BEDBA8B6DAA2BADBA7B9D5A8BED2B07A8A6F7A867146633569995A498638587C497E7774 -926592C687C0B97EB59B7E9D648D6D4777437F9869507D454E714B566C586A786AACBAA1CCDAB5 -BBD5A2BCD19FC5D3A6C5D2A9CDDDB3CFE0B5B5CBB576978B4476775197A969B8D472C5E567C6E7 -6FCCEC77D3EF7ECADE93D2DA9BD3D36D97895D8073809988C9DDBAC8DDAAC1DA97B2D397C4D2B5 -989797BEB4BA3F3F2E333B111641006F9367AB9D7FC76526F9843CD97C36A78B75C9C5A7375323 -0C3B0022420A686F50B8BABC69796A99B396C7E7B8B8D09FC8D9A6B6CB96C5DAA7C1DAA7BFD6A8 -BDD8AABED6ACBAD8B1BAD7B0B8D8ADBCDBABBEDDACBBDBA7B2D5A3B7D9A8C2E2ADC3D9A9BFCFA4 -C8CEA9D2D6BEECEFDBF8FCE9FFFFF5FEFFFAFEFEFCFCFCF9FFFFFCFFFFFDFFFFFCFFFFFCFCFDFA -FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFBFDFFFFFF -919191070907E4E5E4FFFFFFFDFEF6FBFEFBFCFCF9FFFFFBF2FDFF7197B4B7C7DBF8FFFFFDFEF7 -FFFAFDFDFDFFF9FFF9FAFDFCFBFDFCFCFCFCFEFEFEFFFDFEFFFBFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFB -FCFCFCFEFEFEFFFFFFFFFFFFF4F4F4BBBABB969896DFE2E1D4D8D7D3DBD7D7DBDCD9DDDDD8DCDF -DADDE1DDE0E5DBDEE7E0E3E7E2E5EAE0E3E8E2E5EAE1E4E9EBEEF3ECF1F3EDF1F4EEF2F5EFF3F6 -F1F5F8F1F5F7F6F4F5F4F4F4F2F2F2F8F8F8FCFCFCFDFDFDFEFEFEFFFFFFFDFDFDFFFFFFAFAFAF -646464FFFFFFFEFEFDFFFFFF212123504F52FFFFFF949D8E405F364983395AA44460A9465B9E40 -5D9D4167A540619C3A699C50416F292451025C923462A2425AA64056A93F57A53C5DA63C69A149 -6B9A4E466C292F561558893D67A150599E3059A62F5BAE3156A63053983068A14460844B4C673D -EFF2EAFFFFFFFEF9FFFFF6FFFBFBFBFEFEFDFEFEFCFDFCFCFDFCFDFDFBFCFFFEFCFEFFFAF5FCEE -DFF1D2C8DFBAB8D3A9BCDBABB8D4A7B7D0A3C2D8A9C2D3A6D1E5B6BABB9D83886E707865DEEAE0 -F8FFFFDFEEF2D4F0F2C9EBECBDE4E5BCE5E5B4DBDD81A6AA4C737176988FB7D3BDC0DBB1BDDDA2 -B6D893B0D197BCDDA2BCDDA2B4D69ABBDBA1BDDFA3BBD8A0BBD9A2BEDCA5BAD9A2BBD9A2BADAA2 -BDD7A9BCD9A9BCD8A9BCD8A9BCD8A9BCD9A9BCD8A7BCD8A7BCD8A7BCD8A7BCD8A7BDD8A8B7DAA4 -B6D6A2BFDCACBBD1A74B5D384B59395B8D5365AA5D4DA145366F2F465043896785CC8AC5B176AE -6B51693B5F355789487DA3636A9C604B74471B391B51664EBBD2AFBDD4A7BCD9A1BFD6A3BBCEA2 -C1D9B0C4DFB9A9C7A15D837640706C66A4AA78C4DA6FC2DE6EC5E66EC4E67BCDED7ECDE68DD0DB -8EC7C66799905E816B95B39FC3DAC4C5DCB9BDD5A5BAD79CB8D79CC9DCB8818A7B818E7C576E46 -7092524B8327517D43817950C56B2CF48339E7803B957C649B9B77547840588E415178395D7148 -81868562736298B391C8E8B9B9D3A1BFD2A1B9CD9AC6DDAABFD7A5BED8A8BDD8A9BED7A9BCD7AD -BBD8ADBBD8ABBCD8A9BCDAA9BBD8A6B6D7A9B8D9A9BDDDAABCD3A5C2D0A9CDD2B1E7EAD5FAFEE9 -FCFDF0FEFFF6FEFEFAFEFEFBFCFCFAFFFFFCFFFFFCFFFFFCFFFFFCFCFCF9FCFCFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFDFFFFFF919191070807E4E5E4 -FFFFFFFDFEF7FBFEFBFCFCF9FFFFFBF0FDFF7297B5B7C5DAF9FFFFFEFEF8FFFAFDFDFDFFF9FFF9 -F9FDFCFBFDFCFCFCFCFEFEFEFFFDFEFFFBFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -FDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCFFFFFFFAFAFAFCFCFC -FFFFFFEDEDEDA1A1A1B8BAB9D2D5D4CCD0CFCAD1CDD2D5D7D5D9D9D4D9DBD6D9DED8DBE1D7DAE2 -DEE1E5DDE0E5DEE1E6E2E5EAE1E4E9DFE2E9E0E5E7E3E7EAE2E6E9E4E8EBE5E9EEE6EAECECEBEB -EDEDEDEFEFEFEBEBEBF3F3F3FAFAFAF5F5F5FBFBFBF6F6F6F9F9F98888885F5F5FFFFFFFFCFCF9 -FFFFFF28282A4A494DFFFFFF5865563A59306FA25968AC4A65A84466A44767A24470AB446BA443 -6CA25630651A49802969A54066A94266AD4364B04261A83A6AAC4074A9516697482E5A16568142 -6E9D576EA2555EA93861AE3962B13965B13E5DA23D60A045648749456033EBF2E6FFFFFFFDFBFF -FBF9FFFBFCFDFEFEFFFDFEFFFBFDFDFAFEFCF9FCF9F8FDF3F3FCEAE1EDD4C7DCB1BAD3A0C2DEA5 -B7D697B6D498BED6A1CCDFB3D0DFB79CAD85787767929687D6DED4F6FFFFDFEFF4D9EBF5C7EFEE -BBE3E4BDE7E4B1D9D47598924E6E6886A094BCD3C2BAD1B6B7D1A6B8D8A0B4DC9AB3D698BDDFA2 -BBDDA0B4D79ABADC9FB7DB9DBCD8A1BAD7A1BDDAA4BCD9A2BCD9A2BCDAA3BDD7A7BDD9A8BCD9A8 -B9D5A6BBD7A7BAD7A5BCD6A5BBD6A4BCD7A4BBD6A4BBD6A4BCD6A4BADAA5BCDAA6C8E3B1BED9A5 -4A5F2D4A5D2C73AE6A63B25957B54E5A9E5449594183667CD196D2B284B75B4B585B79466EA153 -6BA2506AA4636C9E680F360D486543C3DEB4C5E2AFC2DEA4BCD8A4BEDBACBBDEBA97C1A1548265 -3B797B64A8AD6CB9C975CBE271CBE768C6E383CCEA88CEE79EDEEC89BEBC5582745A816CB3CBAA -C7E0C0C5DEBCBAD3AABCD8AABADAA6C1DDA4CFE6BB51694832552A4A7D3A6AA9515AA03A2C5F16 -494C14AA5D20F08844F389477B644750542C49743671B35D588E42466B35373E3454664FA3BF99 -C2E5B2B9D3A2BCD1A2BDD29FC2D8A5C2DAA9BED6A7BDD6A8BED6A8BBD8AABCD9ABBCD9A8BCD9A9 -BBD7A6BBD7A8BCDAAEBCDCAEBBD7A8BAD1A5C9D4B2E0E3C8F3F5E6FDFFF0FBFDF1FEFFF7FEFFFB -FEFEFEFCFCFAFFFFFDFFFFFDFFFFFDFFFFFDFCFCFAFCFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFEFFFFFF919191070807E4E5E4FFFFFFFDFEF7FBFEFB -FCFCF9FFFFFBF1FDFF7297B5B8C8DCF9FFFFFBFCF6FFFBFDFDFCFFF9FFF9F9FCFDFCFEFDFDFCFB -FEFEFEFFFDFEFFFBFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFDFDFDFCFCFCFAFAFAFCFCFCFFFFFFDADADA787878 -D6D8D7CACDCCCDD0D0CFD5D3D3D6D8D5D9D9D4D9DCD4D7DDD8DBE1D9DCE4D6D9DDDADDE2D9DCE1 -DFE2E7DBDEE3D9DCE1DDE2E4DFE3E6E0E4E7E4E8EBE5E9ECE4EAECE6E5E6EAEAEAEEEEEEEEEEEE -F4F4F4F2F2F2F2F2F2F5F5F5F0F0F0F5F5F58383836F6F6FFFFFFFF8F8F4FFFFFF2D2D2C49494A -FFFFFF566153475B3A6A8F524D7B2E4F7E326089424E7C3253843656883F5488541B541B468139 -4C8A38508D3C528E3C528A3651832F5B843453883550863C15501355925B5090574C884D52994B -4D903C4D88325589375C9046518541496935465F3AE8F2E4FCFFFEFDFEFFFBFFFDFEFBFEFDFBFD -FCFDFAF9FEF9F9FEF7F5FEF6EAF9DDD6E6C7BFD4ACB5CD9AB9D59BB9D898B5D290BEDA9DC7DEAB -C1CFAC93A085757E69B2B3ADF9FAF9FAFFFFE0F1F9D7EDF9CEE4F5C4F0ECC0ECE5A0CBBD597F6B -617E69ABC1ABC6D7B8C5D6B5C9D9B3C1D8AAC0E1A9BBE2A5B7D99DB6D79CBDDEA3BADBA0BADBA0 -BADC9FBDD7A7BBD7A5BCD8A6BCD8A6BCD8A6BCD8A5BCD9A4BDD8A5BDD8A4BDD8A5BDD8A5BBD9A6 -C0DAA5BFDAA4BCD7A1BED8A4BDD8A3BED8A2BDD8A6C2DEA9C4DFA9AFC9924E682D435D215F8E4E -4C87354E8F325685413F4D37584B5B8380B2747A9D2030304F6933669142548C39467D3D629258 -193D0F67855BCDE9BAB9D5A3B9D9A0C2E4B4BEE3BF78AB952F6F63448C8373C8D470C8D772CDE0 -6DC9DF6DC6DC77CEE195D2E29BD3DB81B0AC4D735C749674B6D3AED0DFB4C4D9ABB5CF9EB8D2A3 -BDD9ABBED9ADC4D8A6C6DEB1425F303F6C2E6CA4565FA04662A94B6594495058208B6030E6A472 -ED9F6B4C3A1A515B3364955465AE5372AE5B7CA96C27301C495D3DADCE9FBEE3B0BAD6A5BCD3A3 -C5D8A9BAD1A3BED4A6BFD8A6BDD9A4BDD8A4BEDAA7BDDAA8BAD7A6BBD6A6BBD6A6BDD9A8BFDAB4 -B8D4AAB3CFA6BECFADDEE5CFF5F4E6FFFFF8FDFFF5FEFFF8FEFDFAFBFBFAFEFEFDFCFCFAFFFFFD -FFFFFDFCFCFAFEFEFCFEFEFBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFAFBFFFFFF909090070907E4E5E4FFFFFFFDFEF7FBFEFBFCFCF9FFFFFBF1FDFF -7297B5BAC9DEF9FFFFFCFDF7FFFAFDFDFDFFF9FFF9F9FCFDFCFEFDFDFCFBFEFEFEFFFDFEFFFBFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDFDFDFDFAFAFAFFFFFFFEFEFEFFFFFFCCCCCC908F90D2D4D3CCCECDCDD1D0 -CDD3D0D0D4D6D4D8D8D3D7DAD5D8DFD6D9DFD4D7DFD5D8DDD7DADFD9DCE1DBDEE3DDE0E5DDDFE6 -E0E4E6E1E5E8E0E4E7E4E8EBE6EAEDE4EAECE9E8E9EBEBEBECECECEFEFEFF1F1F1F1F1F1F8F8F8 -F0F0F0FBFBFBC9C9C99A9A9A7F7F7FFFFFFFFCFDF7FFFFFF383836434342FFFFFF9296905C6750 -556B3E54703A546E3E5B744B4E6C3F547446375D37315C491F5136306A3E366C3D4C7D4F446E42 -34562A5D794D5E73482F5F301F58300950321C6B5714634D14614B226240275A34436A3D4E683B -5A70485B745058724E7D8E77F6F8F4FEFEFFFEFEFCFCFFF8FDFBFAFEFCF9FCFFF6F3FCEEF1FEED -EBF8E5CAE2B9BDD5ABB8D1A2B4D19CBFDCA2C0DEA2BED8A3C9E2B1C7D8B387947E747D6FB7BFB8 -FFFFFFFAFEFFE8F2F7D8ECF4CDE6F2C3E1EFBEE1DC94B9AD5E8471749476ABC39ECCDFB6C7D6AB -C1D0A6C2D2A5C3D5A6BFDBA7BBDDA6B7D19EB7D19EB9D3A1BED9A6BED9A5BED7A6BCD7A8BCD5A6 -BED8A8BDD6A8BDD6A8BED7A8BBD9A4BCD8A4BCD9A4BCD8A4BCD8A4BBD9A3C1D9A4C0D9A3BED6A1 -C0D8A2BFD7A2BFD8A2BDD7A1C0DCA5C1DCA6B5CF9974915959733B4A78424C763252772B5F7E48 -3D58471A333D245D81235E7212433E5771405C793950813F4373385377434763349AAE85C8DBAF -B4C699C5E5B2B0D4AA6793763C79724F9DA168C2CB70CEDD60BED06AC9DA74CEDC7BCED88FDCE3 -8DCBCB61968D4A765F89A985C4DEB5C8E3B6BCCB9CBCD19CC9E4ABB8D49BC0D6A5C5D5AAC9D9AD -C0D2A6455F2F4E6E376B905069914859924A7B9E614F5A2C68593CB59879B98F68443516596741 -6295574B9138679E4F7498602F3D1C607851B8DAA8B7DDA8B6D5A4BFD8ABC4D5AABCD2A5C0D8A8 -BFD7A4BED9A4BCD7A3BFDAA4BFDAA4BCD7A5BED7A8BDD7A8BED8AABED8B2B8D1ACBCD4ADCDDCC1 -F0F5E5FFFDF6FDFEF8FCFDF9FCFDF9FCFBFAF9F9FAFCFCFCFCFCFAFFFFFDFFFFFDFCFCFAFEFEFC -FEFEFAFCFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFAFB -FFFFFF909090070907E4E5E4FFFFFFFDFEF7FBFEFBFCFCF9FFFFFBF1FDFF7297B5BCCCE0F8FFFF -FFFEF8FEFBFDFDFDFFF9FFF9F9FCFDFCFEFBFBFCFBFEFEFEFFFDFEFFFBFCFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE -FEFEFEFBFAFAFBFBFBFEFDFDF7F8F7A1A2A2B5B3B4C9CBCACED0CFCBCFCECBD1CED1D4D6D3D7D8 -D2D6DAD2D5DBD5D6DED6D9E1D7D9DEDADDE2DBDDE3E1E4EAE0E4E9E0E2E8E0E6E8E0E6E9DFE4E7 -E2E8EBE5EAEDE5EAECEBEAEAEAEBEAEAEAEAEFEFEFEDEDEDF2F2F2F5F5F5F3F3F3FFFFFF969696 -AFAFAF838283FFFFFFFCFDF6FFFFFF383A393F3F3FFCFCFDE3E0E0C6C9BBB0BB9BBACAA4BAC8AC -BECAB8B4C6B4B8CDBA759286597C8275A29F73AB9182B19C9EC8B580A0916A7D70C4D1C6C8CEC2 -6F9A91356E6B367F87328B9B308A993990A33F76754E777299AEA2C5C7B7BFC1B3BFC3B7BBCEBA -D3DDD3FCFEFDFDFBFFFFFEFBFDFFF6FFFCF6FDFEF5FDFFF5F6FFEFE5F4DACFE2C5B8D3A1B8D4A2 -BDDAA8BFDDA8BEDCA6BCDBA4D1E9BDADC29F7382677D887BCAD0CDF6FAFEFAF9FBE7EAECDBE7EB -D8EFF7C9E4F0C7EAF696B1AB466557709077BAD9B0C4DAABC1D49EC2D39FC1CF9DC1CE9CC2D4A1 -C2D8A6B9D7A3BED3A6BBD1A3BED3A6C1D6A9BFD6A8C1D6A8BBD8A8BBD5A6BDD8A8BDD7A6BDD7A7 -BDD8A7BCD9A3BBD9A2BCD9A2BCDAA1BCDAA1BBD8A2C3DAA2C0D8A2BFD79FC1D8A2C0D8A0C1D7A0 -BCD69DC1DAA2BED9A2BDD7A6A5BF8F9DB4847DB78395BB7E99B06F9FBB8E5F917F2464682588A4 -117481317C729AB0879FB2808BB48191B87F96B4829CAF85C1CCA6D0D7B1DAE1B9A7C797648861 -3D6B545EA5A56CC3D260C6DC69CEDB62C6D36FD1DF7AD2D88FDCDD8CD3CF4A897A4C816B86B08E -CEEABFC6DEB0C3DBACC5D7A5C3DBA0C2DE9FBED999C4D39ECCD3A6C6D2ABCDDCB1677949445928 -43541F56662D3A642D4B5D2E363C1A2D2E1E5B56436051333E2B11404E2B366A2F296C15326417 -3F5E2833421F769065BBDFA8B7DFA8B3D3A2BFD8AAC5D6ADBCD2A7C1D9A9BFD7A4BCD7A4BCD7A2 -BFDAA1BFDAA3BCD7A3C2DDAEBED9A9BED7AABCD5B1B5D1AAC4DFBAE4F2D8F9FCEFFFFBF8FFFEFB -FCFCFBFAFAFAFCFCFBF9F9FAFBFBFBFCFCFAFFFFFDFFFFFDFCFCFAFEFEFCFEFEFBFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF9FBFFFFFF909090070907 -E4E5E4FFFFFFFDFEF7FBFEFBFCFCF9FFFFFBF1FDFF7297B5C6D0E8F5FFFEF9FCF5FDFDFDFDFBFF -FCFDF8FAFFFEFDFFFEFEFEFEFDFEFEFFFDFEFFFBFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFBFBF6F8F8F8FAF9 -FEFFFFE9EFED767D75CDD1CDCCD0CFCCD0D0CFD3D5D1D5D7CFD3D3D2D6D7D2D6D7D5D9D9D6DADC -D5D9DAD7DBDBD9DDDED7DBDCDCE0E1DEE2E3DFE5E4E6E5EAE4E4E9E8E8EDE4E5E9E7E7EBE6E7EB -E9E9EAECECEBEAEAEAF0F0F0F0F0F0F2F2F2EFEFEFF4F4F4FFFFFF787878B7B7B7848484FFFFFF -FEFCFAFFFFFF4C4845343236F4F3F4FFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -AAB0BF81A8C9ADE0F9B0E0ECCDF1FFE9FEFFC9CFDFB1B0BDFFFFFFFFFFFFA6CEDA5C9EB052B4CE -4DC3E259CAE75CCAE25BA9BB89ACBDF5F1FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEF8F7 -FFFEFFFEFDFFFEFFF9FFFFF3FAF9E5E4EDD1C5D8BAB4D0B0B8D1A6C2D7AECADCB5C9D7B1C6D4AD -CBD4AFA1AD986D78667F8C80F0F7F5FFFFFFEBF4FCEAEAECDCE6E5CEE5E0C6E5DCBEDDD478958D -5F74609DB098C5D4B4C8E1B4BDE4AEAAE0A2C1CA9CCBD9AEC8D7B0C0D3A7C2D7A8C4DBA5CADAAA -C7D6A8C6D3A8C7D2A7CAD4ABCAD2AAC1D8A7C2D8A5BFD4A1C4DAA5C1D8A1C2D9A1BFD7A1C5DBA7 -C1D6A5C1DAAAC1D7A8C6DCADBAD5A3C0DBA8BDD7A6BAD5A5BED9A8C1DBACC3DAAEC6DBADBFDAA7 -BBDF9FB8E9A1B3EFA0C1E6ADCDEAB7D4DFACDAEAB980B99920877D17BCC514958B52A088CAEAC2 -DDE6BAE3E1B7D2E4BFCCDAB7D3E1BBCBDBB9C2D7B99BB29734756248857B72AFB085C3D07EBFCF -78B9CB89C8D597C6DAA3CEE4A4D5E388B2BA59737D698D7DAECFBACDEACDC2D9B4CCDBB9C4D0B1 -CDD8B5CEDCB6BDD3A8BDDBB2BADEBAB6E0C3BEDAC3C9E4C4ACC69D91AE8396B79693B59D90B599 -7DB7915F8F7617665F227D7534505566856689B07E8DB87B87B27E85AC7A8DB37397AF89AFC89F -C0D7ACC4D9ACC1D6A6C2D6A5C4D6A8C1D9A9BDDAA5BCDBA4BDDBA2BFDAA1BBD8A6BDD8A2BDD9A1 -BDD4A0C2D6A8BFD3AABCD2B0CADBBFDFECD4F6FDF0FCFDF6FBFCF7FEFEFFFEFDFFFEFDFFFAFAFF -FCFBFFFAFAFFFCFCFAFFFFFBFFFFFDFFFFFDFFFFFDFCFCFAFCFCFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFEFEFFFFFF919191070807E3E5E4FEFFFFFDFEF7 -FBFEFBFCFCF9FFFFFBF1FDFF7297B5CCD7EDF5FEFDFCFFF8FDFBFBFDFBFFFCFDF8FAFFFEFDFFFE -FEFDFEFDFEFEFFFDFEFFFBFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFCFDFAFBFAFAFBFAFEFFFFE0E5E37F847F -C7CCC8CACECCC9CDCCCCD0D1CCD0D3D0D4D5D2D6D7D3D7D8D2D6D7D6DADAD5D9D9D7DBDCD8DCDD -D9DDDEDADEDFDCE0E1DEE3E3DFE0E5DEDFE3E1E2E6E4E5E9E5E6EAE4E6E9EBEBEBECECEBECECEC -EDEDEDF4F4F4F4F4F4F6F6F6F7F7F7E8E8E8808080B4B4B4828383FFFFFFFCFDF8FFFFFF4D4D48 -333236F4F3F5FDFFFFFDFEF9FDFDF6FAFBF3FCFCF9FCFCFCF6F6F6FFFFFF929FAA7AA7C19CD4E9 -A3D5DFB7DBE2DCF5FEB2BDC893959EFFFFFFFFFFFF96C3C75397A24CB0C348C0D84BC0D758C5D7 -52A5B676A1B3E0EAF7FFFFFFFEFFFFFFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFF -FAFFF8EBF5E4D4E4CBC2D9BEBEDDC1C8E0BECBDFBECCDDBED0DFC0CBD8BA9CA6897B8774A2AE9D -E7F4E7F9FFFFE8F4F7E0ECF3D3E2E5CEE5E5CBEBE7A3CAC56A958F638D88A9C5B5D3F0DEC8E3CB -C2E5C3BDEBBFB2E7B5C4E8BFC1E4BEC3E5C3BFE1BDC2E5BDC3E8B9CBE1BFC8DEBAC8DBB8CFE0BE -D2E1C2CFDBBECBDFB8D0E3BCD5E8C1CFE2B9CCE0B5CEE2B4D1E5BBCFE3BBC5DBB2CDE3BDC8DFB9 -C7E0BBC7E0BAC5DDB8C5DFBBC5E0BBC5E0BEC5E1BEC7E1C0C9E3BFCAE4BEC3E3B6BDE8B3B7EAB1 -C4E6BEC7E3C0D2E4C0CFE5C37AB39E26848220B0C1259195569D90C3E2C6CAE0C2D4E7C9C5E9C9 -BCDDBDCBECCCB3D8BD78A38E4E7B6B3E8D8478C2C07AC1C93D829632758B377A923C7483437A8D -427C903F8092235968093947517B79618A84577D725C7E6F5B7A6D5D7A70507A77537F79558579 -4D82764B847A4A837C5181844E7C775685795D8C7F55888352888A4D8A8951A497358682138B8E -2BB9B52E848A82AC89BAE3B4C8E8B4C7E1B9C2E3B5BAE5AAC6DFB3C2DDB0BED4A8C2DAABC4DAA9 -C4D9A7C5D5A9C0D9A8BDDBA6BBDBA4BCDBA4BFDAA1BDD7A6BDD9A3BFD8A1BDD4A2BED2A7B8CCA5 -BDCFB3D7E7CCECFAE5FCFFF6FDFEF8FCFDF9FEFEFFFEFEFFFEFEFFFCFCFEFCFCFEFCFCFEFCFCFA -FFFFFBFFFFFDFFFFFDFFFFFDFCFCFAFCFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDFFFFFF909191080807E3E5E4FDFFFFFDFEF7FBFEFBFCFCF9FFFFFB -F1FDFF7297B5CAD3E9F7FFFFFDFEF8FDFBFBFDFBFFFCFEF8FAFFFEFDFFFEFEFDFEFDFEFEFFFDFE -FFFBFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFDFDFDFFFDFDFEFDF6F9F9C2C9C69CA19BC6CBC7C7CBCACBCFCD -CDD1D2CDD1D5D0D4D5D3D7D8D3D7D8D5D9DADADEDFDADEDFDBDFE0DDE1E2DFE3E4DCE0E1DFE3E4 -E0E5E5E3E4E8E2E3E7E5E6EAE7E8ECE9EAEEE9EAEDECECEDEDEDEDEDEDEDF0F0F0EEEEEEF1F1F1 -F3F3F3FDFDFDC6C6C68D8D8DC3C3C3727272FFFFFFFBFDF8FFFFFF4C4E48302F33F2F2F3FFFFFF -FCFCF7FAFBF4FCFDF6FCFDF9FBFAFAF0F4F3FFFFFF8FA5A976ABBF95D1E39AD1DBB9DCDED8F3F6 -BECDD0919598FFFFFFFFFFFF97C7C6559DA150B8C64AC6D849C0D059CAD65CB3C5467D905F798A -8398A0728A917B8B9583979A7F8F9285949477848577888A798E94778F8E677D765A716256705A -526F58506F59546954576A575A68565967555D6757676F5FBCC9BCF2FAF3F6FFFCE1F2F1DFF0F3 -DFF0F8C3E1EAC9ECF2BFEAED4073740036361D54545780784370673F6F62417A653E7C603B7C5A -397D61387B61397761356D563A6F533C714F4466514464524A66544E64534F625058685954644C -5767505A6A5356674C50614646563A66765D4F6249576B52485D48526B544A624D4B634F4F6854 -4A655448655748675848665A4066534265544B6A58486C57477056447157476A5A4970634F7264 -537665225951004B55006983025A68084344577E77527A71406F6935755D3D7862397460377569 -2D716C48939162C0C673CAD759ACC13D89A15DA2BE6DAFCB458FA3419AAF258DA4107B9607728C -0C7C9414898F067A7F067B7B067C7C067C81057B840D78950E79930B798B0C79870A7785087582 -12779112778B177A891277850A738609778D03769000849006899A00A5B60CC6CE078A9B70AE88 -AEDAAFBFD2A8CDD4B5C1D9B4AAD6A0BBD3A6B9D4A4C1D8A9BDD5A5C2D8AAC3D6A8C5D5A9C0D9A8 -BEDBA8BCDBA5BEDBA5BFDAA4BDD8A5BFD8A4C1D7A4BFD6A6B9CBA5BBCCABD0DDC9E9F6E2F4FFEF -F9FEF5FCFEF9FEFFFCFEFCFEFEFEFDFEFEFDFCFCFDFDFDFDFEFEFEFCFCFAFFFFFDFFFFFDFFFFFD -FEFEFCFBFBF9FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDFFFFFF909191080807E3E5E4FEFFFFFDFEF7FBFEFBFCFCF9FFFFFBF1FDFF7297B5BDC7DD -F8FFFFFBFEF7FDFDFDFDFBFFFCFEF8FAFFFEFDFFFEFEFDFEFDFEFEFFFDFEFFFBFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFEFDFDFAFBFAFEFFFFF1F5F4979C9BB8BDB7CFD4CFD6D8D7CCD0D0CFD3D4D3D7DAD4D8D8 -D3D7D8D2D6D7D6DADBD9DDDEDDE1E2DCE0E1DCE0E1DBDFE0DFE3E4E1E5E6E2E7E7E8E8EDE7E8EC -E5E6EAEAEBEFEDEEF2EBEDF0EDECEDF1F1F0F0F0F0F4F4F4F7F7F7F9F9F9F8F8F8FFFFFF969696 -8F8F8FCECECE7D7C7DFFFFFFFBFBF8FFFFFF61625C28272BF0F0F1FFFFFFFEFEF8FEFFF8FDFEF5 -FCFDF8F9F9FAFEFEFFFFFFFF92AFAC68A5B18DCCDC9BCEDAC8E7E9D3EEF0BED0D19DA6A5FFFFFF -FFFFFF93C2C05A9FA659BDCD4CC5D84CC3D45AC7D76DC7D661A1B4538295729EAD628D9A708FA3 -5375772D4B4C809A9A829B9D718E9672909D7CA1A77BA3A2779F9582A49888A69B8FA8A096AAA7 -95A3A298A5A3A0A9A9A4ABACDBE1E1F4FFFAF2FDFBE4F3F1D4E8ECD7EFF4D0E7EDACD8E2A9D7E0 -BBE9F3134D53559698559A9B4A919642929C37939B25878C23828028837F1D8B822A8F8A338F8F -4390905298935B9D946F9B9B769FA07A9E9E8AA2A68FA0A49AA9ACA1ABA6AAB2ACAFB7B0B0B8B1 -B2BCB267736675817DA3B0ABA9B9B393A8A39AB3AD9CB6B27FA09D82A3A27EA2A3769FA2709BA3 -6C9A9F649CA06699A063929B61959E558E984F8C944787953C8A99378792398386408D96358CA1 -3995AF2F768A07394840717F337686257A8E2E8E8935918E3289883A939756B3BE69C8D95DC1DA -5FBEDA499FBE74C0E0ACEEFF9FDBF165D6F03DD0E51CC5DC09AFCF0FB7DB05C0DD14ACCD12ACCB -17B2D013B1D212B1D511B1D803BADD04BADA06BCD902B6CF05B8CB06B9C607B5CE08B4CC08B4C9 -06B3CA02B4C90AC0D601B5D500BCCD08B0CA05BDDC0CC2DA158BAF75B592B3E0B6C2D0AACCCCB1 -C4D6B5B4DDA9BBD5A1C0DCA8C4DCA9BFD6A7C2D7AAC4D8A8C5D6ACC2DAABBBD8A7BAD9A6BBD9A6 -BEDAA4C1D7A7C1D9A7BED5A5C5D5AEBBCBABCBD9C0ECF2E8FBFFF7FAFFFAF7FBF8FCFCFBFAFCFC -FEFDFDFEFEFDFCFCFDFFFFFEFFFFFEFCFCFCFCFCFAFFFFFDFFFFFDFFFFFDFFFFFDFFFFFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF909191 -080807E3E5E4FDFFFFFDFEF7FBFEFBFCFCF9FFFFFBF1FDFF7297B5B5BFD6F6FFFFFCFEF6FDFDFD -FDFBFFFCFEF8FAFFFEFDFFFEFEFDFEFDFEFEFFFDFEFFFBFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFDFEFAFBFB -FFFFFFE5E9E9767C799BA09BA4A9A5ACB0AEA2A6A5A3A7A9A5A9ACA9ADADA8ACADA7ACADABAFB0 -ADB1B2B0B4B5ACB0B1ADB1B2ACB0B1AEB3B4B0B4B5ADB3B2B8B7BDB5B7BAB5B6BAB8B9BDBABBBF -B8B9BDC1C1C1C4C4C4C6C6C6C7C7C7C8C8C8CACACACBCBCBC4C4C46F6F6F959595C9C9C9828181 -FFFFFFFAFBF8FFFFFF62635F252427EFEFF0FFFFFFFEFEF8FEFFF6FDFEF7FEFEFAFDFDFEFFFDFF -FFFFFF8BA9A264A1A797D3E3B2E1F1BDDADFDEF8FCB6CACE98A3A4FEFFFFFFFFFF94BDC25F9EAB -5EBBD153C7E158C7DF68CEE470CAD487CBDB8DC6DAA0DCE9A7DBEBBBE0F46A8F9020414498B4B8 -CBE8EEBBDAE7B6D8E9BBE9F4C0EDF2C5F3F1CDF2ECD7F1F0E0EFF3E0F3F5E5F4F7E8F4F6F2FBFF -FAFFFFFDFFFFF1FAFCE9F6FADDEDF1CCE4EAC8E3E9C6E2E8B2E0ECAAD6E2B1DFEA00273049858A -9FE1E362C7D955C6DA42C2DA32B7CE2EACBD38AEBB3FBEC64EC4D15EC4D876CBDD87D1DE92D6DF -AADAE6B5E1EFC0E4F0D2EAF7E1F0FCE4EDFAF9FFFFFFFFFFFFFFFFFFFFFFFFFFFF858F895A6467 -D2DEE1E7F8FBE5FCFED6F2F3D9F5F7BFEAEDBAE6EABBEAF3AFE3EEA6E0EFA2DCED99DEF297D8EF -8ED0EA87CEEB7CCBE778CAE65CC3DB4EC5E346C3DE54C0CE61C0D04EADC84BA3B63B7F93053445 -4A859B5BB1CF51C2E552C7D251BFC963CAD56CCEDC63C4D75EC3D763BFE165BEE055A6C671BAD5 -9DDEF28AC5D048B7CA18B4BD00AFBA11AEC80DACC901B1C500AFC801BACF00B3C300B3C500B2C8 -00B0CC03B3CC03B2CD02B0CE04B4CB03B4C703B8BF03AFC404AFC504ADC405B0C807B8CD03B8CB -03AFC600B0BB09A6BA07AECA14B7CE19769973A885B5DEB3BED3A7C3CDACBFD4B0B9DCA8BED9A1 -B9D59EBED6A2C1D8A6C1D7A9C2D7A8C5D5AEC2D7ADBBD7A8BFDCAABDD9A7BAD5A4C2D7A9C2D8A7 -C3D5A8B9CBA5C6D3B9DDE9D6F9F9F9FCFDFBF9FCF8FBFBFDFBFDFEFBFEFFFEFCFBFEFDFBFCFCFB -FFFFFCFFFEFCFCFCFAFCFCFAFFFFFDFFFFFDFFFFFDFFFFFDFFFFFBFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF909191080807E3E5E4FDFFFF -FDFEF7FBFEFBFCFCF9FFFFFBF1FDFF7297B5B3BED4F8FFFFFAFDF6FDFBFDFDFBFFFBFCF9FAFFFD -FDFFFEFEFDFEFDFEFEFFFDFEFFFBFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFDFEFCFDFAFCFAFFFFFFD8DCDB464D4A -242923141914161917181C1B16191A161B1D171B1C171B1D171C1D16191A181B1C171A1B181C1D -181C1D171B1D191D1E181C1D171B1C1B1B1F1A1B201A1B2018191D1A1B20191A1E1D1D1E1E1E1E -1D1D1D1F1F1F1F1F1F1E1E1E1B1B1B2323233E3E3EADADADC8C8C8828182FFFFFFF7FBF8FFFFFF -717570181A1EEAEBECFEFFFFFDFEF9FEFFF7F9FAF2FCFCF7FEFDFEFFFCFFFFFFFF8EACA16BA9AC -A2DBEA9BC6D67A97A1ECFFFFBBD0D58E9A9DFFFFFFFFFFFF98BBC769A3B667C0DD5DCBEA5BC6E3 -69CCE677D0D38DD3E178B6C8569AAA5F9AA978A2B740686A0023255B7C80AECDD5C1E2F2C8E9FE -B4E7F6B7EAF3C0F3F3C2E6E6D0E6EADAE6EED8E9ECE1EFF2E4EFF1EEF7FCF1F6FDF7FCFFE8F0F9 -EAF7FDDFF0F9CEE6EBBBD7DD97B6BD73A1AD6A93A1658E9D001A2417545955969749C2DE2CB1CF -1BB2D314B1D31BAFCE29B3CD39C0D348C5DF59C7E672C9E683CBE58DCDE49FCFE2ACD8ECB6DAEE -CADEF1D7E3F6DEE3F7EDF4F9CCD3D9A5AEB3B8C1C3A1A9AB4E56572D363C7C888FC7D8DFCCE4EA -B7D3D8B6D3D7A7D9DEA3D7DF9DD6E098D5E48DCEE187CBDE7CC7E278C3E36FBDE164BAE259B8E1 -51B7E238BDDA26BCE11EBBDD21A8BC1283991079981A7785125B6C002235195D7A3AA1C336B9E4 -49CBDF50C9DC4CBDCD57BACD65C6DC65C8DE79CBF181D1F855A3C4498EA65E9FAD5590972D818B -048F8F0096940A8A9C0B879B008F9A0090AA0093A80192A200919E0290A1028EA40292AC0092B0 -0092B40096B30096AE0099A80091AB018FAD038FAE008EAC0095B10095AA008DA4009AA5018C9C -0093AD0097A90E6E8A71977AB2D7ADBFDBAABED2AEBBD2ACBAD6A3BED99FC0DBA2C0D9A4C2DAAA -C2D8ABC2D5A8C7D5B1C3D8B0BBD7ABBAD8A7BBDAA7BED9AAC1D6A8C3D7A9C1D1A6C1D2B0D3E1C9 -F0FAEAFEFDFFFAFAFDF9FAFCFBFCFFFBFFFFFCFFFFFEFEFAFEFEF9FCFEF9FFFFFCFFFEFAFCFDF7 -FCFCFAFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFEFDFFFFFF919191070807E3E5E4FCFFFFFDFEF7FBFEFBFCFCF9 -FFFFFBF1FDFF7297B5B6C0DCF9FFFFFBFEF7FEFDFDFEFEFEFDFFF7FAFFFDFDFFFEFEFDFEFDFEFE -FFFDFEFFFBFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFDFDFFFEFDFEEAEBE778786E0D1111000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000002E2E2EB4B4B4CDCDCD838385FFFFFFFEFEF9FFFFFF72746F1A1B18EBEBEA -FFFFFFFDFBFDFEFBFCFDFDFDFBFDFDFCFEFCFAF5FBFFFFFF98ACB278A8BB93C8D54F7A7B516268 -B6C5C7C6CCCA989994FFFFFFFFFFFFA4BEB370A49D6EC3C45ECBD565D1DF6AD2DF7ECCD493D5E2 -6292A341596F707D93828EA0989897909496AAB5B882939AB7D0D7CFEAF2C7DDE6C5E0E9CCE8F1 -CFE6EFDCE9F7DDE2F4E4EBF2EBF1FAEDF4FAEFF7FCF2FBFFEBF5F6E1E6E8DAE0E5D2DCE4D1DFEE -AEBFD3394F66667B8197A39F9D9A8C978B87AEBFC743798826AAB126BDCD00ACC309B8D427B6D5 -48BBD84FC3D75AC6DB66C8DD81D1E58FD4E89BDBEDA9DAE7AFDEEDBDE2F0CBE6F1D9E7F6EBF5FF -FFFFFF8E948F525A4A9CA8958C9A88839082ABAEB17E868AA8B4BCCBE2E9B9D5DEBBD8E3A4D2E1 -9FD1E192CADF84CAE47AC8E570C4E263C5E864C7E25CC3D857CAD747C6D23DC3CD1FC4CB1AC1CC -29BED72782A4154E6654828E85A89F84988F8A928A91ABAF437F93459ABD63C4E45ABCDA59BDDA -6ECAE966BDDC6ABDDE81CEEE8BCCE597C6D5486B67365A466D9575629D625B92645D8E73558774 -5B8C7B5F917A598F77598D7661947B6292776293776393765E94726095755F94725F93725F9373 -5E93725F93765F94775E94765F9577679C7E64977C59916162986C60956F6397756197795B947C -90B07AB5D59DB7D99FB8DBA0B8DAA3B8D8A8B9DAA0BAD9A0BAD9A0BBD99FBBDAA0BADBA1B6DD98 -B7DB9DBADBA7BAD6A7BEDAAABDDAA6C3DBA6BFD7A4C4D7A5DAE6C4F0F7E2F6FDF2FCFDF9FCFCF9 -FAFAF8FEFEFDFEFEFBFEFCFCFEFFF8FEFFF8FEFFF8FCFFF8FDFFF7FEFFF9FCFCFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFBFDFFFFFF919191070807E4E5E4FFFFFFFDFEF7FBFEFBFCFCF9FFFFFAF1FDFF7197B5 -B9C2DEF4FDFFFEFFFAFEFCFBFEFDFEFDFFF7FAFFFDFDFFFEFEFDFEFDFEFEFFFDFEFFFBFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFFFAF9F9EEEEE89A9D8F0D100E000000010200000200000102000004 -010000010001010001010001010001010001010001010001010001010001010001010101010101 -010100010101000000000000000000010101010101000000000000000000000000010101000000 -373737B2B2B2CDCDCD838383FFFFFFFFFFFCFFFFFF7D7D7B131312E8E8E8FFFFFFFEFCFDFDFBFD -FCFDFDFAFDFCF8FCFAFAF5F9FFFFFFA1AFB7749EB278A6B56C9094B7C0C382898AC2C4BFA1A29B -FEFFF8FFFFFF9FBEB674AAA96FC3C960CCD766D2E06DD6E480CAD597D4E1507A885E727FD1D9E3 -E9EDF3ECECEDFBFDFDD5DBE1718087ADC3CAC8E1E8CAE0E7CCE3EAD6EEF4D7E9F2E3ECF8E6E7F6 -E1EBF4E7F2FBEEFAFFECF9FFE7F6FBDFEDF4D1E4E7CDE2E9BED6DDBBD8E59ABCCD254A5CA7B0BA -F5F8F6F2F0E8FAF0EFEFFFFF77ABB9007A861DAABC13B8CE1EBEDC39BDDB52BBD861C4DE6BC9E2 -7ACFE588CFE098D5E2A6DFE9B4DFEABFE5F0C7E8F0D9ECF7F0FCFFF3FCFFFBFAFF7C7D805D635A -F9FEF7E1E8DFE4ECE4FFFFFFBFC7CA5F7278BDDCE5B5DEEAA5D0E09AD5E88FD0E587CEE67BCEEB -6CC6E668C6E75BC6E45FC8E05DC3D757BDCD4DB7C744B0C12CB4C419B4C219B4C7157E94225E71 -A3D2DEF1F6F3EFEEECF9F2F2E5F1F55A91A94599BD5ABDDB59BCD665C7E06CC7DB78CADE7EC9DE -84CAD989C4CF5B888952766794B99BAAD4ACA6CB9EAED3A9A2C69DACD5A2B0DD9AAFDD8DACDD95 -ACDC95B0DE96B0DD94B1DD93B3DD92B0DC99B2DD9BB1DC99B1DD9AB1DD9AB1DB9BB1DC9CB1DC9C -B0DC9CB1DC9BB3DE9FB1DC9DAEDC8EB1DE94B0DD96B2DE9AB2DC9EB0DB9EB4E08EB7E28EB7E48C -B9E68FB9E591B9E494BBE390BAE391BBE491B9E18FB9E28FB9E28FB8E190BBE097B8DB9CBFDCA9 -BCD6A7C2DAABBFD5A8BDD1A5C6D6AFE9F5D8F7FDEFF9FCF7FDFCFBFCFCFAFCFCFAFEFEFCFEFEFB -FEFCFCFEFFF8FEFFF9FEFFF9FEFFF9FEFFF9FEFFF8FCFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFDFFFFFF -919191070807E4E5E4FFFFFFFDFEF7FBFEFBFCFCFAFFFFF8F1FCFF7298B6B7C1DCF5FFFFFDFFF9 -FEFDFDFEFFFFFDFFF8FAFFFDFDFFFEFEFDFEFDFEFEFFFDFEFFFBFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFFFAFAF8EDEEE4999C8C0D0F07000000000000000102000103000101010100010101010101 -010101010101010101000000010101000000010101000000010101000000000001000000000000 -0000000000000101010000000101010000000000000000000202020000003C3C3CB1B1B1CCCCCC -828282FFFFFFFDFDFCFFFFFF8A8A890D0D0CE5E6E6FFFFFFFCFCFBFCFDFBFBFEFDF8FCFBF4F9F7 -FEFAFDFFFFFFA9B1B86C8DA25D8193C5DFE5FFFFFFAEAFAB77756DADAEA2FFFFFCFFFFFEA1C3C4 -6EA4A876C5CC6ED2DF70D6E571D4E489CCDAA4DBE6486E756E7C80F7FAFEFFFFFFFFFFFFFFFFFF -D6DDDF677479BACED3CBE3E7CEE0E7D9EDF1D7E8EEE1ECF4DDE2ECEBEAF7DFEDF5EBF9FFE7F7FF -DFF3F9D9EDF4D5E9F2C3E6ECB6DCE3A6D0D8ABDAE686B8C71A5163C8CBD5FFFFFFFFFFFFFFFFFF -F2FFFF7CAFBB0068792FADC02DC0D733BFD954C3E16BC3E17AC5E586CEE995D9ED9CD5E1A5DADC -B1E4E2C7E8ECD2F1F4D8F2F5E7F4F7F9FDFFE9ECF1F8F4FF85838B6E6E73FFFFFFFFFFFFFFFFFF -FFFFFFC6D5D44B6769A5D0DBA1D8E890CEE487D2EA7ECCE57FD5EE6CCBE862C7E85BC4E753CAE0 -56C3D963C5D736899A0C596D09526B086B8420A7B712AEB90F8692307581BCE6F2FFFFFFFFFBFF -FFFFFFEDFEFF5B95AA409ABA56B7D260C0D666C5D578CAD381C9CF9BDBE16FAEA652857B608875 -97B598C1E1B8B8E2AFC4DBA9C3DDAAC1DDA5C0E296BEE785BFEC79BEEA80C0EB80BEE97DC0E87D -C1E87BC1E878BFE683C1E884BFE682C0E883C0E883C0E882C0E684C0E784C0E784C0E784C0E683 -BCE280C3EC81C0E97FC1E984C0E883C0E685C0E686B6E983B7EB81B6E97BB6EB7EB6EA80B6E884 -B5E882B6E883B5E783B7E984B7E984B8E984B9E583BCE78FB7DD94BCD8A1BDD7A9BDD4A8B7CCAA -CADBBADCEACFF8FFF1F8FCF5FAFDFBFEFEFCFEFEFCFEFEFCFEFEFCFDFEFCFCFCFAFCFDFBFCFDFB -FCFDFBFCFDFBFCFDFBFEFDFAFBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFEFFFFFF919191070807E4E5E4 -FFFFFFFDFEF7FBFEFBFDFCFBFFFDF6F0FCFF7399B7BDC7E2F5FDFFFDFFF7FBFBFAFDFCFCFBFFF5 -FAFFFDFDFFFEFEFDFEFDFEFEFFFDFEFFFBFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFFFEFEFEFFFFFCF1F2E5 -999C86121403000000020202000004000004000100000101010101010101000000000000000000 -020202000000020202010101030303000000020202030303020202030303000000030303010101 -0303030202020303030101010000000101010000003E3E3EB4B4B4CBCBCB828282FFFFFFFCFCFC -FFFFFF8484850B0B0BE5E5E5FFFFFFFDFEFEFCFFFEFAFEFEF7FCFBF6FEFBFBFAFAFFFFFFA6A9B0 -3249600A273AB4CAD0FCF9F75E5E5915130B9A9B91FFFFFFFDFFFBD0E9F16B939B75B3BC92E1EA -83D3DF87D9E796CCDCB3E0E8658384303F3B6F726F777775848488979A9DABB3B68E9E9FCEE5E5 -D1EAE9D7EDEBE1F3F4E2EEF0EAF0F5F2F6FBF3F5FAF2FFFFF0FEFFE6F7FDD7ECF2D1E8EFC2DDE3 -B5E1E9AFDDE6A7D6E09CD2DD6DA9B513515D4F6469778C8A7F8A87767B809AB3BC4A7F8C43A1AD -50BBCA47C0D055C5D873C6DF8BC6E09BC9E5A2D0E7ABD7E8B4DFDEBBE3DBC3EBDFDAF6F2E2F8F8 -EAFCFBF2FAFDEEF2F4F4F1F6FDFDFF81818A2E2F35868B8F7C8280888F8BA8B3A885989286A4A5 -A5D6DF9AD6EA8ACDE583CFE389D9EC80D4EC6FCBE46CCFE85CC1DD4FC0D15DC1D14392A02F6675 -709AADA3C3D84F879E1F859127B1B31B8A92094F5A436F7D807D8A88868A888A8697B8B743868E -4DAEC081D2E376C6D474C3C78ED2CE92CCC363958B5B896A7A9E7FAEC7A7CAE0B5BDD7A4B4D29A -B6D492B8D899B3D99AB9E49BB9E790B5EA85B4E784B3E982B5E781B8E982B8EA81BAE97FB6EC7D -B6EA7CB6EB7CB6EA7CB6EA7CB6EA7BB6EA7AB6EA7BB6EA7BB6EA7BB6EB7BB6EC7BB6EA7BB6EA7B -B6EA7CB6EB7DB6E97EB6EB7EB7E988B4EA86B4EB81B4EB82B4EA84B5E987B5EA88B4EA88B5EA88 -B4E987B4E987B5E988B7EC7BB8E684B3D98ABED9A1BFD4A8BCCDA4C5D4BBDBE8D4EFFBEDFCFFFD -FFFFFEFDFCFDFBFBF9FCFBFAFBFBF9FCFCFAFFFFFDFFFFFDFFFFFCFFFFFCFFFFFCFFFFFCFFFFFC -FFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFBFCFFFFFF8D8E8E080908E4E5E4FFFFFFFDFEF7FBFEFB -FDFCFBFFFFF8F2FEFF759BB8BFC8E3F6FEFFFCFFF8FDFBFBFDFCFEFCFFF6FAFFFDFDFFFEFEFDFE -FDFEFEFFFDFEFFFBFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFFFEFEFEFFFFFAEFF3E1989D85121400000000 -030201010007010002020100000101010101010101000000000000000000000000040404000000 -020202000000020202010101030303020202000000010101000000050505010101020202000000 -0000000404040000000000003C3C3CAEAEAEC8C8C8828282FFFFFFFDFDFEFFFFFF979799010102 -E2E1E2FFFFFFFCFFFEFAFFFEF8FEFBF3FAF7F6FEFCF4FEF7FFFFFF9B9DA42C3F560C2537A0B4B9 -EEF3F1444C462D3128A0A29CFFFFFFF9FCFBEBF8FD7D97A275A0A79BD7DD90CCD790CDDB9CC8D9 -ACD1D89DBAB78D9E98929C9CA5ABB05C63662B33356D7C7DBDD3CFD2EEEAC8E6E1D0EDE6DAEEEB -DDE8E8E9F1F2EBF2F3E9F1F2EBF3F1E4EEEEDBEAEACADEE0C5DDE1B6D0D3ABD0DBA1C8D298C2CE -94C5CE7CB2BB568F9A49767158837B4E6D6717292D43646D46818A54A8AF59B8C05AC2C96DC9D4 -84C4D697BFD5A6C6D8ADD0DEB6DAE0B9DEDBC3E7DEC8EDDED5EEEADAF2F0E1F2F1E8F0F2DFE2E7 -E9E8EEE8EEF2B6BCC1888E959CA7A8929E984F5C504B544B687871A9C3C3A4CFD793CAD98FCCDF -87C7D27DC0CD76BDCB69B7C660B4C164BACA58B7C54896A428646D799EA7CEE6F2EBFAFFC2DEE9 -1F6A722997984DABB636778B4D7D9466788959666C24342F46645C70A7AA75C0CE80BBC680BFC3 -88C6C377AEA4568577527A6B8AAB87B9D2B0CFDEB9C9D5ADC3D6A6BEDAA4BAD8A0B6D7A1ADD29B -B5E19DB4E995B1EA88B1E88BB1E98AB3E888B6E989B6E888B8E986B3EA84B4EA84B4EA84B4EA84 -B4EA84B4EA84B4EA82B4EA81B4EA81B4EA81B4EA81B4EA81B4EA87B4EA87B4EA85B4EA86B4EA86 -B3EA84B7E78BB7E888B7E885B7E885B7E888B7E78BB5E988B5E988B5E988B5E988B5E989B4E989 -B6EB7CB9E888B5DB8FC1DBA4C1D5A8BECDA6D7E6CDEDF8E7F9FFF9FAFDFCFFFEFEFEFCFBFBFDFA -FDFDFBFDFCFBFCFCFAFFFFFDFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFBFCFFFFFF8F8F8F080908E4E5E4FFFFFFFDFEF7FBFEFBFDFCFBFFFDF6F2FEFF -759BB8C2CBE7F6FFFFFBFEF6FDFCFCFDFCFDFBFEF5FAFFFDFDFFFEFEFDFDFDFEFEFFFDFEFFFBFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFCFFFEFEFEFFFFF9F0F3DF989E81131300000000040101020007020004 -030100000101010101010101000000000000000000020202000000020202010101030303010101 -030303030303020202010101000000010101010101030303020202020202000000000000010101 -0000003E3E3EB4B4B4CBCBCB838382FFFFFFFDFDFFFFFFFF9B9A9F000000E0E0E2FFFFFFFBFFFE -FBFFFEF4FCF9EDF7F4F7FEFEF3FFFAFFFFFFA9ACB37B8DA4738C9FB0C1C6E3F5F2798B84939C95 -AFB0AFFFFFFFF9FBFFF4F9FFABBBC757757B39666C33636C42707E5F889960838C6A83846E827F -6071767D8A993B444900080C415355738F8C73948E6C928B74938C7B938E818F8E9097968C9796 -8794938D918B868D88818B8B6F84846C8388708A8E5E7B89516F7D496D7A456F7B3F6D763E6D78 -266A5F2D70612E605600000100202B23626E15666C1D797C16787B2A7C8144788658758A5B7783 -627D8666848870918D6C8F8772968A7993917E9595849495858D94878B9583848E747E7D7D878A -7C878C6B79796B7C73203424040B06465351637B7B6287904473823C738341747C397077336E76 -286A7230757E2872761462720E4F5A68969FCDE7ECE2F0F8E5EDF6D9EEF7306B70156C72085769 -1E5B772A6181415A752E414E0000001D2D294164673E6E7E3463682356581145403C6C616A9485 -9CC0B2C2DAB7CDE0BDC5CCABC5CEA8C8D8ABC6DEADBFD2B0B8CDA7C2DDADC2EB9FB7E782B8EE77 -B3E782B6E882B6E781BAEA7FBAE87CBBE87DB9E886B9E886B9E886B9E886B9E786B9E886B9E882 -B9E882B9E882B9E882B9E882B9E881B9E68CB9E78AB9E78AB9E786B9E688B9E985BAE785BAE984 -BAE880BAE780BAE984BAE886B5EA7FB6EA7FB6EA7FB6EA7FB6E97FB7EB7EB4EA82B9E98DB7DF93 -BDD8A2C4D7ABCBDAB0E5F4DBF1FCEDF8FFF8FDFCFEFEFEFDFDFCF7FBFBF9FBFBFBFBFCFAFCFBFB -FFFEFCFFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFBFC -FFFFFF8D8E8E080908E4E5E4FFFFFFFDFEF6FBFEFBFCFCFAFFFFF8F1FEFF759BB8C0CCDBF7FFFF -FDFFFCFEFFF5FEFDF9FDFFFFFAFFFFFDFFFEFEFFF8FFFFFBFFFCFCFFFBFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFF9FDFCF9FFFEFFF2F0EBA09E82161400000000000107000200000200010002000101010100 -010101010101010101010101000000000000000000000000000000000000000000000000000000 -0202020000000202020000000000000000000000000101010101010101010000003B3B3BB2B2B2 -CACACA818181FFFFFFFEFEFDFFFFFFA8A8A7000000DDDDDDFFFFFFFEFBFBFBFCFBFFFFFEFAFCFB -F8FBFAF8FEFFFFFFFF91A3A87A9FB286AAB8A5BCBFE2E6E49C9F9FCDD0D09C9D9CFFFFFEFAFAF9 -FFFAFFFFFFFFEAEAEFD0D9D8D3E1DED0E1DBB3C7B394AC908FAA8499B78C9BB28BA1B08F8D9873 -73875F8FAC8095B98C91B68A89AD8296B48692AD818BA77B98AC8299A9819BA9829DA4819AA582 -98A78195AB8494AD839BB58991B19097B79394B29091AF8D91AF8C96B2908FBD9B89AD8EA8C3A7 -62765A9BAC92A2AE969BC2A092BA9792B79193B68F9AB59099AF8A9DB4859AB58698B68A90B288 -8CB48B89B38A93B08693AD8390AB8194A7809EAE88A0AE8992AC8095B1858BAC7F92B18598B48A -778E6478885FA1B38A99AB8397AE869EB48F95AA868BAF809CBF9098BD8E97BC95A2C6AB5C7E6E -2A573E90BCA8CFF8E8DEFCEFE7FBEDE5EFE08EA7935470528FB08899C29696C3A289BCA397B29D -87A2856C835BA3B990A5BA9796AA91A3BD98B7D1AAC3DEB5BFDAB0C3E0B1C5E3B4C9D8A9C0CEA2 -C3CBA1C9D5AAC5D8ACB7CEA1C8E1ADBACEAEB3C8ABC3E2A1BBE889B6EA7EB7EA86B7E986B5E986 -B6E986B6E886B6E886B6E885B6E885B6E885B6E885B6E885B6E885B6E986B6E986B6E986B6E986 -B6E986B6E886B6E887B6E887B6E887B6E887B6E887B6E887B6E887B6E887B6E787B6E887B6E887 -B6E786B5EA87B5EA87B5EA87B5EA87B5E987B4E988B2EE7CB7E58AC2E2A0BACCA6CAD9BBE7F5DB -FBFEF0FAFDF1F8FAF3FDFFFBFBFFFEFCFEFFFEFEFFFEFFFCFEFFF8FCFCF6FFFFFDFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFEFEFFFFFF919191070707 -E4E4E4FFFFFFFFFCF3FCFFFBFEFCF7FFFCF7F3FCFF769BB7C0CCDCF7FFFFFCFFFAFEFFF6FEFDF9 -FDFFFEFAFFFFFDFFFEFEFFF9FFFFFAFFFCFDFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFDFFF9FCFCFAFFFEFF -F1EDE89A9A7A141200000000020107000300000300010002010102010100010101010101010101 -010101000000000000000000000000000000000000000000000000000000010101010101010101 -0000000101010101010101010101010101010101010000003C3C3CB2B2B2CACACA818181FFFFFF -FEFEFDFFFFFFB0B0B0000000DBDBDBFFFFFFFEFBFDFDFDFDFBFAFAFAFCFBF7FBF9FBFDFDFFFFFF -98A3AA83A7B97D9CAEA8BBC2EDEDED909092C0C1C1A1A0A0FFFFFFFFFCFAFCF6FCFCFAFEFAFCFB -F4FBF5E9F7ECE2F2E6BFD7BBB9D3B2B9D5ABC1DEB1BFD7ACB8CAA2C3CEACBDCFAAC1DEB6B4D5AA -B1D4A9B4D7ACBAD8AAB6D3A6B6CFA4BDD3A9C0D0A8BFCFA8C0CCAAC2CFABC0D2ADBDD3AEB7D2AA -B4CEA5B1D1ABB6D5AFBCDCB6B6D5AFB8D7B1BAD8B3B4D9B2BDDBB6BED4B1AEB99AC3CDAEBCC6A7 -BBD8B6B4D4B0B8D8B3B6D4ADBBD5AEBDD1ACBED8AABBD7A7B5D2A7B3D5A8B2D7ABB1D9ACB9D4AC -BAD4ACBAD3ACBDD1ABC2D3AEC6D3AFBAD2A6B4D0A2AECE9FB9D9A9BFDAADACC397CCDDB2C1D6AD -CAE1B7B9CFA8BAD4AEB9D1AEB6D6A8B5D5A9C1E0B6B8DAB888AA925675667CA395C7EBE3D7FBF6 -D9F8F3CFE7E0B6C7C05667549FB497BFDBB3BADBB0B3D9B3B0DAB9BED9B7BDD5ADB1C696C5D8A7 -C3D8ABBED4AFBBD5A9BAD1A6BFD8AAC3DDACB9D3A1B9D3A1BDD19EC4D5A5CCDAABC4D3A4BFD4A3 -B9D5A1B5D19DC3D7B6BED5B1B9D992BBE989B6EB83B7E882B7EA84B7EA84B6EA84B6EA84B6EA84 -B6EA84B6EA84B6EA84B6EA84B6EA84B6EA84B6EA84B6EA84B6EA84B6EA84B6EA84B6EA83B6E885 -B6E884B6E885B6E885B6E885B6E885B6E884B6E885B6E985B6E885B6E885B7E884B4EA85B5EA85 -B5EA85B5EA85B5E985B5EB86B1EB7BBAE78EB8D79AC3D4B3D9E6CDF0FBE4FAFEF1FBFFF3FDFEF8 -FCFFFBFDFDFFFBFEFFFEFEFFFEFDFCFEFFF8FCFDF7FFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFCF4 -FCFEFAFEFCF7FFFCF7F3FCFF769BB7C1CDDCF7FFFFFCFFFCFEFFF6FEFDF9FDFFFEFAFFFFFDFFFE -FEFFF9FFFFFAFFFCFDFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFDFFF9FDFCFAFFFFFFF3F1EA9F9F7F171400 -000000000106000100000200010002010102010100010101010101010101010101000000000000 -000000000000000000000000000000000000000000010101010101010101000000010101010101 -0101010101010000000101010000003C3C3CB3B3B3CCCCCC808080FFFFFFFDFDFDFFFFFFB0B0B0 -000000DADBDAFFFFFFFEFCFDFDFDFDFCFDFCFBFDFCEFF5F4F7F5F2FFFFFF95A0A683A3B883A2B5 -B2C6CEF9F5F697969BB9B7BBA09E9DFFFFFFFDF7F6FDFAF7FCF8F3FFFEF4F7FCEEDBE4CFD3DDC8 -B5CDA7BCD9ACB9D6A8C0DDABBFD7A7C2D4A5C9D6B1CBDFB7BFDAB0B9D9ACBBDBAEC0DEB3BFDBAD -BBD5A9BED5AAC6DBB0C7D9AFC6D7AEC7D7B0C6D7B1C4D6AEC0D8AEC2DCB3BFDAAFC2E0B3BAD7AA -B8D6A9BAD7AABCD9ADBBD8ACB8D8A6C9E1B2B8C79BD2DAB0CDD3A9D0D6ADC1CFADC6DAB1C2D8AE -BED8AEBED5AAC3D6ADBAD4A3B9D4A4B7D4A2B7D7A5B9DAA9BADDADBED8AFC0DAAFC3DBB2C7DCB4 -C2D4ACBDCEA8C1DAA6B7D4A0BEDFAAC3E4B1BCD8A6B9D3A1CCDFB4B4C99EC1D8ADB6CDA4C1D9B0 -BFD7AFC4DFB0B2CDA2D0ECC5A0BA9D607A67819B8FCBE8E5DEF9F9D7F6FAD6F5F6A0BBB9526966 -919A85BDCDAEC9DBB3BAD3A4B8D5A6B5D1A7BFD9AAC7DEA9C8DAA1C3D497CBDEA6D0E5B0BFD6A0 -B8CD98C8DEA8CCE4AEC7DDA5BFD59EC4DAA4C6DCA5C2D7A2BCD59EB8D39CC2DFA7C5E0ABBED3AD -B5CBA5C6E69EBAE888B5EA83B6E880B6E97FB5E980B7EA80B7EA80B7EA80B7EA80B7EA80B7EA80 -B7EA80B7EA80B7EA80B7EA80B7EA80B7EA80B7EA80B7EA80B7EA7FB7EA82B7EA82B7EA82B7EA82 -B7EA82B7EA82B7EA82B7EA82B7EA82B7EA82B7EA82B7EA82B6E881B6E981B6E881B6EA82B6EA82 -B6EA81B3EB7FB8E590BAD6A0D7E6CCEAF6E4F6FFEFF8FAF2F7FAF3FEFEF9FBFFFDFCFEFEFBFDFF -FEFEFFFEFDFCFEFFF8FCFDF7FFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFCF4FCFFFAFEFCF7FFFCF7 -F3FCFF769BB7BECBD9F9FFFFFCFFFAFEFFF6FEFDF9FDFFFEFAFFFFFDFFFEFEFFF9FFFFFAFFFCFD -FFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFEFEFFF9FCFCFAFFFEFFF2EEE99C9D7D141000000000020107000400 -010400020203000000010101010101000000000000000000010101030303010101020202000000 -020202020202000000020202000000020202010101000000010101000000000000000000030303 -000000000000373737AFAFAFC7C7C7868686FFFFFFFDFDFDFFFFFFC3C3C3000000D6D7D7FFFFFF -FCFAFCFBFCFCFDFDFDFAFBFAF9FEFDFEFAF5FFFFFF9AA4A87A9DB384A8BB738B97A1A0AA93929B -C0BFC599989AFFFFFDFEFCF9FDFBF0FBFAECE8EAD8DDE4CACAD4B1C1CBA7C6E3ADBCD9A6BFDDAB -BAD7A3BCD7A2C7D9A3D1DFB4C1D6A9B4CEA0B9D6A5BCD9A8C0DAABB8D1A5B7CFA2BCD3A6BBD3A6 -BCD2A6BCD3A6BED5A6BED5A6BDD5A7BCD3A5BAD4A5BAD4A4BDD9A7BBD6A5B9D4A2BAD5A4C0DCAA -BCD7A7BADCA3B6CF9ACEDFACC5CD9ECAD1A2CAD0A2B8C698C4D6A7C1DBA8BED4A5BFD5A6C5D6A9 -C1D9AABED8A7BCD4A5BBD5A5BBD6A2B9D5A1BDD6A7BCD5A7BAD0A2B9D1A3BFD5A6BED4A7C4DDAA -BBD7A4B5D6A1B3D59FBCD8A3C1D8A5B9D1A5C3DBAFBAD0A3C9E0B2CBE1B1B9CFA1BDD2A3D1E5BF -98AC90566A5C8DA298E4F8F2E2F6FFDFF8FFC4E2E79DBCBA526D62819E8DCED8B6CFDCB5BACB9E -C2D7A5C4DCA7BDD49FB4D199BDD59BC7D99EC7D89CC5D89BC2D79BC1D99FC2DB9FC1D99EBBD299 -BED59EC3D8A2C2DCA5BED9A2B7D59EC1E0A7C1E1A8B9D9A0B7D19CC5DCB2B6CDA2C0E193B9E687 -B5E786B7EA83B7E983B7E983B5E781B5E881B5E781B5E882B5E882B5E882B5E882B5E882B5E882 -B5E882B5E882B5E882B5E781B5E781B5E782B5E884B5E885B5E884B5E884B5E884B5E884B7E985 -B6E985B7E985B5E884B5E884B5E884B9EB86B7EA86B8EB86B6E884B6E885B6E884B5EA80BAE293 -C9E1B6F1FBF0FAFFFAF7FFF6FDFEFAFCFEFBFAFCFAFDFFFCFEFFFFFCFFFDFEFCFFFEFEFCFEFFF8 -FEFFF8FEFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDFFFFFF919191070707E4E4E4FFFFFFFFFCF4FCFFFAFEFCF7FFFCF7F3FCFF769BB7BFCBD9 -F8FFFFFCFFFBFEFFF6FEFDF9FDFFFEFAFFFFFDFFFEFEFFF9FFFFFAFFFCFDFFFBFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFEFDFFF9FCFCFAFFFEFFF2EFEA9D9D7D141000000000020107000400010400020203000000 -010101010101000000000000000000020202000000020202000000040404000000000000040404 -0000000202020000000202020000000101010000000404040000000000000000000000003B3B3B -B1B1B1C0C0C0898989FFFFFFF9F9F9FFFFFFBFBFBF000000D7D8D7FFFFFFFEFBFDFDFFFEF8F7F7 -F8FAFAFAFEFDF8F9F0FFFFFF9BACAD7AA0B57CA7B90A2A34020512666B76BABFC6A3A6A6FFFFFF -FDFEF9FBFEF1EEF4E4D8DFC8C2CEADC1CDA7C4CFA8BDDAA0BBD9A4BDDAA9BBDAA9BFD8A5C6D8A4 -C5D8A9C2D8A8BDD9A6BBD8A5BED8A7C1D9A8C1D7AAC0D7A8C0D7A9C0D7A9C0D7A9BFD8A9BDD8A6 -BCD8A6BED8A6BBD7A5BDD7A5BBD7A4C3D9AAC1D8A9BFD6A6C2D8A9C3DAABC2D8A9B4DEA7B6D8A4 -C4DCABC3D3A5C6D4A8C6D2A7B9D59EBEDBA5BADBA6BBD8A7BED6A9C5D6ABC2D7ADC0D7ABBED6A9 -C2D9AAC1D9A8C0D8A6C3DAAAC3DAAABFD7A6C2DAA8C3DAA9BFD9A7C2D9A9BDD9A7B8D8A5BCDDA9 -BDD9A6BFD7A6BED9ABBAD6A7BCD3A4C4DBAABCD19FC2D6A2C3D9AFA6BA9B495E4A95A8A6D4E8E8 -E3F8F9D7ECF7D4EDF49BB9B9537162728D71BAD2ADCBDFB2C1D7A9BDD4A4BFD7A6C0DAA7BDD8A3 -BCDBAABFD8A7C2D6A6C4D7A5C3D8A4C0DAA3BED7A1C2DEA7BED7A4BFDAA6BED8A8BDD6A7C1DBA8 -BCDCA6B6DDA4B7DFA6B9DEA7BADBA4BCD6A0C1D8A9C2DAA8C1E293BBE889B4E788B8EB88B7EA87 -B8EA87B6E885B6E886B6E886B7E986B6E986B6E986B6E986B6E986B6E986B6E986B6E986B6E986 -B6E886B6E986B6E886B6E889B6E889B6E889B6E889B6E889B7E98AB4E687B5E787B4E687B7E98A -B6E889B6E989B9E788B8E788B8E888B8E889B8E889BAE98AB4E97EB7DE94DAF1CDF2FAF6F9FDFE -F8FEFCFCFCFDFCFCFEFAFDFCFDFFFEFEFFFFFCFFFEFEFCFEFEFDFCFEFFF8FEFFF7FEFEFCFCFCFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191 -070707E4E4E4FFFFFFFFFCF4FCFEFAFEFCF7FFFCF7F3FCFF769BB7BFCBDAF8FFFFFCFFFBFEFFF6 -FEFEFAFDFFFEFAFFFFFDFFFEFEFFF8FFFFFBFFFCFCFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFF9FCFCF9 -FFFEFFF2EFEA9D9D7D141000000000020108000400000400020203000000010101010101000000 -000000000000010101020202000000020202000000010101010101000000020202000000020202 -010101000000010101000000000000000000030303000000000000393939ADADADCFCFCF7C7C7C -FFFFFFFCFCFCFFFFFFC3C3C3000000D5D5D5FFFFFFFDFAFCFBFBFAFEFEFEFCFEFCFAFFFEFAFDF2 -FFFFFF9AADAE7AA7BB8DBACD6C929A7D8390B3BCC6C0C9D09DA4A4FFFFFFF6FDF8DCE6D7CCD7C6 -C1CEB5BBC9A7BDCEA3C3D4A7BCD99BB8D8A2B4D3A3B9D8A9BDD6A5C0D39CBFD1A1BDD3A1BAD5A1 -B9D5A0BAD4A1BFD2A0BCD2A3BED4A4BCD3A3B9D1A0B9D1A1B7D1A0B8D7A0B9D5A2B8D6A2B8D39F -B8D59FBAD4A1B9CE9FBAD0A0B8CF9FBDD3A4BBD0A1BACE9FA9DEA6B0D9A6B6D4A5B9D1A4BDD1A6 -BACFA4B5DCA1B0DBA0ADD7A0B3D7A5B9D3A7C0D5ABB9D1ACBAD3ABBCD2A9BED3A5C0D3A5BFD2A3 -BED5A2BFD4A2B8D19EBDD6A3BCD6A3B6D49FBCD3A5BAD7A7B3D4A1B7D8A7B7D3A4C4DCAEAFCB9D -B5D0A0B9D2A0B9CE9BC6D9A3CFE2A79BB58C4A614294A99BDAECF2E4F8FFD7ECF5C5DCE89DB8BD -54756E6D8D71C0DBAFC3DBA2B6D59DC7E4B1B5D3A1B6D4A2B8D6A6BAD9A5B3D4AAB6D2ABB7CEA8 -BDD3ABBBD4A6B8D4A5B9D9A1B8D7A5BAD8A6B5D2A5B7D4A9B9D7ADB9D5A3B7D8A5B2DBA6ABD9A2 -AFD7A2B5D6A3B9D49BBBD1A1B8D09BB9DC88B7E684B6EB89B4E686B4E787B4E787B2E585B2E685 -B2E685B1E585B2E686B2E685B2E687B2E685B2E587B2E585B2E585B2E585B3E686B3E686B3E686 -B2E587B2E587B2E587B2E587B2E587B2E587B3E687B4E787B3E687B2E586B2E586B2E587BAE98A -B8E789B6E587B5E486B7E588B4E485B5EB7CB8E194E3F8D9F6FDFFFCFDFFFBFEFFFCFBFFFCFCFE -FAFDFFFDFFFEFEFFFFFCFFFBFEFDFFFEFFFBFEFFF8FEFFF7FEFDFBFCFCFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFEFEFFFFFF919191070707E4E4E4FFFFFF -FFFCF4FCFFFAFEFCF7FFFDF7F2FCFF769BB7B9C9D7FAFFFFFDFBF9FEFCF5FDFCF8F9FEFDFAFFFE -FDFFFEFEFDFDFDFEFEFFFDFEFFFBFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFCFDF6FEFDFBFFFCFFF1EDE89C9C7F -141000000000020108000200010200000001000000010101000000010101030303010101010101 -020202000000020202000000010101010101020202010101010101020202000000020202020202 -020202000000010101000000020202000000353535B0B0B0C8C8C87B7B7BFFFFFFFCFCFCFFFFFF -C5C5C5000000D6D6D6FFFFFFFBFEFBFEFEFEFCFBFCFFFDFEFEFAFDFBFBF3FFFFFF97A5A56BADAB -8DD6DBA5D9EACDECFCDDF7FFC2D6DA939D9CF9FFFADDEDDBC6D4C0C3CBB9C7C9B6C8CBB3C9D3B3 -C8D8B7C6D7ADC6D5ABC5D5AAC3D3A7C3D3A9C1D2A9C6D7A9C5D7A8C5D6A8C7D8A9C6D7A9C3D6A6 -CBD5ADC8D5ABC6D7ABC1D7ABBEDAABBDDAAAC1D8ACBFD6AAC2D8ABC0D7ABC1D7ABC1D7ABC6D7A9 -C5D6A9C5D6A9C5D6AAC4D4A8C6D7A9BFD7B0C1D7B0C0D8B0BED7B0BED7B0BFD7B1BBDBACBEDAAC -C0DAACBDD7A9BFD8A9BED6A9C7D4ADC5D3AFC5D3AEC5D3AEC6D3AEC6D4AEC4D4AAC4D4AAC6D4AC -C5D4A9C6D4AAC7D5ABC2D8A8C3D8A7C3D9A8C3D8A8C3D9A9BDD1A2C0DCB0C7E3B4B9D6A4BED9AA -D3F0C6A3C19B425F4682A38FC6E9DFDCFFFCD1F0F0D2EFF09FC1CA5C7A7C6E8277B8CBAAC0D2A3 -C5D9A0B5D69DB2CFA0BED9B3BDD6B4BFD7AABDD59FBCD5A8BED7ABBFD9ADBFD8AFC0D8B1C1D8B1 -C0D1B3C0D2B4C0D2B4C3D6B7C3D5B6C1D4B5C3D5B6C1D6B6C1D5B6C2D5B6C1D5B6C1D6B7BFDAA9 -BFDAA6BFDAA6BFD8A7BED6ACBFD3B0BFD5B1BFD5B1BFD5B1BFD5B1BFD5B1BFD3B3C3D6ACC0D3AA -C3D6ADBFD2A9C1D4ABBFD3A9C3D4ACC3D4ABC3D4ABC3D4ABC3D4ABC3D4ABC2D1AAC3D3ACC2D1AA -C3D4ACC3D4ACC3D3ACC2D3B4C1D3B5C1D3B4C2D4B7C4D4B7C1D2B7B9C8A7BFCEADCAD9B8BECEAE -BAC9A8BFCEADE2ECD9F4FBEEFCFFFBFDFEFEFDFBFDFDFDF7FAFAF9FBFAF9FAFAF8FEFEFBFEFCFA -FEFEFAFBFBFBFBFBFDFBFBFCFCFBFCFFFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDF9FBFFFFFF909090070907E4E5E4FFFFFFFEFDF3FAFEFAFBFEF9 -FFFFF8F5FBFF7C96B6B5C5D3F9FFFFFFFFFDFFFCF4FDFEF8F9FFFDFAFFFEFDFFFEFEFDFEFDFEFE -FFFDFEFFFBFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFCFEF8FEFDFCFFFEFFF3F0E99E9D7E141000000000020108 -000100000200000000010101010101000000020202000000020202020202000000020202000000 -040404000000000000020202020202020202000000020202000000030303000000010101010101 -000000020202000000353535B6B6B6B0B0B0979797FFFFFFFDFDFDFFFFFFC7C7C7000000D4D5D4 -FFFFFFFBFDFBFDFEFEFCFBFCFFFDFEFEFBFDF8FDF4FFFFFF92A4A564AAA791DDE09ED4E5CDEBF9 -E0F9FFB8CAD0929E9BFAFFFADFEEDCD6E1D5D9DFD1DEE0CFE4E7D5DEE6D0D8E6CCD8E6CAD9E9CB -D8E7CBD7E7C9D8E7C9D8E6CAD9E6C9D8E6CAD8E6C9DAE8CBD9E8CAD7E5CADEE5CADBE7C9D8E6C9 -DAEDCDD6ECCCD3EBCAD9EBCDD7EACAD9ECCDD8EACBD9EBCBD8EACDDBE9C9DAE9C9DAE8C9DBEACA -D9E9C8DBEACBD9E9CDD9E9CED9E9CED8E8CDD9E7CCD9E8CDD4EACAD5EAC9D5E7C9D8EACCD9E9CC -D8E9CBDDE8CCDCE8CDDCE8CDDCE8CDDCE8CDDCE8CEDBE7CADBE7CADBE7CBDAE7CADAE7CADBE7CB -D7E8C9D8E7C9D7E7C9D9E8CAD9E8CAD2E1C4E2F4D6D5E7C8DAEFCBE7FDDCA5BB9F5C725999B5A6 -D7F6ECE3FFFFCBEBF0C1DFE6ABC3CC5B7A82688385CDE0DBE7F5E2DFEED0D9EBC6DAF2C8D3E8C8 -D9EBD3D5E4CED9E9CAD6E8C0D9E9CBDAEACBDBE9CCD7E7CBD9E7CCD7E5CEDAE8D1DBE7D1DBE8D1 -D9E5CFD9E5CFD9E6CFD7E7CFD8E6CFD7E6CFD9E8D1D9E8D1DAE7D2D9E9C8D9EAC7D9EAC4DAEAC7 -DAE9CDDAE8CFDAE9CFDAE9CFDBE9CFD9E7CDD9E8CED8E7CEDCEACDDAE7CBDDEACDDAE8CBDCEACD -DAE8CCDBE6CBDBE6CBDBE6CBDBE6CBDBE6CBDBE6CBDBE7CCDDE9CDDBE7CCDBE6CBDBE6CBDBE6CA -DCEAD1DCE9D1DCE9D1DCE9D0DDEAD2DBE8D1D9E4CBDCE6CEE0EBD3DFEAD2DEE8D0E2EDD5F4FCE9 -F7FEF0F9FDF6FBFEFCFDFDFBFEFCF8FCFCFAFCFCFAFCFCFAFEFEFCFEFEFCFEFEFAFBFBFDFDFDFD -FDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFAFBFFFFFF909090070907E4E5E4FFFFFFFEFEF3FAFEFAFBFEF8FFFFF8F6FBFF7B96B7 -B6C6D4F8FFFFFDFDFAFFFCF5FDFEF8F9FFFDFAFFFEFDFFFEFEFDFEFDFEFEFFFDFEFFFBFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFEFCFDF6FEFCFBFFFFFFF5F0EBA09F80141000000000020108000300000300000000 -000000010101000000010101030303010101010101030303010101020202000000020202010101 -020202010101000000030303000000020202020202020202000000010101000000020202000000 -333333BBBBBB919191B7B7B7FFFFFFFCFCFCFFFFFFCDCDCD000000D2D3D2FFFFFFFBFEFCFDFEFE -FCFBFCFFFDFEFEFBFDF5FCF4FFFFFF8DA2A35FA9A689D8DC99D3E5C0DFEDD7F0FDB5C6CD9DA6A4 -FFFFFEF6FDEEF5FCF8F8FDF6FCFCF6FCFEF6FAFDF2F5FDEDF6FEF1F7FEF4FAFEF6F6FEF1F6FEF3 -F6FDF2F6FEF6F6FEF6F6FEF6F9FEF7F9FEF7F6FEF5F9FDF3F8FDF3F5FDF1F6FFF6F2FEF2EEFEEF -F6FEF4F4FEF1F7FEF4F5FEF2F5FEF2F4FEF2F6FDEFF6FEF1F6FDF1F7FEF1F6FDEFF7FEF1F9FEF4 -F9FEF5F9FEF4FAFEF7FAFEF6FCFEF6F3FEF2F5FEF3F6FEF3F7FDF3F8FDF3FAFDF2F7FEF5F6FEF5 -F6FEF5F6FEF5F6FEF5F6FEF4FAFEF4F8FEF4F8FEF4F8FDF5F8FDF5F9FDF3F6FEF6F6FEF6F6FEF6 -F8FDF6F7FEF7F3FCF4F4FBF4F5FDF4FEFFFCCAD9CB6D7B728C9B95D8F3F5DFFBFFD6F3FDB8D6E2 -B5CEDB667B886F888ADAEEF0F4FFFFF3FCF9F1FBF2EEF9EEF4FFEEEEFAEBF5FCF7F7FDF6FBFEF4 -FAFEEFFCFFF4F9FEF4F8FEF3F9FEF5F9FEF7F9FEF6FAFEF5FBFEF4FBFEF4F9FDF2F9FDF3F9FDF3 -F8FDF3F7FDF3F7FDF3F8FDF4F8FDF4F8FEF4F9FDF3F9FEEFF9FDEDF9FEEFF8FEF3F8FDF6F8FDF6 -F8FDF6F8FDF6FAFEF8FAFEF8FAFEF8F9FEF3F9FDF1FBFEF4FAFEF3FCFEF6FBFEF3FBFEF4FCFEF4 -FCFEF4FCFEF4FCFEF4FDFEF4FCFDF3FDFEF6FCFDF3FCFEF4FCFEF4FCFEF4FCFEF5FCFEF5FCFEF5 -FCFEF6FDFFF6FAFEF3FCFDF9FCFDF8FDFEFAFCFDF7F8FAF4F9FBF4FAFEF1FBFDF4FFFFFCFCFEF9 -FDFDFBFCFBF9FDFDFCFDFDFBFDFDFBFEFEFCFEFEFCFEFEFBFBFBFDFBFBFBFBFBFBFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF9FBFFFFFF -909090070907E4E5E4FFFFFFFEFEF3FAFEFAFBFEF8FFFFF8F6FBFF7B96B6B1C2D0F9FFFFFFFEFB -FFFCF5FDFEF8F9FFFDFAFFFEFDFFFEFEFDFEFDFEFEFFFDFEFFFBFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFEFEFEFDFDFDFDFDFDFEFEFEFFFFFFFEFEFEFEFEFEFEFEFE -FFFFFFFEFEFEFDFDFDFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFD -FDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFEFFFFF9 -FCFCF9FFFEFFF2EEE99D9D7E151200000000020108000200000200010001010101010101010101 -010101000000010101010101000000010101000000000000000000010101000000000000030303 -000000030303000000010101000000020202020202000000000000000000393939ADADAD808080 -E3E3E3FFFFFFFEFEFEFFFFFFC4C4C4000000D2D2D2FFFFFFF9FBFAFDFCFCFDFEFEFFFEFFFFFCFE -F6FCF5FFFFFF8DA2A35CA5A389D8DEA0D9EDBAD8E6D8EFFBBFCED59FA6A4FFFFFFFDFFF1FAFAFA -FCFDFCFBFDFBFBFEFAFCFEF9FAFBF6FBFEFFFAFFFEFDFFFFFCFEFEFCFEFEFCFFFFFBFCFFFBFDFF -FBFEFFF9FBFFF9FBFFF9FBFFFBFFFFFBFFFEFAFFFFF8FEFDF9FFFEF9FFFEFAFEFDFBFDFEF9FDFD -FCFFFFFCFEFEFCFFFFFCFFFEFCFFFDFCFFFDFCFFFDFCFFFDFDFFFDFCFAFCFDFAFCFDFAFCFEFCFD -FEFBFDFEFBFDFCFFFFFDFEFEFEFFFFFDFCFDFDFBFDFFFBFEFAFEFDFBFDFDFBFDFDFBFDFDFBFDFD -FBFEFDF9FDFEFAFDFDF9FDFDFCFFFEFCFFFEFBFFFFFCFCFFFCFDFFFCFCFFFCFDFFFEFEFFF5F6FA -F9F8FFFBFCFFD0D6D86672738D9DA2DFEEF6DBF5FFD1EDFACCEAF9ADC8D45F757E68797FE9F9F6 -FCFFFFFBFFFFF9FCFFF2F5FAF6FCFFF4F5F6F0F2F4F7F7FDFDFCFFFFFCFFFFFDFEFEFCF9FEFDFB -FFFBFEFBF8FBFCF9FDFCF8FEFBFBF8FDFDFAFDFCFBFFFEFDFEFEFCFFFDFCFDFFFCFEFFFCFEFFFD -FAFBF9FBFCFAFAFCF9FFFCFCFEFDFAFEFDF8FEFCFAFFFDFFFEFAFFFEFCFFFEFBFFFEFBFFFEFBFF -FEFBFFFFFBFFFBFAFCFCFBFCFBFAFCFDFCFEFDFCFDFDFCFDFFFDFFFFFDFEFFFDFFFEFBFDFEFBFD -FEFBFDFEFBFDFEFBFDFEFBFDFEFCFEFEFCFEFFFCFFFBFCFBFDFCFBFDFCFBFEFEFCFEFDFCFEFEFD -FEFCFFFBF8FCFCF9FDFDFAFEFDFBFEFDFAFFFCFCF8F9F7F3FCFBF6F9FBF5FCFDF8FBFBFDFFFFFD -FFFFFDFDFDFBFBFBF9FBFBF9FBFBF9FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFFFFFFFF909090070907E4E5E4 -FFFFFFFEFEF3FAFEFAFBFEF9FFFEF7F4FBFF7C98B7AEBECEF7FDFFFEFEFBFFFCF4FDFEF8F9FFFD -FAFFFEFDFFFEFEFDFEFDFEFEFFFCFEFFFBFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFDFDFDFCFCFCFCFDFCFDFDFDFEFEFEFDFDFDFDFDFDFDFDFDFEFEFEFDFDFDFCFCFC -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFEFEFEFFFEFFFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFFFFFEFDFFF9FDFCFAFFFEFFF1EDE7 -9E9E80151200000000020108000300000300010001010001010101010101010101010101010101 -010101010101010101000000000000000000010101010101010101000000020202000000010101 -010101000000000000000100000000000000000000343434A2A2A2949494EBEBEBFFFFFFFEFEFE -FFFFFFCECECE000000CAC9C9FFFFFFF9FBFAFDFDFCFCFBFCFEFCFDFFFBFCF5FAF5FFFFFF93A5AA -6CB1B28FDAE1A0D4EBBBDCEADCF5FEBCCAD19C9FA1FFFFFEFCFCEFFDF9F8FCFDF9F9FFFAF9FFFB -FCFCFBFDF9F9F6F5F9F9F9FCFDFDFEFDFDFFFDFDFFFDFDFFFDFDFEFDFDFEFDFDFEFCFCFEFCFCFE -FCFCFEFCFEFFFBFDFFFBFDFFFBFDFFFCFEFFFCFEFFFDFDFFFEFDFFFEFDFFFEFDFFFEFCFFFEFDFF -FCFEFEFDFDFEFDFDFEFDFDFEFDFDFEFDFEFFFDFBFAFDFBFAFDFBFAFEFDFBFEFCFBFEFDFBFBFDFF -FCFDFFFDFEFFFCFCFFFEFAFFFEFBFFFDFEFCFCFDFBFCFDFBFCFDFBFCFDFBFCFEFCFBFCFFFBFBFF -FBFBFFFDFEFFFCFDFFFAFAFEFEFBFEFEFBFEFEFBFEFEFCFEFEFBFEFFFEFFF4F3FDCDCFD5737A7E -96A4A4DFF2F6E7FAFFD3EEF9C4DFECA6C3CE678084768A88DEEDE7F6FFF5F8FFF6FAFBF9FDFDFB -FDFEFFF9FEFFF7F9FCFAFCFDF7F9F9FDFBFEFFFBFEFFFCFFFDFBF8FEFCFAFEFBFBFCFAFDFCFAFD -FCFAFFFCFCFCFDFDFDFCFBFCFEFEFEFEFCFEFEFDFEFBFFFEFBFFFEFBFFFEFAFDFCFAFDFCFAFDFC -FEFCFFFEFDFBFEFDF8FDFBFAFEFBFEFEFAFFFEFBFEFEFAFEFEFAFEFEFAFEFEFAFEFEFBFFFCFCFE -FCFCFEFCFCFEFDFCFFFDFCFFFCFDFFFDFBFEFDFBFEFDFBFEFDFAFFFEFAFFFEFAFFFEFAFFFEFAFF -FDFAFFFEFCFFFEFCFFFEFDFFFBFCFEFDFCFEFCFBFEFEFEFFFEFDFFFEFEFFFDFAFEFBF8FCFBF9FD -FDFAFEFDFAFDFCF9FDFEFAFEFEF8F8FEFCF7FDFCF6FCFDFAFCFEFEFFFEFBFBFBF9F8F8F6FCFCFA -FDFDFBFDFDFBFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFCFDFFFFFF909090070907E4E5E4FFFFFFFEFEF3FAFEFA -FBFEF9FFFEF7F4FBFF7C97B7B4C3D2F8FFFFFCFBF9FFFCF5FCFDF8F9FFFCFBFFFDFCFFFDFEFDFD -FEFEFDFFFCFDFFFBFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFBFDFCFBFCFBFBFCFCFBFCFCFBFBFBFBFEFEFEFEFEFE -FCFCFCFBFBFCFDFDFDFEFEFEFCFCFDFDFDFCFBFBFDFEFEFEFDFEFEFCFBFBFEFEFDFDFCFDFEFCFC -FCFDFBFDFDFDFDFDFCFDFDFCFDFDFCFDFDFDFCFBFBFCFCFBFCFCFBFDFDFDFDFBFBFDFBFDFDFCFB -FDFDFDFDFCFBFDFCFCFDFCFBFDFBFBFFFFFFFFFFF9FEFDFCFFFDFFF7F2EE9B9A7C151100000000 -010107000200000200000001000000010000010000010000000000000000000000000000010101 -000000000000000000010101010001010001010000010101000000000101000100010101000000 -0200020202020001010000004242428A8989AEADADF7F7F5FFFFFFFEFEFEFFFFFFD0D0D1000000 -C8C8C8FFFFFFF9FCFAFDFDFDFCFAFBFEFCFDFFFBFDF6F6F4FFFFFF9EAAB16AABAF8FD7E1B0E0FA -BDDFECDDF7FFB9C7CD9D9FA0FFFFFEFFFEF2FEF8F4FCFDF7F9FFF7F9FEF9FCFAFAFEF8F7FBF9FB -FBF9FBFEFCFEFEFCFDFEFCFDFEFBFEFEFFFAFEFEFBFEFFFBFEFCF9FEFCF9FEFCFAFCFFFEFBFEFD -FDFDFCFEFFFFFFFDFFFFFCFFFEFCFFFFFCFFFFFEFFFFFBFCFFFBFDFFFBFDFEFEFAFEFCFBFEFCFB -FEFCFBFEFCFBFEFCFBFCFEF7FDFEF7FCFEF7FFFEF9FFFEF9FFFEF8F9FFFDFAFEFDFBFFFDFBFBFC -FCFBFCFEFBFCFBFEF8FAFEF7FAFEF7FAFCF7FAFCF7FAFEF8FBFDFDFBFDFCFBFCFDFDFFFFFCFDFD -F7FAFBFFFCFBFFFBFAFFFDFBFFFDFAFFFEFBFFFFFFD2D2DA6C7175818A89E4F3F3EAFDFFD4EAF0 -CDE8F1AECAD36F8E945B7572D2E3DDF3FFF0F3FBE8FAFDEDFAFAF0FDFCF5FDFDF8FAFEFBFBFEFF -FAFFFBFBFFFAFAFBF8FEFCFCFFFBFFFBFDF6FCFDF6FCFEF7FCFCFAFBFCFAFBFBFBFEFFFFFCFEFE -FAFDFCFCFFFEFCFEFEFCFFFEF9FFFCFAFFFCFAFFFCFAFEFCFAFEFCFBFEFEFFFEFCFFFEFAFFFFF8 -FBFDF8FCFCFDFCFCFFFCFCFAFCFCF9FCFCF9FCFCF9FCFCFAFCFBF8FCFFFEFBFEFDFBFEFDFAFDFC -FBFDFCFBFEFCFAFAFBFAFAFBFAFAFBFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFBFCFDFDFEFDFDFE -FDFDFDFBFBFFFAFCFFFAFBFFFCFEFFFCFEFFFBFEFFFFFFFDFCFCF9FDFCFAFAFAF8FAFAF8FCFBF9 -FFF8FFFFFAFDFFFDF7FCFDF4FDFFFAFDFFFFFEFCFBFBFBF9FBFBF7FAFAF7FEFEFBFFFFFBFCFCFE -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFCFDFFFFFF909090070907E4E5E4FFFFFFFFFCF3FAFEFAFBFEF8FFFEF7F5FBFF -7B98B7BECBD3F5FFFFF7FFFFFAFFFFFDFFFBFDFFF8FEFEF9FEFEFAFEFFFAFBFCF7FEFFFAFFFFFB -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBFBFFFB -FAFEFDF8FBFAF1F8F9F0FAF9F8FFFFF2F8F9F6FBFCFBFDFCF8F8F8FBF8F8F8F3F3FFF3F9FEFCFC -FCFDFBF8FDF9F9FAF6FEFDF8FAFAFBF7FBFBF5F9F9F3F8F8F4FBFAF4FEFDF6FCFDF7FBFDF7FBFD -F7FBFDF7FBFDF7FCFDF3FDFDF5FDFBF6FCFBF6FBFBFCFDFCFAFCFBFAFEFFF4F9FBFBFDFDF7FCFD -F9FDFEF8FCFDFDFDF7FBFFF5F7FEEFF4FFE7EDF3D89E9F8117160B000000040207000005000002 -000300000302000302010302000200010000000000020202020202020202000000010101010001 -000201000201000200010302000302020302020000030102000100010101000201000000030102 -000000424A48606A66CCD3D0FDFFFFFBFDFAFAFBF8FFFFFFD4D4D1000000C0BBBBFFFFFFFCF7FE -FBF7FCFEF9FEFDF8FEF9F4FCF6F6F1FFFFFF97ADB46CA4AB9BD9E38ABDCD6F878CE3F9FEBBCDD1 -9BA7A8FDFFFFF6FCFBFCFBFAFDFEFCFDFDFCFDFDFCFEFEFCFDFEFBFEFEFEFEFEFEFCFEFEFDFEFE -FDFEFEFCFDFCFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFCFD -FEFEFDFDFCFDFFFFFFFFFFFFFCFCFEFDF9FAFEF9FCFEFBF9FBF8F7F8F5F1F9F6F1F4FEEDF3FDF1 -F0F5EEF3F7F7FEFFFFD9D9E1535C6195A4ABEDFFFFD4F7FFC6EAF9BEE5F58DC9D1557E86667983 -F2F4F9FFFFFFF8FBF5F6FAF7F9FEFBF8FEFAFAFEFAFBFFFCFCFFFBFFFFFFFEFEFFFCFBFCFEFEFE -FEFEFEFCFEFCFEFEFDFEFEFDFEFEFEFCFCFCFFFFFFFFFFFFFCFCFCFEFCFEFEFEFEFEFCFEFEFDFE -FDFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFDFCFDFEFEFEFEFEFC -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFEFFFFFFFFFFFFFFFFFFFDFCFDFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFFFFFFFFFFFFFFFFFFFDFDFCFEFEFC -FEFEFCFEFEFCFEFEFCFEFCFCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFEFDFEFD -FDFEFDFEFCFEFEFCFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFCFCFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFC -FFFFFF919191070707E3E3E4FFFFFFF6FEF5FBFBFAFEFAF9FCFEF7F0FCFF8292B8A8B5B9F8FFFF -F4FFFFFAFFFDFCFFFAFDFFF8FEFCFCFEFDFBFEFEFBFCFBFAFFFEFCFFFFFBFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFBFDFCFBFEFCF9FDFDF7FDFA -F6FCFCF3FEFCFAFFFCFAFFFBFCFFFBFFFFFAF8F8F2F6F4EFFFFCF6FDFEF7FCFFF8FAFFF6FFFFF7 -FFFEF8FBFFF8F9FFF7F7FFF5F6FFF6F5FFF6F5FFF5F7FFF9F7FFF9F7FFF9F7FFF9F7FFF9F6FFF9 -F5FFF6F5FFF6F7FFF6F7FFF6F7FDF5F6FAF3F8FEF5F7FCF4F7FDF5FBFFF9F9FFF6FBFFF8FCFFF6 -FAFFF3F5FFEDF5FFE5EAEED49E9E8018170C000000030205000006000103000300000402000202 -010302000000000000000000020202020202020202000000010101000001000101010101000000 -020202020202010002030000030102000100010001000201000200020001000000343A3876837D -DADEDDFDFFFFF6FAF5F9FDFAFFFFFFD6D6D4000000BEBCBBFFFFFFFDFBFEFDFBFFFCFBFEFCFBFE -F9F7FAF8F5F2FFFFFF94A6AE7DADB695CBD450798A596E72ACC0C3BACACE9BA5A5FFFFFFF8FCFC -FCFBF9FEFEFCFEFDFCFEFDFCFEFEFCFDFEFAFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFF -FFFFFFFCFCFCFDFBFCFDFBFCFDFCFBFEFDFBF9F8F3FBFBF7FAFFF3F9FEF6F8FCFAFFFFFFCFCED3 -797881A2AEB5DDEEF3E1FDFFC7EFF7B1DAE5A6D3DD5E8D9563848CD8E5EAFBFAFEFEFCFBF7F8F2 -F8F9F7FAFCF9FBFDFAFBFEFAFDFFFDFDFFFBFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFEFDFDFEFEFDFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFDFFFFFF919191070707 -E3E4E4FFFFFFF7FEF5FCFBFAFDFAFAFDFFF7F1FCFF8192B8949FA1FAFFFFF5FCFBFCFFFDFEFEFB -FFFEF9FCFDFCFEFEFDFEFEFDFCFCFCFFFFFEFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFBFCFBFDFEFEFDFFFCF9FFFBF9FFFBF3FAF5FBFFF6 -F2F9EDEBF2E5E6EDDCE7EEDDE1E7D4EAF4E2E2ECDBE0E9D8E8EDDEEFEEE2EDE8DFE7F0DCE5F0DD -E3EFDAE3F0DBE1F0DADDEDD7E0ECD8DFEBD8DFEBD8DFECD8DFECD8E0ECD8DDECD8DEECD8DFECD6 -E2EEDBE1ECD8E7EFDDE2EBD5E4ECD7E3ECD7E2EAD6DCE4D0E0EAD4E2EADAE3EDDAE5F1DBE2EBD3 -DBE0C39F9F801B170D000000010002010005000101000100000402000302010100000100000000 -000000020202020202020202000000010101000101020001020001000000030102030002030002 -04000003010200010101000100020100020002000100000023292795A19EE7EEEBFDFFFFF1F6F1 -F9FEFAFFFFFFD5D6D4000000BEBCBBFFFFFFFBFAFBFBFAFBFCFDFCFCFDFDF7F7F8FEFAF6FFFFFF -9AA5AA79A0AB7AA4AC617F8FC2D3D67E8E90B9C6CA99A1A2FFFFFFF7F9F8FCFCF9FDFDFBFEFEFC -FEFEFCFDFDFCFCFCFAFCFCFEFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFCFCFCFEFDFD -FDFDFEFDFDFBFFFFFDFCFBF8F0F0EBFCFDF6F8F9F5FFFFFFD9D8DF7F7F8792929DE9F8FFDEF6FE -CDF0F6B8E7EA9FD0D35F8F95658287C5D9E0F9FEFFFBF8FDFCF7F6FCF8F7F9F9F7F8F8F6FDFDFB -FCFBFAFEFEFDFEFFFBFFFFFFFEFEFEFBFBFBFEFEFEFCFCFCFCFCFCFCFCFCFCFCFCFEFEFEFBFBFB -FEFEFEFFFFFFFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFDFCFDFDFCFCFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFEFFFFFF919191070707E3E4E4FFFFFFF7FEF5 -FCFBFAFDFAFAFDFEF6F1FCFF8192B799A3A1FEFFFFFCFFFEFBFCFAFEFBF9FDFBF9FCFEFEFEFEFD -FEFEFEFCFCFCFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFDFCFAF8FCFCFBFBFDFDFDFCFEF8FAFEF7F9FCF4F4FEE9D7E4CDBDCAB0BECDAD -BECDA9BECFA9B8C9A8B8C8A8BBC6A9C1C9B2C0C7B1C2C9B3BECFAEBACCABB8C9A8BACDACB7CCAA -B9D0ADB9CAA8BACBAABACBAAB9CAA9BACAA9B9CAA9B7CEABB9CFADBBCFAFB8CAA9B8C8A8B9C9A8 -BDCCA8BFCDAABDCCA9B9C8A5BFCDAAC4D1B0BCC9B1BDCCB2C3D2B7C6D3B5C8CDB09B997B1F1E0F -010000020204010007010304000300000100000101020403020403000000020202000000000000 -000000010101000000000000000000000000040303000000010000000000020000000000000000 -0101010002000001000100000000000F1612BDCAC4F8FFFDF9FCFDF6FDF8F8FEFAFFFFFFD9DAD9 -000000AEADABFFFFFFFCFDFCFCFCFCFEFEFDFBFBFBFEFFFEFEF8F5FFFFFFAEB4BC61838753757A -CEE1ECFCFFFF9EA8A9545C5CA5A9ACFFFFFFFBFBFDFCFAF9FEFEFCFCFCFAFCFCFAFFFFFDFFFFFB -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFBFBFBFBFBFBFBFBFBFDFEFEFDFDFEFEFDFCFCFCFA -F6F8F3F8F9F1FBFAF7FFFFFFCBD0D36D71799FA4B0F2F9FFDDF2FEC4E3EEB3DFE499CCCC659091 -4F7578DAE4E4FFFFFFFBFDFFF5F4F6FDFBFCFEFCFEF8F7F5FDFDFBFEFFFDFBFCFAFEFFFDFFFFFB -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFBFCFFFFFF909090080707E3E4E4FFFFFFF7FEF5FCFBFAFDFAF8FEFFF9 -F0FBFF8294B899A39CFEFFFFFBFFFCFBFDF9FEFCFBFFFBF9FEFEFFFDFEFFFEFEFFFCFCFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFC -FEFAFFFDFAFDFBFAF9F9FCF4FBFFF4FAFFF3E4F1D6CAD7BBBDCDACC0D1A8C4D9ABC6DEABC0D5AA -BDCDA5C4CFADC6D1B2C3D2B5C0D3B7C2D5B0C0D4AFBDD3ADBED6B0BCD4ADBDD7B0BDD3ACBDD2AC -BDD2ACBFD5ADBFD4ADBFD4ADBCD6B0BCD4AEB9D2ABBFD4AFBED1ADC0D3AEC4D2ADC2D2ACBECEA7 -C4D3ADC9D8B2C3D2ABC1D2B4BFD1B3C0D3B2C7D2B2C6CAAC8D8C6D1C190E000000000000000003 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000D1211D8E4E0FDFFFFF9FDFCF4FDF8F5FCF8FFFFFFD9D9D8000000B0B0AEFFFFFF -FBFDF9FBFEFAFAFBF9F8FAF7FBFCF9FBF8F3FFFFFFA1A9AE264547142E32BECDD4FDFFFE606867 -05090AA8ACADFFFFFFFDFDFFFDFDFCFEFEFCFAFAF8FDFDFBFFFFFDFFFFFBFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFEFEFEFEFEFEFBFBFBFDFCFDFDFBFBFCFFFEFCFFFEFDFFFCFAFCF8F5F7F2FAFCF5FFFFFF -D1D9D9667072929FA8E7F5FBE1EFFAC6E1F4B6DCE7A3D5D8659393608081B8CCD2FFFFFEFDFFFD -F4F8F6F6F8F7F8F9FAF3F3F5FCFAF8FCFBF9FCFBF9FEFCFAFFFFFDFFFFFBFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFBFCFFFFFF909090080707E3E4E4FFFFFFF7FEF5FCFBFAFDFAFAFCFEF6F4FCFF7F91B599A39A -FFFFFFFDFFFAFCFBFBFEFBFBFFFAFBFEFDFFFEFCFFFEFDFFFCFBFFFFFDFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFCFDFCFDF7FDFEFBFDFEFDFA -FFFFF7FBFCF1F1F4E7D2DFC1BECBACC5D5B1CDE5B3CDE7B0D6F2B6D8EBBBD8E8BADBE5BCDAE7C4 -D4EAC6CFECC7D6ECC5D5EAC4D5EDC6D4EFC5D1EDC4D2EFC6D5EFC5D5EEC4D5EEC5D4EEC3D4EEC3 -D5EFC5D1ECC4D3EEC6D5EFC7D6EDC6D4EAC4D7ECC4DAEBC2DBECC2D9EBBFDCEDC3D7E7BDC6D7AC -CBE1BCC8DEBBBACDAAC7D4B3C2C4A38986673735291D1C162220252B2A312425261F231D292E2C -2629292427262C2B2B2B2B2B2021203333322B2C2D2A292A2223232726262E2C2C29322E242C28 -252C28232D2726302D212B272824252321222223222021201F23221E2120232122131515383F3D -ECF6F3FAFFFFF7FCFCF5FDF9EFF9F4FDFFFFDCDCDB000000A7A9A6FFFFFFFAFEF8FAFFF9F6FBF4 -F5F8F2F6FBF5FCFDF7FFFFFF9CA7A9284846173233A5B3B8EBF0ED565B583B3E3B999A9DFFFFFF -FAFBFFFCFCF9FEFEFBFCFCFAFCFCF9FFFFFCFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFEFEFE -FBFBFBFDFCFDFCFCFBFBFFFDFBFFFEFBFFFDFAFDFAFAFDF8FFFFFFCBD2D3747D7E849193E5F5FC -DCF0F9D1E7F3B4D4E6A7D1DD659A9D4C7778B1C9CEFBFFFFF9F8F2F1F1EBF1F6F1F5FBFAF6FBFB -F1F6F7F5F1F0FDFAF8FEFEFBFEFBF9FFFDFCFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFCFFFFFF909090 -080707E3E4E4FFFFFFF7FEF5FCFBFAFDFAF9FEFFF8F0FBFF8294B8A09F9FFFFFFFFEFCFDFEFFF8 -FDFFF8FEFFF8FCFFFDFBFFFEFDFFFEFAFDFCFDFFFEFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFEFDFDFEF7F6FDF8FCFFFDFFF4FBF5EBFAE8D2E9CD -BBD6ACB7CEA2CBDDB0ADC2996E84645470567472567474597074576F745A6C745B69745B6A7258 -6B745A6D755C6C755C6973596C765C6A71586A71596A71586D735B6C725B6D745A6B74586C7358 -6B73586D745B6B765C68775E7374566F75576873576C7C6163755D61735A8D9E81B2CEA8AFD4A7 -BBDCB1B7CAAC91978380837186887A868D82888F8A646E6E637073728A897488877885867C8387 -73747A66626C9293928B888690888494908C8188884A5A5B5A6E73657D845C757E6D838A768386 -5B6065807C7D8C8A8B8A87888889898887878B8C8C8989847B7C76A7A7A1FAFEF8FDFFFCFBFFFA -EEF4EDFAFFF9FFFFFFDDDDDE000000A6A5A9FFFFFFFAFEFFF0FFFFECFEFFEEFFFFEDF9FDFAF9FD -FFFFFFA3AAB26D99A77A9CA8B5BABFF0EBEF928F95B1AFB39F9FA1FFFFFFFBFDFDFAFAFBFDFDFE -FEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFCFFFEFAFEFDFAFDFCF8FFFD -F9FEF8FDFEF9FDFCF8FFFEFAFFFFFED6DAD7616F6C9DAEAEDDF0F8D5F4FFBEE6ECB5E3E490CED5 -63939A537279C3CFD3FCFDFFFEFDFBFCFBF9F5FBF8EFFDF6F3FFF9F6FEF7FCFCFAF8F9FAFBFCFD -FFFFFFFDFEFEFDFEFEFDFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFBFCFFFFFF8E8F8F080808E3E4E4FFFFFF -F8FFF7FDFBFBFCF9F7FFFFF9F2FBFF8091B69C9C9DFFFFFFFEFEFCFEFEF9FEFFF9FEFFF8FBFFFD -FDFFFEFDFFFEFBFDFBFEFFFEFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFFFEFDFDFDFEF8FEF9F5FCF4F4F8F7FFF6E2F1DBC4D7B6C0D4ACC8D9B1C2D1AA -728460869A8090A9949DA38D9AA28D959E8A989F8D9EA5959CA4959DA3939EA595A0A6969FA695 -9CA3939FA696A0A394A0A394A0A494A0A394A0A394A0A4959CA6949EA6949CA6959DA6959CA695 -9CA695A0A3939EA4919AA3909CA894A3B09C65725E5B7150B6D1ACB5D5ACBCD9B2D6E6CCDADFCD -DEDECFE2E5D7E1E4DCDEE6E097A1A19AA5A7BDD0D0BFD0CFBDC9CAC2C7CBA8A9AF8C898FEAEDEC -E1DDDCE3DAD7E5E2E0D6E0DD54646588A6AB91B2B78FB0B6A3C1C7B4C8CB748083C8C6C5EBE9EA -E3E4E4DEDDDDE0E0E0E2E2E2E1E1DEDCDCD8EEEFEBFDFEF9FEFDFAFDFDF9F9F9F3FBFCF7FFFFFC -DEDEDF0000009F9FA0FFFFFFFCFBFFF6FCFEF4FFFEF6FFFFF7FEFFFFF7FAFFFFFF979CA377A5AE -80ACB0B2C3C2EDEAEB8C8990C7C7CAA4A4A6FFFFFFFBFBFBFDFDFDFEFEFDFEFEFEFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFDFFFEF9FCFBF9FDFDF6FCFAFCFFFAFDFCF7FFFEFB -FFFFFFD4D5D37579779DB1B2DFF5F9E1FCFFBFE6F1AFE0E8ACE2E3598A914B727BA8C0C8FFFFFF -FBFBFCF9F6F5FCFCFAFBFFFCF5FEF9F4FEF7F9FDF9FDFCFAFCFCFDFDFDFCFBFBFBFEFEFEFDFEFE -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFBFCFFFFFF8F8F8F080808E3E4E4FFFFFFF8FFF7FDFBFBFBF9F7 -FFFFF8F2FBFF8092B79C9C9EFFFFFFFEFEFEFEFDFBFEFEFAFEFFF9FBFFFEFDFFFEFDFFFEFBFDFC -FEFFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD -FCFDFCFDF8FFF8F5FEF6FBF9E6F4E1C3D3B5C1D2ACC3D3ABD1DDB98C97798A9883E5F5ECF9FFFF -F9FFFFF9FFFFFAFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFCFFFFFBFFFFFDFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFE5EFDF8E9988A7BE98BBD6AEBAD5B4CBE2C5EEFBE9FBFFF2FFFDF3FFFFF6FBFDF6 -FFFFFFA9B0B3B4BEC1E4F3F4E0EDEEDFE9ECEBEEF3C1C2C8A09EA4FFFFFFFFFFFFFFFEFDFFFFFF -EEFAF9627677A1CACE9CCBCFA3DADDB4DEE6CEEDF181969ADDDCDDFFFFFFFFFFFFFEFFFEFFFFFF -FFFFFFFEFFFFFEFFFEFFFFFFFEFCFCFFFCFDFDF7FAFFFDF7FCFAF5FFFFFBE0E0DF000000959996 -FFFFFFFEF9FBFDFCFBF7FAF8F8FCFBF9FFFDFEF1F5FFFFFF94999C74A8AC75AAA9A6C5BBEDECF0 -949599C0C0C29F9FA2FFFFFFFCFDFDFFFFFFFFFFFFFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDFFFFFFFEFFFEF6F8F7EFF3F2F4FAF8FCFBF7FFFBF8FFFFFFD4D2D67A7E7F929B9D -D5F1F7DDFEFFC0E9F1AADDE9A3DAE368A6A856757DA1BAC3F6FCFFFBFCFFFBF8FAFDFCFAF9FAF7 -F7FBF7FAFFFCF6FCF8FBFFFAFEFFFDFDFDFDFEFEFEFDFDFDFDFDFDFEFEFEFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFBFCFFFFFF8E8E8E080808E3E4E4FFFFFFF8FFF7FDFBFBFBF9F7FFFFFAF2FBFF8091B6 -8E8D94FFFFFFFDFDFEFEFEFEFEFEFCFEFCFAFBFFFEFDFFFEFDFFFEFBFDFCFEFFFFFCFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFCFCFCFEFCFFFCFEFE -F1FFF4D8EACEBCCDABC3D0ADC9CFAFB1B9A36E7B70CCE4E4DAFEFFB6EAEDBFF4F8BCEFF5BFEFF7 -C1EEFBBEE9F8BBE3F3C1ECF9C7F2FCBCE8F6C3EDFBC2ECFBC4ECFBC3EDFBC5ECFBC1EAF9C9F1FE -C7F0FCC1E9F9C0EAFCC2EEFCC0F1FDBFEDF8C8EEFAC8EAF7CEE3EFE5F4FCF7FFFFEEF3EA89947F -8A997DCEE6BAB9D1ABC6DCBEEAF7E9F7FFF6F8FFF7F9F3F0F8F7F2FAFAF7FFFFFFA4AAAAB3B9BB -E8F3F6DAE4E6DFE7EAEEF1F7C4C6CA9999A0FFFFFFFFFBFFFFFDFCFEFFFFE7F5F56981828EC8CC -89C9CE8CD0D3A1DEE4C7F1F77B97A0D7DCDBFFFFFFF6FBFBFFFFFFFFFEFFFFFEFFFCFBFDF7F6FB -F9F9FDFCFAFDFCFBFEFDF9FFFBFEF9FCFCFBFFFFFFE1E1E1000100989C97FFFFFFFBFAFCFCFBFE -F7F9FBF5FFFEF1FDFBFEFAFBFFFFFF9DABAD70A9AE6CA6A6B1D0C8E8EDED9A9FA3BCC2C3969798 -FFFFFFFEFBFDFBFBFBFBFBFBFBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF -FEFFFFF8FBFAEFF3F2F6FEFAFCF8F6FFFFFFE0DEE0626A6E92A0A5DAEFF3DBFCFFBFE7F3ABDAE7 -9FD2DE679BA4306167B7C7CDF0F9FFFCFFFFFDF7FDFEFAFAFFFDFBFBFEFBFEFFFCFCFEFBFBFAF8 -FCFDFBFAFDF9FDFCFDFDFDFDFFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFEFFFFFF -919191070707E3E4E4FFFFFFF7FEF5FCFBFAFDFBFAFCFEF6F0FCFF8193B897969BFFFFFFFDFDFF -FEFEFFFEFEFEFEFCFCFBFFFEFDFFFEFDFFFEFBFDFCFEFFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFCFCFDFFFEFFF8FEF7DBEFDAC8DFC0C8D9B8 -D1D9BAC1C3AC7E8779B2C6C6CEF9FF79B8C968B4C774C4D171C1D070BECD71C0D26CBACD6EBDD0 -76C3D674C2D570BED076C4D670BED174C0D374C2D474C0D373BED175C0D473BED272BDD071B5D3 -70BCD56FC0D575C0D175B8CA79B3C797BBC5D8F2F7F5FFFFACB9A5829472B5CD9FBAD5A5C3D9B2 -D6E7CEF4FEF4F9FFFEF6FCFAFFFCFBFFF9F9FCFAFAFFFFFFA5AAABB9BFBFFBFFFFE2E8ECE7EBF0 -ECEFF4C9CBD09C9EA3FFFFFFFFFBFEFEFBFCFEFFFFE8F6F663808189C8CF89CFD684D2D79EE2E9 -C6F3FD7994A1D7E0E0FFFFFFF6FCFDFBFCFEFFFFFFFFFFFFFFFDFFFFFFFFFEFFFFFCFFFFFAFFFF -FBFFFFF5FFFFF7FFFFFDFFFFE9E9E9030706969695FFFFFFF7FFFFF9FFFFFAFFFFF2FFFFF1FFFF -F5FFFFFFFFFF94ADB273B2BB74ADB2647E7C818B8C798283C0C8C79E9FA1FFFFFFFDFAFBFCFDFD -FDFDFDFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFEFEFEFCFEFDFCFDFBF8FCFB -F8FFFBFFFFFFCFD0CE6F737698A6ACDFF9FCDEFEFFBBDFE6A9D3DBA3D2DE6E9AA54C6F7996B2BC -F0F8FBFCFFFFFAF8FDFAF8FAFAFBFAF8FBF4F9FEFBFEFEFCFEFCFBFCF9F8FDFDFBFAFFFBF7F6F7 -FAFAFAFEFEFEFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFDFFFFFF919191070707E3E4E4 -FFFFFFF7FEF5FCFBFAFDFAFAFDFFF7F1FCFF8192B89999A0FFFFFFFEFDFFFEFEFFFEFEFDFEFCFE -FBFFFDFDFFFDFDFFFEFAFDFCFDFFFEFDFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFEFFFFFFFFFEFEFFFDFCFDFCFBFAEFF9ECCDE4CAB4CCABC1CFB3D6DEC59998868D958E -EDFFFF92C7DC3D8CA55BBCD560C1D154B7C855B9CC50B9CB52BBCE51BDD154BDD24AB4C748B4C6 -4AB5C853BED251BED252BCD051BCD150BCD04BB8CB50BBCF58C3D75AB6D855B8D850B9D152B8CB -57AFC55EACC5B4E2E9E0FFFFDFF6EE687A5BA6BE8EC5E6A7B5D09DCCE1BAEDFBE6F4FEF9FAFFFF -F8FDFEFFFDFFFFFAFCFFFDFDFFFFFFA6A7AABFC4C5FFFFFFF0F2F8F2F5FAF3F7FDCACDD09D9EA3 -FFFFFFFFF9FEFEFBFCF9FDFFE5F5F65C7B7D81BFC78AD2DB85D8DE98DFE6B1DFEC69839297A3A3 -B2BEC0A7B0B4AEAFB6B8B5BCB5B0B6B8B0BDBDBAC4C0C2CAB7C3C6ACBEC0ABC1C2A3BFBFA8BEC0 -AEBFC1B1B6B60203036F6D6EBED0D4B1BEC4BAC6CBBDCDD2B2C9CAA6C4C3A9CDCAB4CAC65E8184 -60A0AA6EA4AD001013000808495454B5BEBDA6AAABFFFFFFFEFAFCFDFDFCFDFBFDFBFBFDFCFCFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFCFEFDF5F6F5F9FDFDFFFFFFDAE0DA6D7370 -808A8AE6FAFFDAFAFEC4EBF29AC1C6ABD6DC79A7B0385E6994ABB6EDF6FFFFFFFFFCFDFFFBF8FE -FEFDFDFEFFFFF6FCF5F8FFFBFEFDFAFFFBF9FEF7F8FEFCF9F7FFF9FDFDFDFCFCFCFFFFFFFCFCFC -FDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFBFDFFFFFF919191070707E3E4E4FFFFFFF6FEF5FBFDFA -FEFCFAFDFEF7F1FCFF8293B89FA4A2FFFFFFFCFEFEFCFFFCFEFDFEFEFEFDFBFCF7FDFCF6FCFCF6 -FCFDF7FFFFF9FFFFF9FFFDFEFFFCFEFEFFFEFFFEFEFDFFFEFBFFFFFFFFFCFFFCFFFFFBFFFFFAFF -FDFEFFF8FFFAF3FAECCDE7C5C3E5B2B8C898CAD6B09FB3948A8C83CBEAEB9CDEEE1C85A031AAC2 -4DCADF53CBDC51B8CE5CC2DB49C0D647C6DE48C2DD41BDCD4EC3DA5BC6E55DC2DF5CC1D55CC4D0 -61BAC962B9C960B6C65BB8C254BAC051C2C454C1CE52C5D550C7D754C0CF68C1CD88D2DDD8FEFD -E4F6F48693889AA38ACEDDB8C3D9B1C9E2ACE1F6D0F7FEF1F9FAFDFBFAFCFBFAFCF9F2FCFAF9FB -FBFBF9F5FCF3AEBCB5C3D1D5F9FFFFEFF7FCFAFCFEFDFCFECAC5CE9E98ABFFFFFFFDFCFAFCF9F1 -FFFFFCE9F6F759838281CAD28DD6DD8FD9DFA2D7E3C4E3EFA5B4C09A9D9CA6ABA9A3A9A4A0A8A8 -98A0A5959CA895A0AB5061694E616D8DA6B177909C6F89967394A46B929F628E9A5E848D00090C -39444865979852848738636E2143533E7479297A74237C7D40929C3E889D7BB5CBA3D0E396BFCC -9FADB7C6D3DCBFCAD0A2A6A8FFFFFFF8F7F5FBFDF6FEFEF9FEFEFBFCFCFAFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -FDFCFDFCFEFCFEFBFDFDFDFCF9FDFEF0FAF9F9FFFFCBD3D76F716BA7ABADEEF9FFCEECF6B3DEE7 -A0D7DA9EDDEA699DA73E63699AB1B0F5FFFBF9FFFBF6F8F0FAFDF4FFFFF9FBFDF6FBFDF6F8FCF5 -FDFCFDFEFEFEFCFBFDFCFDFEFFFFFFFFFEFFFDFCFDFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFEFDFFFFFF919191070707E4E4E4FFFFFFFEFCF7FFF8F9FCF5F4FBFFF9F0FDFF -7B93B4989E9CFFFFFFFDFFFEFCFFFEFEFDFEFEFEFDFBFEF8FDFEF8FBFDF8FDFEF9FDFFF9FDFEF8 -FFFCFEFEFCFDFDFDFDFDFDFDFCFEFDF9FEFDFEFFFCFFFEFFFFFCFFFFFEFEFEFFFCFAFFFCE2ECD5 -C3DDB6B9D4A3C9D7A9CCD5B375876DBFC0C0D7F9FF51A1B50D8FA61DB3C629C8D545BFCE53BDD3 -58BDD64CC1D84BC3DC4DBEDA44B7CA60CBE365C5DF489EB6287E8F2B818A2D7E88327B89387887 -3C74843C728139717F3C6B773A747F3277802C72763E807D5F9E9792A6AD7F8E94313637787870 -8288766B78628295758FA08C939E9790949D9798A79B98AA9A96AD9798A4969C9A929F967B8A88 -AEC1C2E7F0FBE5EEF3E3EBEBF1F6F7C0C4C8999AA4FFFFFFFCFBFAFEFAF3FFFEFDE8F5F75E8689 -85CAD188CFD78BD3DCA8DDE8C8E9F5D1E1EFD1D5D3E3E8E4ECF1EAD9E2DCD3DADACED4D9D6E2ED -52616E304350ACC6D4ADCAD9A4C4D39ECBDB8EC0CE84BBCA83B4BE030F13444E537CC5CE5FA8B2 -2E6D7B003145378795319FA220969836A6B148ABC075C1DA95D0E6B1E3F6D1E2EBE5F5FDB8C3C8 -999EA1FFFFFFFCFBF9FCFDF8FCFEF8FCFCF9FCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFDFEFDFCFBFC -FDFDFCFBFDFEFFFFFFC9CDD1717378A1ABAAE9F7F8DAF6FEB9E2ECA0D6DC8DCBD069A5AC44757C -7B9DA2EFFFFFF7FFFBF8FDF6F7F9F4F8FAF5F8FBF5FBFDF8FCFDF8F9FAF5FDFDFDFEFEFEFCFDFC -FCFCFCFDFDFDFCFCFCF6F6F6FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -FFFFFF919191070707E4E4E4FFFFFFFCFDF7FEFAFBFDF9F8FCFFF8EFFDFF7B93B5949B98FFFFFF -FCFFFEFDFFFEFEFDFEFEFEFEFBFBF8FBFCFAFBFBF8FFFFFDFFFEFCFCFCFAFFFBFDFEFCFDFDFDFD -FDFCFDFCFEFDF9FEFDFEFFFEFFFFFFFFFDFFFEFEFFFDFFF9FEFFFAD5E5C3BED6A9BED4A1D1D5AF -929980768976E1FFFF99DCE916879D009AB20CB2C534DDED3EBACB52C3D753BDD64EC1D752C2DC -54B8D44EB7CB65C6DA56A7BD22697D589AA55899A0609BA7659AA66B99A67597A67B96A77A90A2 -7E959D78979C6B929359858264918A78A79D92A0AD848F9D838B9789939B8694957F928E83A194 -8BA29F76878E7281918490A48E9AB39195B28790A485939B89A09E829A99BBD8D8DBE8F6D5E7ED -CFE1E4E4F4F3B7C3C3949B9EFFFFFFFDFDFDFDFAF4FFFCFCE9F4F6597E827DC2CB89CFD78CD1DA -A2DCE5BEE1EDD4E6F2E2EAE4F7FDF8F6FFF4E3EBE0D2D9D4C7CACCC1CFD83948520616269DBDC8 -B8DDEBB7E1F195CFE08BCEDD94DFED88C6D206161C40495067B3BE569FA72D6C7800243A156A7D -31A8B525B5C039BFD055C7E475C9E98CC9E8A5D7F0C0D6DCE9FAFDC1CCD1979D9FFFFFFFFDFAF8 -FFFFFAFEFFF8FBFBF8FCFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFDFEFEFEFFFFFFFFFFE8E6E9 -6C6A6F9D9AA0E8FFFFE1FFFFB8E6F2A0DBE698D7DE87C8CC1C4E53749CA0DBF4F9FBFFFFF8FBFC -FBFBF6FCFDFBF9FBF9F6F8F5FCFEFBFBFDFAF8FAF7FDFDFDFEFEFEFDFDFDFBFBFBFCFCFCF9F9F9 -F8F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707 -E4E4E4FFFFFFFCFEF6FFFBFBFEFCFAFBFFF7EEFDFF7B93B4909593FFFFFFFCFFFEFDFFFEFEFEFE -FCFCFDFFFFFCFFFFFDFFFFFEFCFCFBFEFEFCFBFCFAFEF9FBFCFAFBFBFBFBFAFBFAF9FCFAF5F8F8 -F9FFF9FCFCFBFEFBFEFCFEF7E9F1E3D6E3CEC2D3AABCD2A3D2E2B4A6A98C7C8B7FD6F8F57DE2EA -189AA603A1B400A3BF13A9C647C9E847C2D750BED951BFD655C9DD4BB8CE5DB7D466C4D64498AB -1D67758AC7D4B7EEFAB4E9F7C1E2F3BFE6F4BEE8F4B7E7EFB9E7EDBFEDF3BDF9FBB9EDF0CAF4F7 -4C6B703D5960C2DEE7C5E5F0B2D5E5C8F0FFB3DFEFB7E1EEBFE7EEBAEAECC1EBEEB8DAE0193944 -779DA8C1EBF8C1D7F3BED8EFBBDAEABEE6EDB3E0E6B6E5E8BDDFEEB6DBE8B2DAE2C6E8EBAAC3C2 -92A4A0FFFFFFFAFAFCFDFCF7FFFCFEEAF4F75B7D8387C8D292D6DF8CD2DB9FDAE3B9DFE9C8DDE9 -E4EEECEDF8F0F3FFF4787E743D423B80837E687476657076AFBEC8728D9988B2BEB0E5EE8BCEDC -82D1DF76CDDD75BDC9091E24181A1D618486657D7C737D7C9CA5AF6B9AA91F768426B3CB37B6D3 -55C1E87EC9F199CEEFA8CDEAC0DCE1DAF1F6B7C9CCA1A7A8FFFFFFFFFCFCFDFDF6FBFEF7FCFDFA -FEFDFDFEFEFEFCFCFCFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFCFCFCFEFEFEFAFAFAF8F8F8FAFAFAF8FEFCFFFFFFCFC8CD696669B4B6BAF2F9FBCBFAFE -A7DEE994D8E682C6D465A2AA3A6F7195B0B0EAFEFFFDFFFFFBFBFEFAF8FAFEFEFCFCFFFBFDFFFC -FDFFFDFAFCFAFCFEFAFCFEFAFDFBFDFBFBFBFBFBFBFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFCFFF8 -FFFFFCFFFFFCF9FFF6EAFBFF7B98B8909795FFFFFFFDFFFFFCFFFDFEFEFEFCFCFCFFFFFFFFFFFF -FFFFFFFCFCFDFEFEFEFBFCFCFDF8F9FBF9FAF9FAF9FDFCFCFBFDFBF8FBFCF3FAF5F8FBF9FDFCF9 -FCFFF6EAF4E1CCDCC1C8D9B0C1D3A8CCD8AE78806BAAC6C3C6FDFF29A4B00192A104B1C600A5C2 -1EA7C853BBE04FC5DD50BAD652BDD84AC0D351BFD35EBBD562BACA3888945299A4A3E1EDA4DDEE -A1DCEFABD5E9A9D8E9A6DBEAA9DBE7ADDFEBADDBEA97C8CCA9D0D6C0D9E03747521A2B3896B1C0 -BAE5F3AADDEF9ED7EDA6E0F5B2E5F6A6D2DE9ECACEB5D9DD9AB8B90825252F5554A0CFCBB3DDF3 -B0DDEEA7D8E9A7DFEF9ED8E79EDAE6A6DEF09ED9EA9BD7E5B2E0EA96B7B88CA29FFFFFFFF7FBFD -FCFAF7FFFCFFE9F1F6607F888DCDD78ACDD594D9E3AAE4EEBBE3EDCAE2ECE1EDEFE9F5F3EFF9F3 -7D837C727371DDDDDEDEE5E1E1E5E6F1F8FDA5BEC45D878C96CED295D6E385D6E37AD7E47FC5D2 -081C203F3439ECF6F6E3E4DEEDE3D9FBF3F5BCD7E02671811FA1BE40B6DA58BFE374C2E390CCE5 -A5D4E7C4E2E5D8F3F7B6C9CB99A2A3FFFFFFFCF6F6FAFBF5FDFEF9FFFFFCFCFCFBFEFEFEFEFEFE -FEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFE -FCFCFCFDFDFDFBFAFAFCFFFFC9C8C77470739C9EA0F9FFFFE1F5F3A4DFE299DBE389D6E46FB3C1 -407076759496EEF5F5FDFFFFFAFAFEFCF8FCF9F9FAFAFCFDFCFFFDFDFFFEFCFFFDFCFEFDFCFEFD -FCFEFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFAFEF6FDFDFBFEFDFAF8FFF6 -E9FCFF7A99B8929896FFFFFFFFFFFFFCFFFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFCFCFCFEFEFE -FBFBFBFFFBFCFDFBFCFCFCFCFEFEFDFCFEFDFAFDFDF0F7F1F6F9F7FFFEFCF3F7EBDCE8D2BFD0B3 -C2D1A9C9D9AF949D798F9B8CD9FEFF89D0DA137D921198AE00AAC200A4C01FAAC954BDDE4FBED9 -56BCDC56C1DB44BCCE58C7DA5FBDD652A7B038868F89CED699D9E68FCDE293CFEC90CDE093D0E2 -97D1E2A2CBE2ABC3DF6172921E202B3E3947352A322E2C3560707968828C8BB3C7ABDCF595CDEB -9ED6F186B3C630546018363C2D41443746442A38316D877E6E8E879BD3DF95CBDA8CC6D98DCFE2 -8FD3E78ED5EA92DBEF8AD5E989D0E4A2DAE68EB3B8869C9EFFFFFFF7FBFCFAF9F7FFF8FEF3F9FE -7C9AA582C0C994D6E092D8E2A0DCE5B5DDE7CFEAF1DBE9F2E7F5F7F5FEFD757A768E8E8FFFFFFF -FFFFFFFFFFFFFFFFFFA9BDC0628C8F8BC5C3A1DEEA87D7E375D2DF84C7D20C1D23483132FFFFFF -FFFFFDFFFFF2FFFFFFC2E3E91C73841C9AB649BEDE4FBEDE6EC9E183D1DB9EE1E3BADADCC7E4E7 -AABFC0B5BDBDFDFCFBFAF3F3FEFFF8FBFEF8FCFCF9FDFDFBFEFEFEFEFEFEFCFCFCFDFDFDFCFCFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFEFEFEF7F7F7FFFFFFFFFEFF -D9DCDB5655550100015E6867D2E9E6C4E6DF99DBD88AD6DA5EB0BD2C6D7D71969ED8E6E8FFFFFF -FCF7F8FEF7F9FFFBFCFDFFFFF9FFFFFCFFFCFBFFFDFBFFFCFEFFFFFCFFFEFCFFFEFFFEFEFEFEFE -FFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDFFFFFF919191070707E4E4E4FFFFFFF8FEF4FBFBFAFAFCF8F8FFF8E9FCFF7998B8929796 -FFFFFFFDFFFEFCFFFEFEFEFEFEFCFCFCFFFFFCFFFFFCFFFFFEFFFFFDFFFFFBFEFCFFFFFFFEFFFF -FBFCFFFBFBFFFDFBFFFBF9FFF3F9F5FAFDF9FAFFF3D9E7C8BFD2A8BACF9DC6D0A5AAAC8870725C -DDFEF99AE2EA2796A60A99BC0BA4C500A3C103A5BD1DA7BD4AC3D856BDD84DBCD345BCCE4CC2D4 -4BBCD056C1D639919E4599A98ADAEC72BFD281D4E579D2E482CEE986CEEA80CBE882CFE28BC0D2 -48617B83798DF8F6FFF3F0F3F7F0F1FCFFFF90B1B158949488CCD47CCAD789C7D77CA1AE41515A -BABABCF8FDF8F0F3EAEBE6E1E9EFF16E89895D9CA38CD7E980D0E780CAD67ECED573D0DD75CDE1 -71CFE66CCEE484CCDA89B3B1A2B3A4FFFFFFFFF9F8FFF2F0FAF6F5F7FFFFC9E2E25781969CCCDD -9AD1DAA5D7DBBCDFE7CEE7F2E1ECE5F4FBF9F5FEFA7D83814E535097979796949488898DBBC7CD -73929983B3BBA1DDE699D8E489D3E578CADE7FC1CB0F2224211E187CAEA975999B90A0A4A9B9B9 -659DA51273881CAFC442B9D454B9D573CFE18DD5E2A2D5DFCEE7F4B3C8D48F99A4FFFFFFFFFBFF -FFFEFCFBF9FBFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFEFEFEFBFBFBFEFEFEFFFFFF616865000000000000 -0000005B7573A8E5DB86D4DA6DB0B938707C75979FE3EEF3FFFFFFF7F4F5F1F2F1F7FCFAFBFDFD -FEFAFBFFFBFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191 -070707E4E4E4FFFFFFFAFFF7FDFCFBFFFEFBFAFFF6EEFBFF7D96B8929796FFFFFFFCFDFCFDFFFE -FEFEFEFEFCFCFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFBFDFCFFFFFFFFFFFFFCFCFFFCFDFFFDFDFF -FCFBFDF4FDFAF4FEF2E8F6E0C2D4AFBCD3A0C6E0A6BEC49B808667ACBCABC0F5FC51B0C40F8AA7 -0397BB049FC200A4C102A0B720A8BD4CC2D453BDDC4FBDDB4ABCD74FC2D94AB9D05BC6DE1B7A8A -52AFC372CBE066C0D566C5DC63C6DA65C5DE69C3E062C1DC69CEE065B7C81B556AA39CAAFFFFFF -FFFFFFFFFFFFFFFFFFC5DEDB397E7957ABAC68CBD27CD4DC699CA43B5258CDCACBFFFFFFFFFFFE -FFFFFFFDFFFF87A49F377F8967B9D068BFDC6FC0D468C3D35DC5DC5DC5DD5BC4DD65C6DF71B2C1 -7B9898D2D4CAFFFFFFFFFCF8FFF3F0FEF9FAFBFFFFE0F4F54A72848CB7C49CCED7AFDBE1B6D9E0 -C9E3EBDAE4E3EFFBFBF4FEFEB6BABE83858997969A979A9C393F443A474D809FA893C1CAA7E0EA -87C8D887D0E27ED0E585C6D6182C332321214B8A844173782D4E561E46492B75822093AE1EBCD4 -3DBCDA57C4E06DC8DB89D2DEA7D8E2CCE5EE99ADB7939BA5FFFFFFFBF8FCFDFAF8FBFBFDFEFEFE -FEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDFFFFFFFEFEFEF7F7F7FFFFFFF1F1F11D20200000000205010000001A39368ECFC5 -6AAFB4316E7564949FDEF5FDFCFFFFFFF6FAFDFDFCF9FBFAF7FBFBF8FBF9FDFAFAFFFBFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFF -F9FFF7FDFCFBFEFEFBFAFFF7EEFBFF7D96B8929797FFFFFFFDFFFEFCFFFEFEFEFEFEFCFCFEFFFF -FEFFFFFEFFFFFEFFFFFEFFFFFBFDFCFFFFFFFFFFFFFCFCFDFEFEFEFFFFFFFCFDFDF4FFF9EAFCE9 -D1E6C5B6D09EC7E1A7CFEAAB7F845E9AAC90D5FCF65EB0C7158DAF028EBB019DC500A2C400A5BF -019DB023A8BC4EC0D351BDDE51BFDE4EBEDA56C6E251C0DB5ECBE70972864BB4CB55BCD458C5DE -4EBED84DC0DB45C2DA4BBFDB45BDD744C8D845BBCA0062736A7889C2D7DFC1CECDCDCDD0E1EDF2 -79999D3E949B52C3CA3FC9D048C8D04799A4285463A5B1B5D2E5E3D2DED9DCE1DECFE4E5598888 -46A6B352BAD45DCBED53BFD74CC0D93EC1E03FC5DC4ECCE45BCAE05DA0AE6B8484F5F3EBFCFEF9 -FCF6F3FEF8F7FBF4F3F4FAFBEEFFFF8EAAB8789BA4A1C8CEC0E5E8C4E2E6CFE7ECE5F2F4F3FDFF -EEF7FDF9FDFEE4E6EEEBEBF2EAEFF2565E6429383FB6D3DEB2DDE8ABE1E98ECFE28DD4E887D3EA -8AC6DD192E37252B3178D0C86DBDC12B6E77003B3F228A971DACC70FB2CA38BCDA5FC9E86FC7DA -92D8E1B2E0E89AB1B7788890C7CFD7FFFFFFFBF8FCF7F4F6FBFDFCFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFBFBFBFCFCFCFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF -FEFEFEFCFCFCFFFFFFDCDCDC0A0A090000000206020000000C2724508E84427D80588A91C9EBEF -F8FFFFF7EFF7FCEAF3FFFFFEFCFEFEF1F8F5F5F8F7F9F9F9FFFBFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFF9FFF7FDFCFBFEFEFB -FAFFF7EEFBFF7D96B8919795FFFFFFFDFFFFFCFFFCFEFDFEFEFDFEFAFCFBFAFCFBFAFCFBFEFFFF -FEFFFFFBFDFCFFFDFFFEFEFFFCFCFCFEFEFBFDFEF8FDFDF9EEFDECDAEFD1BAD6AABAD6A0C5DBA3 -9FB079778B70CBF3EAA9F4FE0A87A70A9CC8009CCE03A2C902A6C300A0B6019BB020A7BC49C2DA -53BFE24BB9D952BFDE51BEDB52C0DC51C1DC0B7B9135A8C13DB9D23FC3DE36BCDA34BBD929BED6 -31BFDB2FBED82CC3D632BFCE1C96A60549650D55680B465500263A325F7644849B2EA5C02EBDD7 -1FC6E326C7E526A6C2086883104C6214516011424F0B2F4340788D2F849648CDD734C3DA25B8D5 -32BDD22EBCD124BFDA22C4D234CAD740BFCC46929683A6A1FCFFF7FCFCF6FCF8F1FFF9F2FCFCF8 -F1F3F4F7FFFFC8D7DF788A8E82989BADC5C6CAE3E3C5DCDCD7E2E6E5EAEAE1E8EDE8EBECE5E6EC -E1DFE8D9DFE37A8287828D94BED2DAB2D4D9A4CDD293CAD592C9D784BACC86B3C71C2B33262D36 -71D1C962BFBE2F8587045B5B36A3A920ACBC1C9FB44AB0CA68B3D07CBECD8DC2C78BB2B1788A8F -A1B0B5FAFEFFF9F7FFFBFBFCFCF9FBFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFBFBFB -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFF8F8F8F9F9F9FFFFFF -D1D1D10F0D0D00000000020001020215272833605D598184C8E7EAF4FFFFF9FBFDFEF2FAFFF4FC -FCFFFCF5FBF9F1FCF8F5FAF9FDFEFEFFFDFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFF9FFF7FDFCFBFEFEFBFAFFF7EEFBFF7D96B8 -919795FFFFFFFDFFFFFCFFFCFEFEFEFEFCFDFCFEFDFCFEFDFCFEFDFEFFFFFEFFFEFBFEFCFCFBFF -FDFBFFFBFBFCFEFEFAFFFFF9FFFEF7E5F2DACBDEBCB1CF9EC1DDA9B3C296757750C1E9D9B7FCFB -42B1C00092B3009DC50AA9D2009EBE00A1BB00A1B3019AAE1AA8C142C3E44EC0DA4DBBD853BDDA -4BB7D048B8CE53C7DC0E7E931690A629ADC215A3BD1CADC919AAC913B1C619ABC51AA8C522B4CA -25AFBF2FA5B657BBD7389DB155AABA1C556C053A543B8EA740B4D926AAD018AFDA1BB4DA32BAD9 -3CB5CF42A4B74BA7B75098A90028411258733EA1B927B2BF1FAEC81CABC930B2C727AABD1DACC2 -21B6C321A8B417858D468487C7DFDEFFFEFCFEFFF8FEFDF4FFFEF5FEF9F5FCFBFBF5F6FCF7FDFE -D7E0E07A84844D5D5D6A7E7C677F7C6C7677727C7D828B8C7A7F8173757977767B797C7D66696B -6F73786A787A5C7476527172527A7D4C72784D7079536E7A141D2410141D407D7A29656D376E77 -3C6D6B2B6C6D1B727A1A727D306C803F667C49707A476B6D5A7672B3C2C4F5FEFFF8FCFEFAF6FD -FEFCFFFDFDFEFDFDFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFBFBFBFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF4F4F4FAFAFAFFFFFFE0E0E0191617000000 -030402030000000000587074DFFBFFF1FFFFF7FDFCFDFAFAFCF8F9FFF9FEF7FCFBF3FAF8F1FCF9 -F2FBF8F8FAF9FEFBFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF -919191070707E4E4E4FFFFFFF9FFF7FDFCFBFEFEFBFAFFF6EEFBFF7D96B8919895FFFFFFFDFFFF -FCFFFCFEFEFEFEFCFCFCFFFFFCFFFEFCFFFEFDFFFFFDFFFEFAFEFCF9F8FFFCFCFFFBFBFBFFFEF9 -FFFFF6FAFAF1D6DEC3BCCEA7BFDCA8C1D6A58D936FAEA28CCBFFFB74CACE1494A9009DBC05A9CA -09A5C405A2BC01A0B604A6B5019EAF19ACC83FC7EF4ABDD44DBCD454BBD452BCD24CBDD058CEE0 -0D7F921490A423AEC110A6BC11A9C40DA5C10BAEC21CAEC818A5C414A4BD169AAF2090A538ADC1 -2799A6419FAA11546511556C348CA02790B01F90B7158FBD149BC21297B4179AA92499A4319DA4 -32838E003348236A83369BB11497AB159ABC1095B82192A92796A91890A423A1B013818F106772 -84B0B7F2FAFDFFF5F7FEFEF4FEFBF0FFFDF3FFFCF6FEFDFCFCF9FFFFFFFDFEFDFEEDF0EFD3DEDE -C1D4D1B5CBC8B9C7C2C2D0CCC3CDC9C7CDCBC5C8C8C7C6C7C9C9C6CAC9C7D0CECFC1CACBBBCCCA -B4CBCAB2D2CCB5D1CFB8CCD2C4D3DA34373B292B2ED9EAF3B7C9DABFCCDAC9CCCFBEC9CAB1D0D6 -A2D8DFB5CEDFC3CCE0BDD0D9C0D9D8DEEFECF0FDFDF8FFFFFCFEFDFDF9FEFDFDFFFCFCFFFEFEFC -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDFAFAFAFAFAFAFFFFFFEEEEEE515051000000000000020000524753 -D3DBE5F7FFFFF2FCFCFAFBF8FDFBF9FDFCFCF8FDFFF9FDFDF6FEFBF4FFFCF7FDFDF7FBF9FEFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4 -FFFFFFFAFEF6FCFCFBFEFEFAFAFFF7EEFBFF7D96B98F9593FFFFFFFBFEFDFDFFFEFEFEFEFCFCFC -FFFFFFFFFFFFFFFFFFFDFDFDFDFCFCFFFFFDFDF9FDFEFEFFFDFFFEF6FDF4F2FBE8E2EDD1BDC7AC -C6CFADD4DDB995AB8A799986D8FBF272CCD31C97A30096AE009FCA029CCA03A1CC06A0BD04A3C1 -03A7BF029FB522A9C54CC4E450C4D64CC0D34DBED149B4C95DC6D953BACC2B92A22E9DB331AFC6 -37BFD832BFD529B9CD20B8D531B4D335A0BC25718B2A6E7F3678850045411B60552165531F5F51 -195553386F782C71802B6984316B912D6B902871872076812872752E6C6F386B6E22535434686B -346C6F226D80307887296D7A296A732C69702F6A6E24646B48808197C3C0FDFFFFFBFDFFFDFCFF -FBFFFEFCFEFEFBFBFBFCFDFCFCFAFCFCF8F9F5FBF8F6FCFAF9FFFDFFFFFFFFFFFFFDFFFFFFFFFF -FDFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFBF8FFFF -FEFFFFFFFFFF515354242326FFFFFFFFFEFFFFFBFFFFF7FDFFFBFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFEFFFFFBFCFFF7FAF9FAFBFBFBFEFDFDFFFFFFFEFEFEFBFBFBFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFBFBFBFDFDFDFBFBFBFEFEFEFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFECCCDCC4242420B0B0B565657EBECEBFFFFFFF1F9FCF6FEFD -F6FBFBFDFFFDFFFEFBFEFCF7F9FFFEFAFFFEFAFFFEFAFFFEF9FFFCFAFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFBFEFDFFFBF9 -FEFEF5FDFFFEEBFBFF7B96AE929997FFFFFFFDFEFEFCFFFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFF -FBFBFBFAFAFAFBFBFBFCFBFEFDFEFFFBFEFCF4FCEFEAF6DFC6D5B6C7D0B2CDD5B5B4C09F768E78 -ACD0C5D9FFFF329BB1088FA5009FBB01A0C7029CC3009CBF049EBE00A0BD00A1B9079BB325A4C0 -4FBEDE51C1D34EBBCF51BBCE4FB7C95CC1D351B5C64BA6B9298CA246B5D045C1D93FBED446CADE -50C7D852B4C8357E919AC4CFD0F1F589A5A86A907AA9CEB5A2C7A8A6CAAFB4D5C6D2EFEBDDF1F7 -DAE9F6D9E6F9D8EAFAD2ECF5CEF0F2C9F2F4CEEDF0D7EEF0DEEDEFDEF1F2D6F0F3C4EDF6CAF0F7 -CFF0F7D4F2F7D4F0F4D1ECEFD4EFF3DDF4F6EBFEFAF8FDFAFEFCFCFFFCFFF9FDFCFBFEFDFCFCFC -FDFDFCFDFCFDFDF9FAFAFEFDF9FDFCF9FDFCF9FDFCF9FCFCF6FAFAFCFDFCFAFDFBFAFDFBFCFEFD -FCFEFDFBFEFDFDFDFAFDFDFBFDFDFBFDFDFBFDFDFBFEFDFBF3FEF6F5FEF7F8FFF9FFFFFF535453 -1B1719FFFFFFF8FDFFFBF6FCFBF5F9FCF7F8FBF9F9F9F7FCF8F8FBF7F7F7FCFBF7FCFDF5FCFEF4 -FBFAFBFDFDFDFEFEFDFDFDFDFEFEFEFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFBFBFB -FDFDFDFBFBFBFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFDFDFDFDFDFD -F8F8F8FEFEFEFCFCFCD2D2D2B3B3B3DADADAFFFFFFFBFAF9F2F8FCFBFFFFF4F8F7F7FAF7FDFCFB -FFFDF9FCFEFEFCFEFEFCFEFEFBFEFEFBFDFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDFFFFFF919191070707E4E4E4FFFFFFFAFEFDFEFCFAFEFEF6FAFFFBEAFCFF -7C98B0959C99FFFFFFFDFFFEFCFFFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFDFDFDFCFCFCFFFFFE -FEFDFEFDFFFEFBFFFBEEFBE6D6E8C7BCD1A7D1D7B7D1D8BC86947D8AAAA2CEFFFF88CCD50687AE -0297B902A8C603A1C1089FC203A0BE009CBE009DBA0099B40B96B039ADC861C1E161C8D859BED0 -5EC0D363C3D367C4D46CC8D96CB7CC1E728B66C3DF5AC0D95CC5DC54BDD37CD1E25194A15C868F -F7FFFFDBDBD97A7472ADB897CDD8B5BECBA5CBD7B6E5F2DAF8FFF2FFF9FAFFFAFEFFF7FFFFFAFF -FFFDFEFFFEFAF4FFFFFBFFFFFDFBFBFFFFFEFFFFFEFEFFFFF9FFFFFBFFFFFDFEFFFDFEFCFFFFFC -FFFFFBFEFFFCFEFFFAFDFFF5F9F8EFFFFEF8FEFBFCF8FCFBFDFFFEFEFDFEFCFBFBFCFBFCFDF8F9 -FAFDFBF9FBFBF9FCFBF8FBFAF8FBFAF9FCFBFDFCFDFDFCFCFDFCFCFDFCFCFDFCFCFDFCFDFCFCFA -FCFCFAFCFCFAFCFCFAFCFCFAFCFDFAFBFFF6FBFFF6FDFFF8FFFFFD5553511F1B18FFFFFFF2FDFD -F7FCFDF6F7F7F7F8F5F6F7F4FDFBFBFCF7F7F9F5F3FCFBF3FEFAF2FEFBF0FDFEFFFEFEFEFEFEFE -FCFCFCFFFFFFFFFFFFFCFCFCFDFDFDFCFCFCFEFEFEFEFEFEFEFEFEFBFBFBFDFDFDFBFBFBFEFEFE -FEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFD -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEF7F7F7F9F9F9FAFAFAFCFCFC -FEFEFEFFFFFFFEFEFEFEFEFEFBFBFAF8FBFEFAFAFCF7F7F6FDFEFEFFFFFDFDFDF8FFFCFEFFFCFE -FFFCFEFEFDFEFEFBFCFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -FFFFFF919191070707E4E4E4FFFFFFFAFEFDFEFCFAFEFEF6F9FEFBEAFCFF7C98B1969D9AFFFFFF -FCFFFEFDFFFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCFCFCF9FCFEFBF1FBF0 -D9ECCFBBD7ABBCDBA6C6D1AB9CA78A80958AC5F9FC82D8E7208EA60096C303A9CA00A7C2039DBB -069BBA029EBD009BC2019CBE0099B529A8C066C7E291D8F77BD3E37CD4E683D8E880CFE085D2E2 -86D3E28DD3E83E859C66B2CA8BD4EF84C9E492D3EB77AFCA5F869ACCE1E9EEF1EE7C7B72A2A297 -E3EECCC2D0B0C7D0B6EEF6E1F4F9EEF8FBF3FDF7F7FBF8F8F9F9FAFAF8FBF9F9F8FBF8F8F9FAFC -FDFFF8FBFDF2FDFCF1FCFDF4FBFCF5FFFEF6FEFEF5FFFDF6FBFAEFFCF9EFFFFCF2F2F3E9F8F8ED -FCFFF0F2F9EBF5FFF8F4FEF9F9FDFCFDFDFEFEFDFDFEFEFEFDFBFCFDFAFBFFFFFFFDFFFEFEFFFF -FAFBFAFAFDFCFAFCFAFDFCFDFCFCFDFCFCFDFCFCFDFCFCFDFCFCFDFCFDF9FDFDFBFBFBF9FEFEFC -FEFEFCFDFFFBFEFEF4FEFEF6FEFCF7FFFFFF6362600D0B08FFFFFFF0F9F8F2FDFAF2FCF6F7FDF8 -F7FDF5FEFCF6FFFBF7FFFCF7FEFBF6FDFAF3FFFDF7FCFBFCFBFBFDFBFBFBFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFBFBFBFDFDFDFDFDFDFCFCFCFFFFFFFFFFFFFCFCFC -FDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFEFEFEFDFDFDFFFFFFFDFDFDF6F6F6FAFAFAFDFDFDFBFBFB -FCFCFCFAFBF9FCF9FEFCF9FDFCFCFCF9F9F8FDFCFBFCFFF7FFFCFEFEFCFDFFFDFEFDFAFBFCFAFB -FFFDFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFD -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF909090070707 -E4E4E4FFFFFFFAFEFDFEFCFAFEFEF6FAFDFBEAFDFF7C98B1949997FFFFFFFBFEFDFDFFFEFEFEFE -FCFCFCFFFFFFFFFFFFFFFFFFFDFDFDFCFCFCFBFBFAFDFDFAF8FDF5E8F3E4C8DFBEB4D5A3BCE1A3 -AEBF95788B70B7D5D0B5F8FF33A3C00592B402A0C500A7BF00A2B40197B00697BA04A0C9009BC5 -009BBE069BB843B7D07BCEE996CDED7ED0DF80D1E185D0E07EC5D58CD1DF87CAD985D2E063ACBF -4589A299D1EBA0CDE8AED3EC6881A3A0B4C4FFFFFF96A08D8C9B80C2D6B9CAE2BFBBCFAFCCDAC4 -F9FFF3FBFCF7FBF9F8F9FEFDF6FFFDF3FFFBF2FEFAF6FDFCFAFBFCF9FCFEF9FDFAF9FDF5F9FEF2 -F7FEF5F9FEF9FAFBF2FDFFF7FBFEF6F6F8F2F9FBF5FDFEF9FAFEFAF8FEF7F9FFF4EFF7EDF5FDF6 -F6FDFCFAFEFCFCFDFDFCFDFCFCFCFCFDFAFBFDF9FAFCFBFBFDFDFDFDFCFCFCFCFCFCFCFCFCFCFC -FEFAFCFDFBFDFDFBFDFDFBFDFDFBFDFEFAFDFBFDF9FDFDFBFBFBF9FEFEFCFEFEFCFDFDFBFEFEF8 -FFFCF8FDFBF8FFFFFF6263610A0A0CFFFFFFF4F8F7F2FCF7F3FDF6F8FDF6FBFCF6FBFCF7FCFCF8 -FCFCF8FBFBF9FAFBF8FDFDFCFBFBFBFDFDFDFDFDFDFCFCFCFFFFFFFFFFFFFDFDFDFDFDFDFDFDFD -FDFDFDFEFEFEFEFEFEFBFBFBFDFDFDFDFDFDFCFCFCFFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDFDFDFDFCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFBFBFBF9F9F9FDFDFDF5F4F4FBF3FB -FFFBFEFCF8FAFCFBFCFDFDFBFAFCF6FAFDFEFBFDFCFBFDFCFAFDFDFAFCFBFDFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFCFCFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -FEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFE -FEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFCFCFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF909090070707E4E4E4FFFFFFFAFEFD -FEFCFAFEFEF6FAFEFBEAFDFF7C98B1868C8BFEFFFFFCFFFFFDFFFEFEFEFEFCFDFEFFFFFFFFFFFF -FFFFFFFCFBFDFBFCFCF9F9F9FEFFF8F3F8F1D5E3D1B4CFABB8DBA4B4DF99879D6EA1B89CEAFFFF -63B2CA108EB201A6CD00A2BD00A4B400A0A90998B00A99C0039FD200A0CC01A0C612A8C663D2EC -86D3ED8FBEDD84CFDC86CEDE85CAD885C7D68FCDDD88C5D279CCD679C8D5387A9097C5DFBDDBF8 -8DA1C082849EFBFAFFDBD9CD7B855EACC393BCDFABB4D2A4BDD5ADE7F8DCFCFDF1FFF8F4FFF4F3 -FDFAF6FBFCF5F7FDF4F9FEF5FDFCF6FFF8F7FFFAFFFBF9FAFCFDF9F8FCF6FAFCF8FCFCFBF6F4F1 -FFFFFDFBFBF8FCFCFDFBFBFDFAFCFDFAFCFFFAFCFEFBFCFAFEFCF8FEFAFAFEFAFEFBFFFCFBFFFD -FAFBFAFBFBFBFCF9FAFBF7F8F7F8F7FAFAFAFCFCFCFEFEFEFEFEFEFEFEFEFDFAFBFEFAFBFEFAFB -FEFAFBFEFAFBFFFAFDFBFBF8FBFBF9FBFBF9FEFEFCFEFEFAFEFDFBFDFEFAFCFFFDFAFDFEFFFFFF -67696B000000FFFFFFFFFFFFFFFFFFFAFFFCFFFFFEFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFEFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFDFFFFFDFFFAF8F9 -FFFFFDFFFFFEFEFFFFFEFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF949494070707E4E4E4FFFFFFF9FEFDFEFCF9FEFEF5F9FEFB -EBFDFF7C99B28E928EFFFFFFFCFBFAFDFBF9FEFBF9FEFBF9F9FEFCFCFCF9FEFBF7FFFDF9FCFCFB -FBFFFFFDF6F8E7E8D9C4D0AEC2D6A2C9E3AC9EB883859479D2F9F594DEF90B87A40495AD06A6C1 -00A6B800A4BE04A6C403A0C3019EC6039EC900A0C20EA2C045BED381D9EB8ED4EA85C1DD84CFDC -84D2DD7ED0DB86D5E37ECCDB87D1E37DCAD38BD6E65DA1B96E9EB4A7C3D36C7C84DFE1D6ECF3DE -798966A8BB96C0D8B7B6CDB1CAD8CCDEE9DDFEFFFBFCFAF1FDF4EDFFF8F2FEFDFDFDFDFCFDFBFC -FDFBFCFCFDFCFCFDFCFCFDFDF8F8F8FCFCFDFDFBFCFDFDFDFDFDFDFCFCFEFBFCFCFCFCFCFBFBFB -F6F6F6FCFAFAFDFDFEFDFCFCFCFDFDFDFDFDFCFCFDFCFCFBFEFEFEFEFDFEFEFEFEFBFBFBFDFDFD -FDFDFDFDFDFDFDFDFDFBFBFBFBFBFBFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFBFBFBFBFBFDFBFBFBFEFEFEFEFCFDFCFBFBFFFFFF636362000000E3E3E3 -CFCFCFCFCFCFD0CFD0CFCFD0CFCFD0CFCFCFCFCFCFCFCFCFCFCFCFD0CFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0CFCFD0CFCFD0D0D0D0D0CFCFD0CFCFD0D0CFCF -D0CFCFD0CFCFCFCFCFD0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFD8D8D87C7C7C020202DFDFDFFFFFFFFEFFFBFDFCFFFFFEFDFBFDF7F0FCFF7F95B79DA29D -FFFFFFFDFCFAFCFCFAFEFDFBFFFBF9F9FEFDFCFCFAFEF9F8FEFDFCF9F9F5F5FAF5F2F4EDC6CDB9 -BDCBA7CEE2B4A6BF906C8659C8E0D4B7EDFB3FA0C20392B006A6C3009EC304A3BA07A3BA08A1BF -0EA0C20C9AC10A98C20299B22FB9CB67DAE484D8E183C8D486C1D388D1E48AD5E77FCBDA81CEDB -7CCBD681D0DA79CAD787D4E58AC9E2436B83677D8FAAB3BEFFFFFE9CA98F859470C8DBB3BFD4B1 -B5C9ACDFE5E0F4FAF4FEFFFBFBFAF6FDF8F5FEFAF9FEFDFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FFFFFFFEFEFEFFFFFFFDFDFDFDFDFDFDFDFDFFFFFEFEFEFEFEFEFEFEFEFEFDFDFDFEFEFEFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDFDFDFDFDFDFDFDFDFEFEFEFDFDFDFDFDFDFFFFFFB1B1B1000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000 -6E6E6EF4F4F4FBFBFAFEFFFCFDFBFEFEFBF8FEFFFAF0FCFF7B92B3A2A7A2FFFFFFFEFEFCFDFCFA -FEFDFBFFFCF9F9FDFDFBFAFDFAF6F7FFFDFBF5F7EFF7FCEED2E2CEBCCCB0C2D6B1C4DAB36C8465 -99B397D7FFFF64B7CF098FB000A1BB01AAC500A8D101A1BD01A0BD009CBD03A2C6059DC40498C4 -26A7BE54C9DC77DEE77ECBD37CBFCB8FC9DC8CD2EC87D0E77DC6D87ECBD685D2DB7CCFD27CD3E4 -80CCE191C8E17694AA8A97A5FCFEFFC1D2B5889876ADBF96C8DAB1CADCB9CCDDC0EEEDF0F9F9FB -FDFDFEFBFCFCF9F9FBFDFDFDFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF -FEFEFEFEFEFEFFFFFFFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFDFDFDFFFFFFFEFEFEFEFEFEFEFEFE -FEFEFEFFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFE -FFFFFFFEFEFEFDFDFDFDFDFDFFFFFFD7D7D7CDCDCDCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF -CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC9C9C9FFFFFFFFFFFFF9F9F8 -FEFFFCFCFAFDFCF9F6FDFFF9F0FCFF7C93B4A7ABA8FFFFFFFDFDFBFAFAF8FBFAF8FEFAF7FBFFFF -FDFDFFFDF7FEFBF6F3FBFEEFE7EED6B2CEA8BCD4ACC4DAB38FA98E84A495DCFEF976D1D82094AA -0094B204B0C600A1B600A3C500A1C200A6C600A7C800A1C5009CC5009BC455B5DF76D1F17DCEE7 -86CCE48FCDEC90CEEF83C9E386C8E08ECDE385CADA7FCED57CD6D57FD4E881C4D89AC4D9D3E6F1 -F5FDFFECEEED7E956F9DB48BD4E8BDB9CAA1C5D1B5E0E9D5FBF4FBFFFCFEFDFDFFFAFAFDF7FAFC -FCFEFFFEFCFCFCFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFBFEFAFDF9FCFEF9F8 -FEFFFBF0FCFF7C92B3A4A8A5FFFFFEFBFBF9FCFCFAFDFCFAFFFCF9F9FCFFFCFCFFFCF8FFFEFDFA -F1F4E0C6CEADB8D9A8C8E0B4AFC79E5C7A64BFE8E3C0F1F824848810778F03779901859A0D92A6 -0F91AE0791AF0D9EB9089CB60798B20B91AE25A4C57ED1F588D7F481CBE085C9DF8CD0EB88CAEC -7EC3D77CBBD090CAE18ED1E179C9D477D5DA7ECDE085BFD2A8C9D6F9FFFFF4FCF49DA797729169 -BDD8AEC6DBB0C5D2B1D5DDCAF6F8F1FEFDFDFEFEFEFDFCFCFBFBFCFBFCFDFDFEFEFDFDFDFEFEFE -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFDFDFD -FDFDFDFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFBFEFAFDF9FCFEF9F8FEFFFBF0FCFF7C93B4 -B0B4B1FFFFFFFDFDFBFDFEFAFFFCFBFFFEFBF7FBFDFDFBFFFFFAFFFFFDFADEE0CAB8C39CC2DEA9 -C3DBAA70865EA2C3B1B2E1E38FC9DA74CCCF78C6E178C1E779C5E176CCE371CCE872CBE470D2E5 -6CD4E567CFDC77CFE47ECDE481D1E884D1E187D2D885CDD485D0DC7FCDE189D0DC8CC9DA91CADC -8CCBE07ECFDD80DEE97BC7D894C8D7CEE7EEFFFFFFC4CDBD79886FA9CAA1C0DDB3BBD2A8C9D5B8 -F0F4E7FFFEFFF9FFF9FBFDF7FDFFF9FDFEF9FFFFF9FFFDF9FCFEFEFDFCFCFCFCFCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFCFCFCFDFDFDFCFCFC -FFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFD -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFCFCFC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -FDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFEFBFEF9FCF9FCFEF9F7FEFFFBF0FCFF7C93B4AFB9A9FFFFFEFBFBFB -FEFEFFFBFFFFF3FEFAF8FFF6FCFFFCFCFBFDE4E4DEC9CCB9CCD6B7BDDD9A929D73909A88D8FFFF -96DCE281D1DC8AD8D28ED9D58FD6D78FCFD893CFDA90C8D58FD6D98CCDD292CBD397CFD790CCD3 -8ECDD38DC8D587CFD985CFDA92CCDF8DC9DB87D0DF8ACAE587CBE189D4E560ADBD64ACC280C4DE -89BECFC6E3F0F9FFFFC9DEC56F8763A0B28BD2EBC4BBD1B0BECDB4E5ECDDF7F7F0FDFBF6FEFDFC -FCFCFDFCFCFDFBFBFCFBFBFCFCFBFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFEFEFFF9FEFCFBFFFAF7FDFFF7EFFBFF7B91AEAAB5A7FEFFFCFEFDFDFDFEFFFBFFFEF5FFF8 -F4FEF5F9FDF7EDF1E8D4DAC9BFCDAFC6DCB3A7B6877F8D72CAEADFADF1F478C5CF92DBEB7485A3 -69839F415970A3D4E69BD0E0A4DFEE92D5E19CD9E9A6DFF0A0D6E9A3DEEE99D4E5AAE3ED99DFE4 -87CED59BD9E499DCE681D3DAA4D4E79DD6E790D3E165A9B874B1C68ECAE1A4D1DEE5F8FFF1F9F6 -8C9F87859A7AC5D3B0C4DDB5B7CAA9CFDEC3FCFFF4FAFAF7FEFBFEFBFBFBFBFBFBFBFBFBFDFDFD -FDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFDFFF9FDFBFB -FFFAF7FDFFF7EFFCFF7B92AEA4AEA3FFFFFFFBFAFDFEFEFFFBFFFDF6FFF7F6FFF5F5FCF0D5DEC9 -C7D6B5C2DCB1B6D8A687836FA6BEB6D0FFFF4DB4BF61B9C8B4F1FF000013738DA45B8496A3DCE5 -7BC3C516666285B9C75E8795395F6E4F6F815D7A8A58849431515D447B8094D0D44D838D387279 -99E2E65B788467949D9AD4DE80BDCA96CADD9CC5DDD2F2F5F5FFFFCCCFC8718268B7CAA9CBD5B4 -BBCFA7CBDBBAE6F3DAF9FEF6FDFDFFFEFBFFFCFCFDFEFEFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFDFFF9FDFBFBFFFAF7FDFFF7EFFCFF -7A92AE9DA89FFFFFFFFBFBFEFEFFFFFAFEF9F3FEF2EEFAEBE0EBD4BCCAA6BACFA5BED9AF82A179 -9D9EA3D6FDFF6BCDDF0E95A657BCCE9DD6EB94B6BA102E32486566B5D5D41E2425A9BDBB0C0A09 -798C920512198B969A454A4B93A9AF110F109BB8C47A9EA8140F12B9DDEB56898F000000183741 -8DC6D189BECC99BCCDCDE0F2F8FFFFDFE3DA707664B5CBAAC6DDB8BFCDACC7D4B6E1EDD4F4FCEA -FFFFFDFEFEFEFFFBFFFCFDFCF9F9F9FFFFFFF6F6F6FAFAFAFCFCFCFCFCFCFDFDFDFBFBFBFFFFFF -FCFCFCFEFEFEFDFDFDFBFBFBFBFBFBFDFDFDFEFEFEFCFCFCFEFEFEFEFEFEFEFEFEFFFFFFFDFDFD -FEFEFEFCFCFCFCFCFCFCFCFCFAFAFAFDFDFDFBFBFBFEFEFEFDFDFDFEFEFEFEFEFEFDFDFDFEFEFE -FCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFDFDFDFFFFFF -FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFDFDFDFDFDFD -FDFDFDFFFFFFFEFEFEFFFFFFF8F8F8FDFDFDF9F9F9FFFFFFFEFEFEFFFFFFFEFEFEFFFFFFFCFCFC -FEFEFEFFFFFFFDFDFDFCFCFCFDFDFDFDFDFDFDFDFDFEFEFEFBFBFBFFFFFFFEFEFEFCFCFCFFFFFF -FEFEFEFEFEFEFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFDFDFDFFFFFF -FEFEFEFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFEFEFEFEFEFEFFFFFFFFFFFFFDFDFDFFFFFFFCFCFC -F9F9F9FEFEFEFDFDFDFEFEFEFFFFFFFEFEFEFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFBFBFBFCFCFCFBFBFBFCFCFCFFFFFFFEFEFEFFFFFFFFFFFFFDFDFDFEFEFEFCFCFC -F8F8F8FFFFFFFFFFFFFEFEFEFEFEFEFFFFFFFFFFFFFCFCFCFCFCFCFEFEFEFDFDFDFDFDFDFFFFFF -FCFCFCFCFCFCFEFEFEFCFCFCFEFEFEFFFFFFFEFEFEFDFDFDFFFFFFFDFDFDFEFEFEFDFDFDFEFEFE -FDFDFDFDFDFDFFFFFFFFFFFFFFFFFFF8F8F8FBFBFBFBFBFBFFFFFFFFFFFFFDFDFDFCFCFCFDFDFD -F9F9F9FDFDFDFCFCFCFCFCFCFCFCFCFDFDFDFEFEFEFDFDFDFFFFFFFCFCFCFFFFFFFEFEFEFFFFFF -FCFCFCF9F9F9FAFAFAFAFAFAFDFDFDFBFBFBFBFBFBFAFAFAFBFBFBFEFEFEFEFEFEFEFEFEFCFCFC -FEFEFEFFFFFFFCFCFCFEFEFEFFFFFFFDFDFDFEFEFEFEFEFEFBFBFBFBFBFBFEFEFEFBFBFBFCFCFC -FCFCFCFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDFFFFFFFEFEFEFFFFFFFBFBFBFEFEFEFDFDFD -FEFEFEFEFEFEFFFFFFF8F8F8FDFDFDF9F9F9FBFBFBFCFCFCFBFBFBFEFEFEFFFFFFFEFEFEFFFFFF -FDFDFDFFFFFFFFFFFFFDFDFDFFFFFFFDFDFDFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFFFFFFFEFEFE -FFFFFFFBFBFBFBFBFBFCFCFCFEFEFEFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFF -FCFCFCFFFFFFFEFEFEFAFAFAFDFDFDFBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFDFFF9FDFBFBFFFAF7FCFFF7EFFCFF7D94B29AA39DFFFFFF -FFFEFFFEFDFDFAFFF8F1FDEFE5F4DFCDDEBEC1CEA5C8D7AFA0B194819681D0E4EEB0EBFC2A9CB9 -008CA654BFD2B4ECFD1F3237D4EEF6010000909BA928262CABABB70507096F888D000E17768389 -464E5097B1BA0D0E0ECAEDF97FA6B00B070CCAEEFD4A7881151B25B5E6F38FD0DC85BFCAB2D0DD -EEF3FDF5FCF0989A887F856CD1EBC5BFDDB7BBCEACD8DFCEF3F9EAFAFEF3FBFCF8FDFDFDFEFDFE -FAFAFAF5F5F5FFFFFFFFFFFFF6F6F6F9F9F9FFFFFFFFFFFFF7F7F7FEFEFEFDFDFDFAFAFAFAFAFA -FFFFFFFCFCFCFAFAFAFDFDFDFCFCFCFCFCFCFAFAFAFCFCFCFCFCFCFEFEFEFFFFFFFCFCFCFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFAFAFAFCFCFCFCFCFCFAFAFAFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFDFDFDF8F8F8FAFAFAFAFAFAFEFEFEFCFCFCFAFAFAFDFDFDFDFDFDFDFDFDFFFFFF -FFFFFFFFFFFFFCFCFCFBFBFBFDFDFDFBFBFBFBFBFBFCFCFCF6F6F6FBFBFBFDFDFDFDFDFDFFFFFF -FDFDFDFBFBFBFFFFFFFDFDFDFFFFFFFDFDFDFDFDFDFAFAFAFBFBFBFBFBFBFCFCFCFDFDFDFDFDFD -F8F8F8FCFCFCFFFFFFFFFFFFF7F7F7F9F9F9FCFCFCFCFCFCF9F9F9FDFDFDFDFDFDFEFEFEF8F8F8 -FBFBFBFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFDFDFDFAFAFAFBFBFB -FBFBFBFBFBFBFDFDFDFCFCFCF9F9F9FBFBFBFDFDFDF8F8F8FAFAFAFFFFFFFFFFFFF9F9F9FCFCFC -FDFDFDFCFCFCFCFCFCF8F8F8FCFCFCFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFFFFFF -FFFFFFF8F8F8FCFCFCFDFDFDFEFEFEFDFDFDFEFEFEFDFDFDF6F6F6FFFFFFFFFFFFFFFFFFFEFEFE -FCFCFCFDFDFDFDFDFDFBFBFBF7F7F7FFFFFFFFFFFFF7F7F7FAFAFAFCFCFCFDFDFDFEFEFEFBFBFB -F9F9F9FBFBFBFBFBFBFFFFFFFEFEFEFDFDFDFBFBFBFCFCFCF9F9F9FCFCFCFBFBFBFBFBFBFDFDFD -FAFAFAFDFDFDFBFBFBF8F8F8FFFFFFF9F9F9FDFDFDFEFEFEF9F9F9F8F8F8FDFDFDFFFFFFFCFCFC -FAFAFAFBFBFBFCFCFCFBFBFBFCFCFCFFFFFFFEFEFEFEFEFEFCFCFCFEFEFEFEFEFEFEFEFEFFFFFF -FFFFFFF6F6F6FAFAFAFDFDFDFFFFFFF8F8F8FDFDFDFCFCFCFCFCFCFEFEFEFAFAFAFEFEFEFBFBFB -FDFDFDFCFCFCFCFCFCFDFDFDFCFCFCF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFBFBFB -FBFBFBFBFBFBFBFBFBFAFAFAFCFCFCFBFBFBFCFCFCFDFDFDFDFDFDFBFBFBFCFCFCFDFDFDFBFBFB -F9F9F9FFFFFFFFFFFFFEFEFEFFFFFFFDFDFDFDFDFDFCFCFCF7F7F7FEFEFEFBFBFBFDFDFDFCFCFC -FAFAFAFBFBFBFCFCFCFEFEFEFAFAFAFCFCFCFCFCFCFBFBFBFDFDFDF9F9F9FDFDFDF7F7F7FFFFFF -FFFFFFF8F8F8FAFAFAFBFBFBFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFCFCFCFBFBFBFAFAFAFCFCFC -FCFCFCFFFFFFF9F9F9FCFCFCFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFEFDFFF9FDFBFBFFFAF7FBFFF7EFFCFF7D93B19BA3A0FFFFFFFDFCFFFEFDFDFBFFF9 -F7FFF2CFE1C8B8C8A6D5E1B2C9D3AD798370B7C0BCD0F9FF60A8C2148CB10092B157C4D6A8E4ED -4272755E91964F7E83A0D5E285B9C42B64718BB1BEA1C9D83E5F716280904662714E778730464A -84BDBFA8E0E54A697567919FA0D8E3445F6F649CAC89D5E193D4E0D7F4FCFFFFFFBCC6AC7A7B63 -C0CAAAB9DBB0B7DCB4BAD6B2EBEBE4FDFFF8F9FDF6F7FAF3FCFDF8FEFFFAF9F9F9FFFFFF7D7D7D -979797FFFFFFFFFFFF909090979797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3A3A3DCDCDCFDFDFD -FEFEFEFFFFFFFFFFFFFAFAFAFFFFFFFBFBFBFFFFFFFEFEFEFFFFFF8C8C8C0D0D0D0E0E0E161616 -D2D2D2FFFFFFF8F8F8FCFCFCFCFCFCF8F8F8FCFCFCFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFEFEFE -F6F6F6FEFEFEFFFFFFFFFFFFFEFEFEF9F9F9FFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFCFCFC -FFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFDFDFDFFFFFFFDFDFDFFFFFFFEFEFEFFFFFFE4E4E4747474 -F0F0F0FFFFFFFCFCFCFFFFFFFDFDFDFAFAFAF9F9F9FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFE8E8E8 -515151FFFFFFFBFBFBFAFAFAFEFEFEF7F7F7FFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFFFFFFFFFFFF -FFFFFFFDFDFDFDFDFDFDFDFDFBFBFBFFFFFFFFFFFFFFFFFFFBFBFBFFFFFFFFFFFFFFFFFFFDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFF3F3F3FFFFFFE2E2E2565656FFFFFFFEFEFEFEFEFEFEFEFEFFFFFF -F9F9F9FFFFFFFFFFFFF9F9F9FCFCFCFFFFFFFFFFFFFDFDFDFFFFFFB6B6B6C7C7C7FFFFFFFEFEFE -FFFFFFFFFFFFFDFDFDFEFEFEFFFFFFFFFFFF888888CACACAFFFFFFFDFDFDFAFAFAFFFFFFFFFFFF -FEFEFEFFFFFFF5F5F5888888FFFFFFFAFAFAFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFEFEFEFDFDFD -FFFFFFFFFFFFFDFDFDF9F9F9FCFCFCF7F7F7F9F9F9FEFEFEFFFFFFFFFFFFFBFBFBFFFFFFFCFCFC -FFFFFF2E2E2EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F2F28B8B8BFFFFFFFBFBFBFDFDFDFCFCFC -FBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4FFFFFF6565653E3E3EFFFFFFFAFAFA -DBDBDB767676F2F2F2FFFFFFFFFFFFFEFEFEFBFBFBFFFFFFFEFEFEFFFFFFFFFFFFFBFBFBFFFFFF -FFFFFFFFFFFFFFFFFFAFAFAFCDCDCDECECEC545454E1E1E1FFFFFFFFFFFFFFFFFFF7F7F7FCFCFC -FAFAFAFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFCFCFCFEFEFEF7F7F7FFFFFFADADADCDCDCD -F2F2F26D6D6DEBEBEBFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFEFEFEFEFEFE -FCFCFCFDFDFDF9F9F9FDFDFDFAFAFAFCFCFCFFFFFFFFFFFFFFFFFFC7C7C76E6E6EFFFFFFFFFFFF -FEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFAFAFAFCFCFCFBFBFBF7F7F7FFFFFFF2F2F2A1A1A1F5F5F5 -FBFBFBFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF8 -FDFAFBFFFBF8FCFFF8EEFBFF7D94B299A4A0FFFFFFFAFEF9F7FBF3F6FFF5DCEADFB9D6B4C5DAB6 -BFD0A78C9C788FA288E2F5E49ABDD934829716879B2A91AA69B7D486CAE59AD7ED97D4EB91D0E6 -8CCCE18AC9DDA0DEF384D1E184CDDE99DCEE9AD7EAA1DAEC9FD0E69EE3EF8BC9D58BC8D49FD9E6 -9AD2DF96CBD99DDADD98D5DE87C0CFB2D8DFF6FFFFE1E8DF707664A7B698D8EAC5B4CBA7BED1BA -D7E4DAFAFDFDFEFFFFFEFEFDFDFDFCFDFAFCFFFDFEFCFBFCFFFFFF787878141414D6D6D6FFFFFF -8989898A8A8AFFFFFFD2D2D2BBBBBBF3F3F3FFFFFF424242868686FEFEFEEDEDEDBCBCBCD8D8D8 -FFFFFFDEDEDED8D8D8FEFEFEFBFBFBFFFFFF5A5A5AD3D3D3FFFFFFFFFFFF171717FFFFFFDDDDDD -F2F2F2F3F3F3DDDDDDFBFBFBCDCDCDCFCFCFE1E1E1EEEEEEB9B9B9F5F5F5FBFBFBE4E4E4D0D0D0 -C1C1C1EFEFEFFFFFFFCDCDCDBABABAEEEEEEFFFFFFFEFEFEFCFCFCFBFBFBD5D5D5B9B9B9E9E9E9 -FFFFFFD2D2D2ECECECBDBDBDE6E6E6FEFEFEF3F3F3C3C3C3B7B7B7656565EDEDEDFEFEFEFAFAFA -D7D7D7FFFFFFFDFDFDCBCBCBFFFFFFE8E8E8BEBEBECCCCCCFFFFFFE9E9E91B1B1BF9F9F9FAFAFA -FBFBFBDBDBDBFAFAFAF3F3F3B8B8B8D1D1D1FFFFFFFBFBFBCACACAC1C1C1F3F3F3FDFDFDFCFCFC -F6F6F6FFFFFFDCDCDCBABABADADADAFFFFFFE2E2E2D7D7D7CACACAFFFFFFD4D4D4BEBEBEEFEFEF -FFFFFFFEFEFEFFFFFFE5E5E5262626FFFFFFD4D4D4C0C0C0F3F3F3FFFFFFFFFFFFC2C2C2C4C4C4 -FFFFFFFEFEFECFCFCFBEBEBEEFEFEFFDFDFD4848487E7E7EFAFAFAEFEFEFB9B9B9D4D4D4FFFFFF -FFFFFFD4D4D4D2D2D25B5B5BBEBEBEFFFFFFFEFEFEFEFEFEF2F2F2BEBEBEC1C1C1FFFFFFBBBBBB -1E1E1EDBDBDBFEFEFEF8F8F8FDFDFDE5E5E5BCBCBCD2D2D2FFFFFFFEFEFEFDFDFDDDDDDDF3F3F3 -FFFFFFF2F2F2DDDDDDFFFFFFCFCFCFB9B9B9EEEEEEFFFFFFD3D3D3D4D4D4E6E6E6E5E5E5FFFFFF -EFEFEFBFBFBFD1D1D1FFFFFFB2B2B2202020DEDEDEE1E1E1FCFCFCEEEEEEE0E0E0FFFFFFFDFDFD -FDFDFDF7F7F7C1C1C1C8C8C8FFFFFFA6A6A63C3C3CEAEAEAFFFFFFFFFFFFD2D2D2535353FCFCFC -E0E0E0B9B9B9E8E8E8FFFFFFFFFFFFCBCBCBC5C5C5F6F6F6FFFFFFD5D5D5BABABAE2E2E2FFFFFF -4141418A8A8AE8E8E8F0F0F0FBFBFBE7E7E7B8B8B8DFDFDFFFFFFFE1E1E1EFEFEFBDBDBDD9D9D9 -FEFEFEF8F8F8BDBDBDC9C9C9FFFFFFF9F9F9F8F8F8F5F5F54848487B7B7BD3D3D3696969B8B8B8 -C6C6C6EEEEEEFFFFFFC5C5C5D1D1D1FFFFFFD9D9D9BABABAEAEAEAFFFFFFE2E2E2E6E6E6FFFFFF -E0E0E0EBEBEBFFFFFFBEBEBEE1E1E1DBDBDBCBCBCB515151D8D8D8CACACAFCFCFCFAFAFAD4D4D4 -B8B8B8F8F8F8FFFFFFCFCFCFFEFEFEF7F7F7D9D9D9BABABA444444AEAEAEFFFFFFFFFFFFFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFFFFFDF8FEFBF1FDFFFC -F1FEFF7B94A6A0A2A3FFFFFFFFFFFCFAFEF6EAF4E8C5D5C6BCD9B5CDE3BE9BAB85828B70E5EFE0 -FAFFFDB8DCE193D1D591E0E98FD2E0A1D5E4A5D9E090DFE190DEE18EDBDE8CD9DD90DFE38EDCE0 -AFE4E5BAEBEEBBEAECC3E9ECC6E9ECC1E2E4C1E9F0C5EDF2C3EAF1C2E6ECC7EBF1C7E7F2CCE4ED -C7E2EECBE7F0E8F8FDF7FBF98B817A9CA588C3D2AECBE0B8BACFAECADBC8E5F2E9FDFFFFFAFBFA -FBFCFBFDFBFDFCFAFBFFFDFEFDFDFDFFFFFF636363A0A0A07B7B7BFFFFFF8989898F8F8FEEEEEE -3C3C3C6E6E6E4A4A4AFFFFFF1C1C1C444444D8D8D88D8D8D797979747474D9D9D9C3C3C3A6A6A6 -FFFFFFFCFCFCFFFFFF5D5D5DD5D5D5FFFFFFFFFFFF131313FAFAFA464646DFDFDFDDDDDD434343 -FCFCFC0000009999993434349A9A9A3B3B3B8E8E8EF5F5F52929296868685959598F8F8FB7B7B7 -6E6E6E777777434343FFFFFFFDFDFDFFFFFFB5B5B54C4C4C7272724C4C4CFFFFFF313131838383 -767676313131FFFFFF7979795A5A5A7272724C4C4CF1F1F1FFFFFFFFFFFF2A2A2AFFFFFFFFFFFF -272727F3F3F36A6A6B7474745C5C5CB6B6B6FAFAFB191919838384EDEDEEDADADA5F5F5FFFFFFF -5F5F5F7B7B7B5A5A5AE6E6E69E9E9E6C6C6C6868687B7B7BF4F4F4FBFBFBFBFBFBE5E5E53B3B3B -7575752D2D2DFFFFFF7C7C7C3A3A3A969696C9C9C98383836D6D6D878787F6F6F6FDFDFDFFFFFF -E6E6E6383838D1D1D15F5F5F616161787878FFFFFF8A8A8A5959595B5B5BABABABB0B0B0676767 -616161757575CDCDCD262626404040F3F3F36464647A7A7A585858EEEEEEC7C7C76262627A7A7A -343434C4C4C4FFFFFFFEFEFEFFFFFF525252767676484848A7A7A79F9F9F1111118D8D8DFFFFFF -FEFEFEDEDEDE606060747474525252C0C0C0FFFFFFFFFFFF999999838383FFFFFF878787989898 -B1B1B15151517171714E4E4EFFFFFF101010757575D1D1D1080808FFFFFF9494947676767D7D7D -C0C0C0838383121212A0A0A0373737FFFFFF7B7B7B989898FFFFFFFBFBFBFFFFFF727272606060 -575757B2B2B28A8A8A1818188C8C8CFFFFFFFFFFFFD6D6D6606060F5F5F53A3A3A6D6D6D474747 -FFFFFFA4A4A45C5C5C5757578E8E8EE3E3E3464646747474393939EEEEEE1D1D1D4A4A4AA4A4A4 -4F4F4FF7F7F73939396D6D6D464646FBFBFB777777676767757575474747EBEBEB5A5A5A828282 -747474949494FFFFFFFBFBFBE9E9E92121214D4D4DA8A8A86161617D7D7D5151518A8A8AFFFFFF -000000A2A2A2DDDDDD3F3F3F6F6F6F444444FFFFFF5E5E5EBABABAFFFFFF4F4F4FCACACA7D7D7D -5E5E5E9D9D9D0F0F0FE0E0E03B3B3B939393383838C5C5C5D5D5D54A4A4A696969696969FFFFFF -010101FFFFFFFFFFFF0B0B0BA1A1A1262626535353FFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFEFFFDF9FEFBF1FDFFFCF1FDFF7C94A7A59EA3 -FFFFFFFFFFFBF3F5EED3E1D1B3C7B5C3DFB6B0C6A0849372B0B6A4FFFFFFFCF5FFE1FDF7DEFFFF -E1FFFFE6FAFFEEFEFFE5FFFFE5FFFFE6FFFFE1FCFFE7FFFFE5FFFFE4FFFFECFFFFEDFFFFEFFFFF -F3FFFDF2FCF8F8FFFBF1FFFFF4FFFFF1FEFFF9FFFFF7FFFFFAFFFFFFFFFFFAFCFFFAFFFFFFFFFF -A4A39A958B7BC9D7ACD0E1B6AEC399C5DABCDFEFDFF3FCFAFCFEFDFDFDFDFCFCFCFDFCFDFCFAFB -FFFDFEFDFCFEFFFFFF5E5E5EBFBFBF909090BFBFBF9B9B9B9E9E9E353535FBFBFBFFFFFF616161 -D3D3D3777777D4D4D4B8B8B82F2F2F7777774B4B4B6A6A6AFFFFFFFFFFFFFAFAFAFDFDFDFFFFFF -6F6F6F0202020F0F0F232323ABABABF7F7F75D5D5DE4E4E4E3E3E35E5E5EFFFFFF141414FFFFFF -2E2E2EE9E9E9E1E1E1414141F9F9F94E4E4EEBEBEBFFFFFF7474748888881D1D1DBCBCBCE4E4E4 -FEFEFEFAFAFAF8F8F8F1F1F1F5F5F5EFEFEF1B1B1BEFEFEF4D4D4DC8C8C8FFFFFF141414DBDBDB -626262FFFFFFE1E1E14B4B4BEDEDEDFFFFFFFFFFFF9A9A9AB6B6B4ACACAB9B9B99FEFEFDF3F3F2 -FFFFFD676766707070FFFFFF353534949493D0D0CEBFBFBF8B8B8BD3D3D30E0E0E858585525252 -4141418D8D8D323232C5C5C5F1F1F1EFEFEFF8F8F8F6F6F6F3F3F3F3F3F3FBFBFB171717DDDDDD -898989999999FFFFFF595959626262747474101010C7C7C7FFFFFFFFFFFFE9E9E93333338B8B8B -CFCFCFFFFFFF626262D8D8D8171717FFFFFFFFFFFFDBDBDBF2F2F2FFFFFFC4C4C4383838EDEDED -797979C2C2C2C9C9C91E1E1E8787874343435B5B5B818181CDCDCDFFFFFF616161C0BFBFFFFFFF -FEFFFFFFFFFFE5E5E5FFFFFF949494414141F9F9F9424242FFFFFFF7F7F7F3F3F3F4F4F4EFEFEF -FBFBFB5C5C5C7D7D7DFFFFFFFCFCFCFFFFFF3A3A3AFFFFFF777777D5D5D5F4F4F4FCFCFCECECEC -080808FFFFFF232323FCFCFCFFFFFF171717E0E0E02323237E7E7E505050525252F1F1F1404040 -FFFFFF494949FFFFFF707070C9C9C9FFFFFFFEFEFEFFFFFF252525FFFFFFFFFFFF262626ECECEC -535353FFFFFFF9F9F9FAFAFAD5D5D5737373696969BEBEBEFFFFFF9F9F9F868686757575E3E3E3 -FCFCFCE1E1E1F3F3F3FDFDFDF5F5F50E0E0EFAFAFA767676BABABAF7F7F76A6A6A9D9D9D7E7E7E -FFFFFFD9D9D95353538A8A8A8E8E8EFFFFFF6B6B6BD2D2D22121216D6D6DE0E0E0E8E8E8FCFCFC -F9F9F9FFFFFF797979B5B5B5FCFCFC515151EBEBEBEAEAEA5D5D5DFEFEFE1E1E1EFFFFFF505050 -D1D1D1FFFFFF7F7F7FA9A9A9737373BFBFBFFFFFFF5C5C5CCBCBCB353535FFFFFFFFFFFF191919 -E3E3E3434343FFFFFFA7A7A79191916C6C6CCDCDCDFFFFFF787878BFBFBF1A1A1AFFFFFFFFFFFF -151515FAFAFA696969FFFFFFFEFEFEFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFCFDFEFFFEF9FEFBF2FDFFFCF1FEFF7B94A79E9B99FFFFFFFFFFFBE2E8D4 -C6D7BCBED7B6BAD3AA91A88395A689F3FAECFFFFFCFBF5FAF3FFFFEFFEFFF2FAFDFFF5FEFFFBFE -F9FFFEFFFEFBFFFDFDFFFEFDFFFBFAFFFBFAFFFEFBF7FBFDFAFDFDFDFDFEFEFBFBFFFBFBFFFAF9 -FFFFF6FFFAF3FFF9F2FFF9F3FFFFF5FFFCF4FAFEFEFDFFFEFAFFFCCEDDC57F9070AFC19BCADCAD -C6DAAEBBD2ADD4E5D1F3FDF6F9FFFFFAFCFDFAFEFCFDFDFDF8F8F8FDFBFCFFFDFEFAFAFAFFFFFF -616161B5B5B5FFFFFF5A5A5A8B8B8BA8A8A8282828FFFFFFFFFFFF757575B5B5B5707070D2D2D2 -B4B4B4525252D0D0D0B5B5B5CDCDCDFFFFFFFFFFFFFDFDFDFDFDFDFFFFFF5A5A5AD4D4D4FFFFFF -FFFFFFFFFFFFEBEBEB555555EDEDEDEBEBEB5C5C5CFFFFFF141414FFFFFF2E2E2EEDEDEDDCDCDC -414141FBFBFB585858EBEBEBFFFFFF656565BFBFBFF1F1F1767676000000FFFFFFFAFAFAFFFFFF -B2B2B22B2B2BA9A9A9282828F4F4F43E3E3EE2E2E2FFFFFF171717D9D9D96A6A6AFFFFFFE2E2E2 -555555F0F0F0FFFFFFFDFDFDFFFFFF464643949391DFE0DDE8E8E93F3D3D7C7C7C7D7D7A737374 -FFFFFD262523E7E7E6979794686868FFFFFFAEAEAE484848CECECEBBBBBBC7C7C7FFFFFFD5D5D5 -6161613A3A3AF0F0F0FCFCFCFFFFFFEFEFEF0F0F0FA1A1A1282828DEDEDE8383839B9B9BFFFFFF -575757A3A3A3C5C5C5AEAEAEEFEFEFFFFFFFFFFFFFE9E9E93C3C3C7D7D7DD6D6D6FFFFFF6B6B6B -D6D6D61B1B1BFFFFFFFFFFFFF3F3F39797973C3C3C959595444444EDEDED686868C7C7C79B9B9B -5A5A5ACDCDCDB7B7B7CECECE6C6C6CD3D3D3FFFFFF6A6A6ABFBFBFFFFFFFFCFEFCFFFFFF343434 -6C6C6C909090484848EEEEEE363636FFFFFFFAFAFAFDFDFDDFDFDF393939878787676767808080 -FFFFFFFBFBFBFFFFFF868686A2A2A28B8B8BFFFFFF999999353535B1B1B11B1B1BFFFFFF161616 -FCFCFCFFFFFF181818DADADA4C4C4CC8C8C8B7B7B7D2D2D2DEDEDE404040FFFFFFDDDDDD4B4B4B -7C7C7CF2F2F2FCFCFCFFFFFFFDFDFD1E1E1EFFFFFFFFFFFF191919DFDFDF494949FFFFFFF9F9F9 -FFFFFFD5D5D5797979525252D1D1D1FFFFFFB0B0B0686868757575E4E4E4FFFFFFF7F7F7D9D9D9 -202020A5A5A50F0F0FFEFEFE6A6A6AC8C8C8F2F2F26E6E6E818181919191FFFFFFEFEFEF414141 -8E8E8EA3A3A3FFFFFF686868C4C4C4F2F2F2BCBCBC323232656565FFFFFFFCFCFCFFFFFF676767 -B6B6B6FAFAFA5C5C5CE5E5E5E0E0E05D5D5DF9F9F9191919FFFFFF383838E8E8E8FFFFFF969696 -959595707070C8C8C8FFFFFF606060CDCDCD292929FFFFFFFFFFFF161616DADADA535353FFFFFF -AAAAAA8A8A8A606060D9D9D9FFFFFF818181AFAFAF141414FFFFFFFFFFFF151515F0F0F05B5B5B -FAFAFAFFFFFFFDFDFDFCFCFCFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFE -F9FBFEFEFBF7FDFAF0FDFFFBF1FDFF7D95A9939D90FFFFF8EDF4E0CFDABCBFD2ACC5DFB19DB18A -607551A5BC9CCCDEC8C9D2C3CCCEC6CACDCBC3D1CAC4D1C8D0CBC6D1CDC6CAD2C5C2D6C3C1D5C4 -C2D5C4C1D4C2C1D4C3C1D5C3CBCFC9CBCFC8CBCEC7CCCFC5CBCEC4CDCFC4D1CDBFCFCCBCCDCCBC -CDCFBDCDD1BFCDD0BEC5D1C4C4D3C2B9CBB089A07A90AB7EBFDDABC2D3ADB9CDAACDE2C8ECFCF0 -F7FFFFFAFCFFFBFEFEFCFEFDFDFDFDFCFBFBFEFCFDFFFDFEF9F9FAFFFFFF515151AAAAAAFFFFFF -E7E7E70000009B9B9BD1D1D1454545949494252525FFFFFF717171525252DFDFDF6464648F8F8F -777676C3C3C3D4D4D4C4C4C4FFFFFFFCFCFCFFFFFF4E4E4EBCBCBCFFFFFFFCFCFCFFFFFFFBFBFB -6A6A6A6565658282823A3A3AFEFEFE060606FFFFFF131313E7E7E7D2D2D2333333FFFFFF424242 -8A8A8A7777778B8B8BD3D3D35D5D5DA4A4A4262626FFFFFFFCFCFCFFFFFF898989565656B0B0B0 -2D2D2DE2E2E22A2A2AD8D8D8FFFFFF050505FFFFFF7676767E7E7E7C7C7C3E3E3EEDEDEDFFFFFF -FCFCFCFFFFFF71706D5F615CFFFFFFCCCCCD464643A6A6A5666660757573F8F8F4151512FFFFFF -484943707070FFFFFFFFFFFF3333339A9A9A5E5E5ED1D1D1ADADAD7A7A7A8E8E8E6B6B6BE6E6E6 -FFFFFFFFFFFFBBBBBB3E3E3EAEAEAE2D2D2DBFBFBF767676898989FFFFFF999999717171868686 -7D7D7DEBEBEBFBFBFBFFFFFFDFDFDF232323BDBDBD666666868686636363FBFBFB6D6E6E737373 -717171B1B1B17A7A7A6D6D6D999999383838E2E2E2797979474747F2F2F2323232989898686868 -DADADABBBBBB6C6D6D989A9A323434C0BFBFFFFFFFFBFEFEFFFFFF0B0B0BA4A4A48B8B8B3B3B3B -FDFDFD272827A2A2A2FFFFFFFFFFFFCACACA3F3F3FA3A3A35D5D5D767676FFFFFFFEFEFEFCFCFC -FFFFFF000000B8B8B8FFFFFF6A6A6A6B6B6BB3B3B41E1E1EFDFDFD0B0B0BF7F7F7FFFFFF060607 -FFFFFF6A6A6A898989767676A8A8A8F4F4F4020202C2C2C2FFFFFF060606818181FFFFFFF8F8F9 -F9F9F9FFFFFF5757577F7F7F6F6F6F8F8F8FD5D5D5353535FFFFFFFDFDFDFFFFFFD0D0D0505050 -E3E3E3363636989898303030FFFFFF9090906868687070709D9D9D9E9E9E575757B1B1B1151515 -DFDFDF8B8B8B525252C4C4C4545454F0F0F02727279797973E3E3EE2E2E2727272929292FFFFFF -5F5F5FCACACA6666668E8E8EA2A2A2616161FFFFFFF7F7F7FFFFFF8989894D4D4DBEBEBE515151 -E0E0E0DCDCDC4E4E4EF3F2F3090A09FFFFFFDADADA404040979696252525FFFFFF9090905E5E5E -9A9A9A1B1B1BD4D4D47070707F7F7FA9A9A9212121D8D8D83E3E3EFFFFFF9E9E9E6C6C6CC8C8C8 -4B4B4B9595954C4C4CFFFFFF6767676C6C6CA8A8A8000000FFFFFF4444447A7A7AFFFFFFFEFEFE -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFAFBFEFEFCF8FEFAF0 -FDFFFCF1FDFF7D95A88FA48DE9FBE2D3E3C4C1D0A9BFD5A4C2DDA796A5814A5F3B668161597258 -5F715965715C6D695D60735E5C785B63725568705664715465705F656F5F65705E646E5E646E5E -636E5C65745F65725C637059636F586371556271556E6F5E6B6E5C6C715F636C5866705D64705B -64706065715C7380618C9D74ADC490C7E2AABDCDB1C3D7BDDFF4E3F1FFF9F9FFFFFDFEFFFCFFFF -FDFFFFFFFFFFFDFDFDFFFDFEFFFBFEFDFDFDFEFEFEB9B9B9DBDBDBFAFAFAFFFFFFB2B2B2D2D2D2 -FFFFFFB8B8B8969696D7D7D7FFFFFFEDEDED7E7E7EF5F5F5DEDEDE838383C2C3C3FBFCFDD7D7D8 -BABABBFFFFFFFEFDFDFFFEFFB8B7B8E5E5E5FFFFFFFCFBFCFEFDFDFEFEFEEEEEEE848484CBCBCB -BCBCBCFCFCFC9D9D9DFFFFFFA5A5A5F5F5F5EAE8E9AFAFAFF0F0F05D5D5DC4C4C6A2A2A2F4F4F4 -FFFFFFBDBDBD919192DADADAFFFFFFF7F7F7FBFBFBF3F3F49A9A9ABABABADADADAE5E5E6AEAEAE -E9EAEAFFFFFF9F9FA0FFFFFFF0F0F1898A8ACACACABEBEBFF7F7F7FEFEFEFEFEFEFDFDFEE7E8E1 -D0D1CDFFFFFFFBFBF6BDBEBA999B94D5D6D4CFD0C7FAFAF4A0A19DFFFFFFCACBC3E5E4E4FEFDFE -FFFFFFD5D5D5939292B3B3B3FFFFFFF6F6F6B6B6B6949394EEEDEDFFFDFFFBFAFBF9F7F9FFFFFF -A2A2A2ABABABE1E1E1CBCCCBCCCCCCD0D1D0FFFFFFF6F5F5C5C6C5838383E6E6E6FFFFFFF8F7F8 -FFFFFFEEEDEDA4A4A4FFFFFFC6C6C68D8C8CE7E6E7FFFFFFF6F4F49E9E9EA8A7A8FFFFFFF4F3F3 -929292CBCACBBFBFBFEEEEEEEBEBEB898989F2F1F1D4D3D4939393B8B6B6FFFFFFFEFCFCC4C5C5 -999F9FB6B8B8E1E7E4FDFFFFFAFFFEFEFFFFCBC9CA959494DCDCDCB4B4B4FFFFFFBCBABC959595 -FFFFFFFAFAFAFBFBFBB8B8B8A0A09FD6D6D8CCCCCEFFFFFFFEFEFEFBFBFCFFFFFFABABAAF9F8F9 -FFFFFFEEEEEE979797C6C5C5D6D6D6EAE9EAA0A0A0FAF9FAFFFFFF969695FFFFFFE8E8E9959596 -B0B0B1F1F1F2FFFFFFA2A1A2BBBBBAFFFFFF5F5E5F9A9A9BFFFFFFFAF9F9FAFAFAF9F9F9ECECEC -9F9F9FAAAAABFFFFFFEAE9EAAAAAAAFFFFFFFBFBFCFFFFFFE9E9E9B5B5B5FFFFFFC5C5C5959595 -C8C8C8FFFFFFF1F1F1AAAAAA9B9B9BF0F0F0FFFFFF9E9E9EB1B1B1D0D0D0D5D5D5FAFAFA8D8D8D -D1D1D1C3C3C3F6F6F6CECECE929292BEBEBEFFFFFFC6C5C5D2D3D2FFFFFFBEBEBEE3E3E4EDEDED -9A9B99AAA9A8FFFFFEFFFFFFF7F8F8FDFBFCF7F7F78A8A8AD4D4D3BFBEBEF0F0F0F2F2F1B7B7B6 -F9F9F9A0A0A0FFFFFFFFFFFFBFBEBE9A9898CFCFCFFFFFFFFAF8F8A1A0A0B1B1B1B2B2B2EBEBEB -E8E8E8B7B7B7EEEEEE252525F5F5F5B5B5B5FFFFFFD3D3D4BDBDBDFFFFFFBABABA979797E4E4E4 -FFFFFFFFFFFF939393C3C3C3949494FFFFFFC0C0C08F8F8FFFFFFFFDFDFDFEFEFEFBFBFBFBFBFB -FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFCFBFBFAFCFFFEFBF7FDFAF0FDFFFBF0FDFF7D95A9 -98AB98DEF4DDBED5BAB7D3AEC2DCB4C0DDB1BDE5B4B1D0A5CEE2BEBBC9A7C0CEA6BECDA2BDD0A4 -BED0A4BDD0A4BDCFA4BECFA5BDD1A4BCD09EBCD19DBCD19DBCD09CBCD09CBCD09CBBCD9ABDCE9C -BDCE9BBFCF9CBECF9DBECF9CBBCF9FBDD0A1BED0A4BECFA4BCCFA6BFCDA4BAD4AAB8D39DABC789 -B6CE90D1E5B4C6D8B0B4C4A3D8E7CEF2FCEFF7FDF9F9FFFEF8FDFDFEFDFCFEFCFCFEFEFEFBFBFB -FBFDFBFBFDFBFCFBFCFDFDFDFFFFFFFFFFFFFAFAFAF9F9F9FFFFFFFFFFFFF6F6F6FFFFFFFFFFFF -FFFFFFF7F7F7FFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFBFCFFFFFFFFFFFFFFFAFBFEF9FA -FAFDFCFFFFFFFEFFFFFDFFFEFDFFFEFCFFFEFBFAFAFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9FFFFFF -F9FBFAFFFFFFFCFFFDFFFFFFFFFFFFE6E4E4595755E6E6E6FFFFFFF8F7F4FCFBF9FFFFFFFFFFFF -FEFCF9FCFBF8FFFEFCF7F6F4FEFDFBFFFFFFFFFFFEFFFEFCFFFEFBFFFFFFFFFFFEFDFCFAFFFFFF -FCFBF9FEFDFAFFFFFFFFFFFFFFFFFFFDFFFBFEFFFDFCFFFAF9FDF8FCFEFBFFFFFEF6F9F5F7F9F6 -FFFFFFFFFFFFF8FAF7FFFFFFFEFFFEFFFFFFF8FAF7FFFFFFFCFFFFF8FAF9F6F8F7FFFFFFFFFFFF -FFFFFFFAFCFBFBFFFCFFFFFFFFFFFFF9FCFBF4F6F5FBFDFCFAFDFBFAFCFBFFFFFFFFFFFFFCFEFD -FFFFFFFFFFFFFEFFFFF8FFFCFAFFFFFFFFFFFFFFFFFEFFFFFAFCFBFAFCFBF9FCFAFDFFFFFFFFFF -FAFDFCFFFFFFFFFFFFFEFFFFFAFDFBF8FCFBFFFFFFFFFFFFFAFDFCFFFFFFFFFFFFFFFFFFFFFFFF -FDFFFEFBFEFCFFFFFFFAFDFBFEFFFFFFFFFFFFFFFFF5F9F8F7FAF9FEFFFFFFFFFFFFFFFFFFFFFF -FBFBFBFBFCFBFDFCFDFEFFFFFFFFFFFFFFFFFFFFFFF9FCFAFFFFFFFFFFFFF9F9F9FBFBFBF7F7F7 -FFFFFFFFFFFFFBFBF9FFFFFFFCFCF9FEFEFCFCFCF9F9F9F7FFFFFFFCFEF6F9FAF4FCFEF7FFFFFF -FFFFFAFCFDF7FEFFF8FFFFFFFEFFF8FAFCF5FFFFFFFDFDF3FFFFF6FFFFFFFFFFFEFEFFF3FDFDF3 -FFFFFEFFFFFFB0B1AB4F5049FFFFFFF8F9F3FDFFF9FEFFFAFDFEF9FEFFFAFFFFFFFFFFFFFCFEF8 -FFFFFBFFFFFFFAFCF6FBFCF6FAFBF7FEFEFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFAFAFAF9F9F9 -FFFFFFFFFFFFFEFEFEFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFCFCFC -FFFFFFFFFFFFFFFFFFF8FCFEFFFFFFFFFFFFF5F9FCFFFFFFF4F7FBFEFFFFFFFFFFFFFFFFF9FEFF -F5F9FCF8FBFFF8FCFFFCFFFFFFFFFFFDFFFFFFFFFFF8FCFFFBFFFFFFFFFFFCFFFFFFFFFFF9FFFC -F8FDFAFFFFFFFFFFFFFFFFFFF3F6F9F4F9FAFFFFFFFFFFFFFFFFFFFFFFFF1C1D1C9E9E9D5E5E5E -9C9C9CFFFFFFFFFFFFFBFBFAFFFFFFFFFFFFF9F9F9FFFFFFFFFFFFFBFBFCF8F8F7F9F9F8FFFFFF -FFFFFFFFFFFFF7F7F6FFFFFFFFFFFFFEFEFEFEFCFDFEFCFDFEFEFDFEFEFDFEFEFDFEFEFDFEFEFD -FEFEFDFEFEFDFEFEFDFEFEFDFCFEF3FFFBF8FEFEF7F9FFF3ECFCFF7C99B18BA28CCDE5CBB9D2B3 -BAD4A9BFDCABBBD9A4C3E0AEC6DEB2CADCB6C6D5B0C5D9ADC4DAABC5D9AEC6D9AEC6D9AEC5D9AE -C5D9AEC5DAADC7DCAAC7DCABC7DCABC6DBAAC6DCABC6DBABC7DFADC8DEACC8DEACC7DDACC7DDAC -C8DEACC3DBACC5DDADC6DEB0C4DBB0C4DCB2C5DCB3C1DBB0C5E1ADC0D9A0C4DBA7C7DCB2B9CBA9 -CDDCBEF1FBE7F4FDF1F9FEFBFBFEFEF8FDFBFEFDFEFEFEFEFEFEFEFBFBFCFDFDFDFDFDFDFDFDFD -FCFCFDFBFBFBFEFEFEFEFEFEFEFEFEFCFCFDFDFDFDFCFCFCFFFFFFFEFEFFFBFBFCFDFDFEFEFEFE -FDFDFDFEFEFEFEFEFEFDFEFEFDFCFDFEFEFEFDFEFDFCFBFCFDFCFCFDFCFCFBFDFCFBFDFCFBFDFC -FDFFFEFDFFFEFBFFFEFEFDFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFDFEFEFDFFFEFEFFFF -FCFEFDFEFFFFF5F6F4C5C5C4F4F6F4FCFFFCFCFFFBFBFEFBFDFEFBFBFDFAF9FDF9FCFDFAFDFEFC -FBFDFAFBFDFAFCFEFCFAFDFAFBFEFAFBFEFAFBFEFBFAFCFAFCFEFBFAFCF9FBFEFAFBFEFAFCFDFA -F9FAF7FBFDFAFAFCF9FCFEFBFCFEFBFAFCF9FCFEFBFCFEFBFCFEFBFBFDFAFCFEFBFBFDFAFCFEFB -FCFEFBFAFCF9FDFEFCFDFEFCFDFEFBFBFDFDFCFEFDFBFDFCFCFEFEFCFEFDFCFEFDFCFEFEFCFEFE -FCFEFDFDFFFFFBFDFCFBFDFCFDFFFEFCFEFEFCFEFEFCFFFDFDFFFFFEFFFEF9FEFDF9FEFDFAFEFD -F9FCFCF9FEFDF7FDFCFDFEFDFCFEFDFCFEFEFCFEFEFCFEFEFCFEFDFCFEFDFCFEFEFCFEFDFCFEFD -FCFEFDFDFEFEFBFDFCFCFEFDFBFDFCFDFFFEFDFFFEFDFEFEFBFDFCFBFDFCFBFDFCF9FBFAF8FAFA -F9FBFAFAFCFCFAFCFCFAFCFBFBFDFCFBFDFCFAFDFBFDFDFDFBFBFCF9F9FAFAFAFBFAFAFBFBFAFB -F7FAF9F9FBFAFAFCFBFAFCFBFAFCFBF9FCFBFEFDFEFBFBFBFAFAFBFCFCFCFDFDFDFBFBFCFAFAF8 -FDFDFBFFFFFDFDFDFBFDFDFBFBFAFAFDFEF8FDFEF9FDFEF8FDFEF9FDFEF9FBFCF6FDFEF9FDFEF9 -FBFCF6FEFFFAFDFEF9FAFCF6FDFCF7FDFCF8FCFBF8FDFDF8FDFDF9FEFCFAFCFDF8FFFFFDA6A6A5 -EFF0E9FFFFFDFBFBF7FDFCFBFEFEFBFCFCFAFEFDFCFBFBF9FDFDFBFDFDFBFDFDFAFDFDFCFCFCFA -FCFCFAFCFCF9FDFDFEFDFDFDFDFDFDFCFCFCFDFDFDFCFCFCFEFEFEFCFCFCFDFDFDFDFDFDFDFDFD -FEFEFEFBFBFBFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFBFBFBFAFAFAFBFAFB -FDFFFEFCFEFDFBFEFDFEFEFEFAFBFCFCFDFDFBFCFDF9FCFBF8FAF9FBFDFCF9FBF9FBFDFCFAFCFB -FCFEFDFCFEFEFCFDFCFCFDFCFCFDFEFBFCFDFBFCFDFBFDFBFBFCF8FBFDF8FCFCF8FBFDFAFBFDFA -FBFDFAFCFEFAFAFBF8FBFDFAFCFCF8FCFCF8FFFFFFF1F1ED8F8F8FBCBDBAFFFFFFFEFEFAFCFDF9 -FCFDF8FCFCF8FCFDF8FDFDFAFDFDF9FCFCF8FDFDF9FDFDF9FCFDF9FEFEFAFDFEF9FEFEFAFCFDF8 -FDFEF9FCFCF8FEFEFAFEFEFAFEFEFAFEFEFAFEFEFAFEFEFAFEFEFAFEFEFAFEFEFAFEFEFAFEFEF9 -FEFFFBFAFFF4FEFEFAFDFEF7F5FFF2EAFCFF7897B07B957BC1DBBEB3CFA8B5CFA0BBD7A2B6D399 -C2D2A4C7D4AAC1CDAABFCDA7BDD0A3BAD29FBBD2A9BBD1A8BBD1A8BBD1A8BBD1A8BBD2A9BAD1A6 -BAD1A5BAD0A5BDD3A8BDD3A7BDD3A8B8D3A5B8D2A6B8D3A6B7D2A5B8D2A5B8D2A5B7D1A4B7D4A8 -B9D4A9B7D3AAB7D4ABB8D2ABB8D4A8B8D0A3BBD3A2C3D9AFB7C9A8BECFB5E3F0D6F5FFEBF3FBEF -F1F6F2F9FCFBFCFFFEFEFEFBFEFEFBFEFEFCFBFBFAFCFBFAFBFBFAFDFDFBFFFFFDFFFFFFFFFFFE -FFFFFDFFFFFFFEFEFBFEFEFDFEFEFBFDFDFCFDFDFCFDFDFAFFFFFEFEFEFCFFFFFDFDFDFBFDFDFC -FEFEFBFEFFFEFFFFFFFBFFFCFFFFFFFDFFFEFAFFFBFDFFFDFDFFFCFDFFFCFFFFFEFFFFFDFDFFFD -FCFCFAFDFDFAFDFDFAFFFFFFFFFFFDFFFFFEFCFEFBFCFEFBFDFFFDFCFEFCFFFFFEFAFDF9F5FBF8 -FFFFFFF8FEFBFBFFFDFDFFFEFDFFFFF8FFFAF8FFFBF9FFFBF5FCF8F8FEFAFBFFFDF6FCF8FBFFFD -FAFFFCF9FFFCFAFFFBF7FDF9FAFFFCFBFFFDFAFFFCF7FEF9F7FEFAF7FDF9FCFEFBFCFEFBFCFEFB -FCFEFBFCFEFBFBFDFAFCFEFBFBFEFAFFFFFFFDFFFCFDFFFCFBFDFAFBFDFAFCFEFBFDFFFCFDFFFC -FEFFFDFEFFFDFBFDFAFDFFFCFCFEFBFBFEFAFCFEFAFBFDFAFBFDFAFBFDFAFBFDFAFCFEFCFAFCFA -FDFFFDFBFDFAFBFDFAFBFDFAFDFFFDFCFEFCFCFDF9FBFDFAFBFDFAFCFDFAFBFDFBFDFFFDFDFFFD -FBFDFAFCFEFAFCFEFAFBFDFAFBFDFAFBFDFAFBFDFAFBFDFAFBFDFAFBFDFAFBFDFAFBFDFAFCFEFB -FDFFFCFBFDFBFDFFFCFAFCF9FDFFFCFDFEFDFDFEFDFEFFFDFAFCF9FBFDFAFBFDFBF8FAF8FBFDFA -FCFEFBF9FBF9FAFCF9F9FCF9FDFCFBFCFDFAFBFBFAFBFBFAFBFBFAFBFBFAFAFCF8FBFDFBFCFEFC -FAFCFAFAFCFAFAFCFAFEFEFDFBFBFAFCFCFBFCFCFAFDFDFCFBFBF8FBFBF9FDFDFBFEFEFCFDFDFB -FEFEFCFEFEFCFBFBF8FBFCF9FBFBF8FFFFFDFDFDFAFCFDFAFCFCFAFDFDFCFDFEFBFCFBF9FAFAF8 -F8F8F5FCFAFCFBFAFCFCFAFCFBF9FBFBF9FCFCF9FCF5F5F2F9FAF7FFFFFFFAFAF7F8F9F7F9F9F7 -FDFDFDFEFEFDFCFCFCFDFDFCFEFEFDFDFDFCFCFCFCFCFCFCFCFCFCFEFEFDFEFEFDFEFEFDFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFEFEFEFBFBFBFEFEFEFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFEFBFDF8FDFDF8FCFDF8 -FBFDF8FDFFFAFDFEF9FDFEFAFDFFFAFDFFF9FFFFFBFCFDF8FFFFFBFCFDF7FDFFFAFFFFFBFBFDF8 -FDFDF8FCFDF8FEFFF9FDFFFAFDFFF9FDFEF8FDFEF6FDFFF6FAFBF5FAFCF6FAFBF5FEFFF9FCFCF6 -FEFFF9FCFDF5FDFEF5FEFFF7FAFBF4FFFFFFFFFFFAFBFBF5FCFDF5FEFEF6FEFFF6FEFFF6FEFFF7 -FCFCF5FCFDF5FCFCF5FEFFF6FEFFF6FDFFF6FDFEF6FFFFF8FDFEF7FCFDF4FEFFF6FCFDF5FEFFF6 -FEFFF6FEFFF6FEFFF6FEFFF6FEFFF6FEFFF6FEFFF6FEFFF6FCFFF6FDFFF6FEFFF6F7FFF6FBFDFA -FBFFF9F3FFF2E8FDFF7597AF839B80DAF0D4D6EBCBD2E4C1D0E2BACFDFB6D3DAB8D7DBBEDBDCC2 -DFE4CAD3E2C1CFE5BDD1E1C4D2E1C4D2E1C4D1E0C2D1E0C2D1E0C2D4E3C4D3E3C2D5E3C4CFDFBE -D0DFC0CFE0BECFE3C3CFE3C1D0E3C3CEE1C0CEE1C1CDE2C0CCE3C1CCE3BFCCE2C2CBE0C3CDE2C6 -CDE3C9CFDFC2D0E0C2D5E5C5DAE7CCD0DBC6DFE8D5F5FFEDF9FFF3F6FAF4FDFFFFFDFDFCFCFCFA -FBFCFAFCFCFAFBFBFAFEFEFBFEFEFBFEFEFBFBFBF8FDFDFAEFEFEDF0EFEEFEFEFCD2D2D2FFFFFF -FAFAF7FDFDFCFAF9F8FAFAF7F9F9F7F9F9F6FBFBF9FBFBF8FDFDFBFCFCF9FCFCF9F7F9F6E1E2E1 -F7F8F7D3D3D2E8EAE9FDFFFDF6F9F5FAFBF9F8FBF8F1F1EFEEEDECF9FAF8FDFCFAFAFAF8FFFFFF -C5C5C6F1F2F1E3E3E2FEFFFFF7F9F5F8F9F7F7F9F5F4F7F3FAFBF9F3F7F5F8FDFADBDCDCFFFFFF -DFE2E0DBDCDBFCFFFEF7FCF9F7FCF8F7FCF9F6FBF9F2F9F5F9FDFBF3F8F5F3F9F6F8FFFAF9FFFD -FBFFFDF4F9F6F7FEFAF6FDF9F5F9F7F7FBF9F8FEFBF7F8F5FBFCFAF7F9F6F9FBF8FBFCFAFAFCF8 -F9FAF8FFFFFFDCDDDCFFFFFFF7FAF6FBFCFAFBFCFAFAFDF9F9FAF8FAFBF9F3F5F2F6F7F5FDFCFC -F5F7F4F9FAF8FBFBF9FAFDF9FBFCF9FCFEFAFCFEFAFCFEFAFAFCFAFCFEFAFAFCFAFCFEFAFCFEFA -FCFEFAF9FBF7FAFCF9F9FBF9FCFEFAFBFEFAFBFEFAFBFEFAFBFCFAFBFEFAF9FBF9F9FCF9F9FBF9 -FCFEFAFCFEFAFCFEFAFCFEFAFCFEFAFAFCFAFDFFFBFAFDF9FDFFFBFAFCFAFAFCFAFCFEFAFAFCFA -FCFEFAFAFCF9FDFFFBFBFEFBFBFEFBFDFFFBFDFFFBFDFFFBFBFDFAFCFEFAFAFCFAFDFFFBFDFFFB -FDFFFBFCFCFAFDFCFAFDFCFAFDFCFAFDFCFAFDFCFAFDFFFBFDFFFBFDFFFBFDFFFBFDFFFBFDFFFB -FBFBF8FDFDFAFDFCFAFDFCFAFCFDFAFDFDFAFDFCFBFDFDFBFBFBF9FBFBF9FBFBF9FBFBF9FCFCFB -FCFCFAFCFCFAFAFAF9FCFCFAFCFCFAFAFAF8FCFCF9FDFDFBFEFEFCFEFEFCFEFEFCFEFAFFFEFBFF -FDFBFFFFFDFFFFFDFFFFFCFFFFFFFFFCFCFAF6F6F3FFFFFDFDFDFBFDFDFAFDFDFDFBFBFCFBFBFC -FEFEFEFEFEFDFEFEFEFBFBFCFDFDFCFDFDFCFBFBFCFCFCFCFBFBFCFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFDFDFDFEFEFEFEFEFEFBFBFBFDFDFDFBFBFBFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFBFBFBFBFBFBFBFBFBFEFEFEFEFEFEFEFEFDFCFDF8FCFEF8FCFEF8FCFEF8FCFDF8FCFDF8 -FCFDF8FCFDF8FCFCF8FDFFF9FDFFF9FDFEF9FEFEF9FDFEF9FDFEF9FCFDF8FCFEF8FCFDF8FCFDF8 -FCFDF8FCFCF7FEFFF9FDFEF7FDFEF4FEFEF9FEFEF9FEFFF9FCFCF6FCFDF7FCFDF7FCFEF6FCFDF5 -F9FAF2FDFFF6F7F9F0FDFEF6FCFEF5FDFEF5FBFDF5FBFDF5FCFDF5FBFCF5FEFFF6FEFFF6FEFFF6 -FEFFF6FEFFF6FEFFF6FDFFF6FCFFF6FDFFF6FEFFF6FEFFF6FEFFF6FBFCF5FBFDF5FBFDF5FBFDF5 -FBFDF5FBFDF5FBFDF5FBFDF5FBFCF4FFFFF8FFFFF7FCFDF4FAFFF9FDFCFBFDFDFAF8FFF8E9FCFF -7796B398AA93F3FFECF4FFEDF8FDEDF8FDEDF8FBECF8F7E7FAFAEEFCFAF2FBF9EFF9FDEFF9FFEE -F4FCECF6FDEDF5FDECF9FEF0F9FEF0F9FEF0F7FDEDF7FDEFF7FDEEF8FEEFF8FEEFF8FEF0F6FDEC -F6FDEEF7FDEDF7FCEDF7FCEDF7FCEEF4FDEAF5FDECF6FDEDF3FBEEF6FDF0F6FDF2F6FCEFF6FCED -F6FDEDF9FBEBF8FBE8FBFCE7F8FFEFF5FCF1F9FDF8FAFBFBFCFCFBFDFCFAFBFEF8FCFEF8FCFEF8 -FCFDF8FCFDF8FCFEF9F8F8F3FFFFFF7D7F7ACACAC6FFFFFF090A04FFFFFFFFFFFFFCFDF8F4F5F0 -FFFFFFFFFFFFFFFFFFF7F8F3F6F8F2FAFCF6F9FBF5FFFFFFFFFFFF626263BEBEBCABACA8D3D3D1 -FFFFFFFFFFFFFFFFFFFFFFFFB4B6B0969794FFFFFFFFFFFFFFFFFFFFFFFF939393A8A9A760615B -FFFFFFFFFFFFFCFDF9FFFFFFFFFFFFF5F6F0FFFFFFFFFFFF1D201EFFFFFFC5C6C5B7BAB7FFFFFF -FFFFFFFFFFFFFFFFFFF3F5F2FFFFFFFFFFFFFFFFFFFEFFFEF6F9F6F8FCF8F8FBF8F5F7F5FFFFFF -FFFFFFFFFFFFF8FBF7FFFFFFF3F5F2F8F9F7FFFFFFF9FBF8FFFFFFFFFFFFFFFFFFFFFFFF242524 -FFFFFFFFFFFEFFFFFFFFFFFFFFFFFFF5F6F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F9F4 -FAFBF7F9FCF6FCFEF8FBFDF8FBFDF8FBFDF8FBFDF8FBFDF8FBFDF8FBFDF8FCFEF8F9FBF7FAFCF7 -F9FBF7FDFEF8FDFEF8FDFEF8FDFEF8FDFEF8FDFEF8F9FBF7FBFCF7F9FBF7FCFEF8FCFDF8FCFDF8 -FBFDF8FBFDF8FCFEF8FAFDF7FEFFFBFAFDF7FCFEF8FBFDF8FBFDF8FBFDF8FBFDF8FBFDF8FBFDF8 -FBFDF8FBFDF8FDFFF9FCFFF9FDFFF9FAFCF8FBFDF8FAFCF8FDFFF9FCFFF9FCFFF9FDFDF8FDFEF8 -FDFEF8FDFEF8FDFEF8FDFDF8FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FCFFF9FDFDF8FDFEF8FDFEF8 -FDFEF8FDFEF8FDFEF7FCFBFBFCFDFBFDFDFBFDFDFBFDFDFBFBFBF9FDFDFFFDFDFDFDFDFDFFFFFF -FEFEFEFCFCFCFDFDFDFEFEFEFFFFFFFCFCFDFEFDFEFEFEFEFEFBFCFEFCFCFCFBFCFFFDFDFFFCFD -FFFCFDFCFEFDFEFEFEFFFFFFFCFCFCFCFDFDFCFDFCFCFDFFFCFDFFFBFBFFFEFEFFFDFEFFFEFEFF -FBFBFFFCFDFFFCFDFFFCFDFFFCFDFFFBFBFFFEFEFCFDFEFEFEFEFEFCFCFCFCFCFCFCFCFCFCFCFC -FCFCFCFCFCFCFCFCFCFDFCFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFD -FBFBFCFEFEFEFEFEFEFEFEFEFDFAFCFDFBFCFDFBFCFDFBFCFDFBFCFDFBFCFDFBFCFDFBFCFDFBFC -FFFDFDFFFCFDFFFDFDFDFBFCFDFBFDFDFCFDFEFBFCFDFBFCFDFBFEFDFBFDFDFCFDFDFBFBFFFEFA -FFFDF9FFFDF9FFFCFAFFFCFBFFFDFBFDFBFAFDFBFAFEFBFAFBFDF8FDFEF8FCFDF8FEFEFAFCFEF8 -FEFFFAFBFCF8FDFDF9FDFDF9FDFDF9FDFDF9FBFCF8FEFEFAFDFEFAFDFEFAFDFEFAFDFEFAFDFEFA -FEFEFAFEFEFAFEFEFAFEFEFAFEFEFAFEFEFAFBFCF8FDFDF9FDFDF9FDFDF9FDFDF9FDFDF9FDFDF9 -FDFDF9FBFCF8FFFFFBFEFEFAFCFDF8FCFBF7FEFAFCFFFAF8FAFFF7EDFBFF7A93B3A5B29CFAFFF2 -F8FDF2FEFCF9FFFBFEFFFAFFF9FAF2FCFBFAFFFBFFFFF9FDFFFEFCFDFCF7FCFCF4FEFCF6FCFCF6 -FFFEF8FFFDF7FFFDF9FEFDF8FEFDF9FFFDF8FDFCF8FDFCF8FEFBF8FFFBF7FFFBF7FFFBF5FFFDF8 -FFFCF8FFFCF9FEFFF5FFFFF5FFFDF8FDFCF7FFFDF9FFFEFBFFFEFAFFFDFBFAF7F1FAF7E9FFFDE8 -FFFFE6FCFFF3F9FEF7F8FBF9F7F7F9FBFAF9FDFEF9FCFDF7FCFDF8FDFDF8FBFCF6FBFCF6FCFEF8 -FDFDF9B2B2AF0101010000008F8F8C494A446D6D6A191917DFE0D9FFFFFF8F8F8904040392938F -FFFFFFF9F9F4F9F9F5FFFFFF5C5C582F2E2D3E3B3AD0D0D0827F7BD5D4D4ADABA8000001666663 -F5F7F0000000000000E3E4DF30303042423DDADBD95C5C5DB4B4B28B8D8711120E484946FFFFFF -91938F949694FFFFFF8987845656560000003736378F8E8B929190FFFFFF474745000000E1DFDE -FFFFFF484848C8C7C4000000B4B3B0FFFFFFFBFAF7FBF9F6FFFFFFA3A1A01110105D5B5BFFFFFF -373738FFFFFFFDFFFD4C4E4BFFFFFF676A66020303A7A9A89E9E9E000000212222D4D5D4969795 -060606888985FFFFFFA6A8A44D4E4B171716CCCEC8616260161815FFFFFFFBFCF7FDFEF9FBFEF6 -FBFEF7FBFDF7FCFFF7FBFFF7FBFDF7FBFFF7FBFFF7FCFFF8FAFCF5FAFCF5FAFCF5FDFEF7FDFEF7 -FDFEF7FDFEF7FDFEF7FEFEF8F9FDF5FBFDF6F9FCF6FCFFF8FCFEF7FBFEF7FBFDF7FBFEF7FBFEF7 -FCFFF9FAFEF6FCFFF9FBFEF7FBFFF8FBFDF7FBFDF7FBFDF7FCFEF7FAFDF6FAFDF6FAFCF5FDFFF9 -FCFFF8FDFFF9FBFEF6FBFEF6FBFEF6FDFFF8FCFFF8FCFFF8FBFCF6FBFEF6FBFEF7FCFEF7FCFEF7 -FBFDF6FCFFF8FCFFF8FCFFF8FCFFF8FCFFF8FCFFF8FBFCF6FBFEF6FBFEF6FBFEF6FBFEF6FBFEF7 -FCFCFAFCFDFBFDFDFBFDFDFBFDFBFBFDFCFAFCFBFBFDFBFCFCFBFCFFFFFFFDFDFCFAF9F9FBFBFB -FDFCFCFEFEFEFDFDFDFDFDFDFDFEFEFDFCF8FEFDF7FEFCF7FFFEF8FEFEF8FEFCF9FCFEFDFDFDFD -FCFCFBFCFCFCFCFDFCFCFDFCFCFDFFFCFBFFFCFBFFFEFDFFFDFDFFFEFDFFFCFBFFFCFCFFFCFCFF -FCFCFFFCFCFFFCFCFFFEFEFEFDFEFEFEFEFEFBFAFAFBFBFCFBFAFCFCFBFCFBFBFCFBFBFCFCFDFD -FCFCFDFCFDFDFAFAFAFBFAFCFAFAFCFCFAFCFCFAFCFAFAFCFDFCFCFCFBFCFBFBFCFEFEFDFEFCFD -FEFEFDFDFAFFFEFAFFFEFAFFFEFAFFFEFAFFFEFAFFFEFAFFFEFAFFFDFAFFFFFCFFFFFBFFFFFCFF -FDF8FFFEF9FFFEF8FFFFFBFFFDFAFFFEFBFFFEFAFFFEFAFFFEF9FFFFFCFEFFFDFDFFFDFAFFFDFF -FFFCFFFFFCFFFEFAFFFEFAFDFFFAFEFCFCFCFEFEFEFEFFFEFCFDFDFDFEFEFDFDFDFBFBFCFCFCFC -FCFCFCFCFCFCFCFCFCFBFBFCFEFEFDFDFEFDFDFEFDFDFEFDFDFEFDFDFEFDFDFEFDFEFEFDFEFEFD -FEFEFDFEFEFDFEFEFDFBFBFCFBFBFCFBFBFCFCFDFCFCFDFCFCFCFCFCFBFCFDFBFCFBFBFCFFFFFF -FFFDFFFCFDFDFEF8F5FFF6FCFFF7F9FEFFF7EFF9FF7E92B4A5ABA6FFFFFFFBFAF8FEFCFCFBFDFC -F7FEFDF9FCFFFAFCFEF9FCFAF8FBFBFAFDFFFCFDFFFEFAFBFEFBFAFEFBFAFDFAFAFDFAFAFDFAFB -FDFCF8FDFCF7FEFCF8FDFBF6FDFBF6FEFAF7FBF6F7FDF9FAFDFAFBFDF9F9FDF9FAFDF9F9FDFBF6 -FDF9F7FDFBF6FDFAF6FDF9F6FEFCF8FEFBFDFEFBFEFEFCFFFEFBFFFDF9FEFDF9FDFEFDFBFEFBFA -FEF8F7FFFBF9FEFAF9FEF9F8FDFBF4FDFAF4FDFAF4FEFBF4FEFBF4FEFAF4FEFDF5FFFFFF7C7975 -D7D4CEFFFFFF060503FFFFFFCDCBC868635CCBCACA6A6864FFFFFF6A655EA5A39FFFFFFCFFFFFF -7E7C78AEA8A2FFFFFF474743D3D3D46A6C6488898141423AFFFFFFA4A3A0CBC9C3C5C4BC959691 -FFFFFF000000FFFFFFFFFFFF141414CBCAC9070500FFFFFFB2B1AE8E8E869F9E978F8E8BFFFFFF -63625CD4D4D21F1F1FFFFFFF96969493938C908E91A7A6A7FFFFFF242225FCFBFC151515DAD9D9 -FFFFFF010000FFFFFFFAF8FBFFFFFFCECECE4F494BF0EFF0DAD5D09593918C8882D2D3CDA7A7A5 -8A8A83BDBDB6575754FFFFFF8B8C84ECEBE91C1C1CFFFFFF9C9C9A8A8983FFFFFF67645EC2C2C0 -9F9D99706F6CFFFFFF000000FFFFFF83827D91908AFFFFFFFAF9F3FEFBFAFBF9F8FEFCFAF9F6F5 -FCFAF8FDFBF9FAF8F6FBF9F7FAF8F6FEFCFBFEFCFAFFFCFAF9FDF9F9FDF9F9FDF9F7FBF8F8FBF8 -F7FBF7FAFDF7F9FDF7FAFDF7F9FDF7F9FDF7FAFDF7FDFAF6FDFAF6FDFAF6FDFAF6FDFAF7FDFAF6 -FDFCF7FDFBF7FCFBF7FEFCF8FEFCF8FEFCF8FCFAF6FDFAF7FCFAF6FEFBF8FDFBF8FDFBF6FEFDFB -FEFDFAFEFDFAFEFDFAFEFDFAFEFCFAFEFCFAFEFCFAFEFCFAFDFBFAFDFBFAFDFBFAFEFDFAFEFDFA -FEFDFAFEFDFAFEFDFAFEFCFAFEFCFAFEFCFAFEFCFAFEFCFAFEFCFAFEFCFAFFFAF9FFFBF9FBF9F6 -FBFDF8F9FDF8F8FDF8F5FFF8F4FDF8F2FCF6F3FDF6F3FEF7F3FEF7F5FCF7F5FCF7F3FBF6FAFFFB -F7FFF8F8FFFBF7FFFDF7FEFDF4FBFAF9FFFFF8FFFEF9FFFFFEFBF8FDFCF9FDFCF9FEFCF9FDFCF9 -FFFCFAFDFBF9FFFEFBFDFDF9FDFCF6FDFDF6FDFDF3FEFCFAFEFCFBFEFCFBFDFCFAFDFCFAFEFCFB -FDFCFAFDFCFAFDFCFAFEFDFBFDFAF9FFFDFBF6FDF9F8FEFBF7FEF9F8FDF9F8FDF9F6FDF8FDFFFB -FBFEFAFCFEFBFAFCF9FAFCF9FAFCF9FBFEF8FDFFFAFBFEF8FBFDF7FBFDF7FBFEF7FCFDFBFBFDF9 -FBFDF9FBFDF9FBFDF9FBFDF9FBFDF9FBFDF9FBFDF9FBFDF9FBFDF9FCFDFAFAFDF8FAFDF8FAFDF8 -F9FCF7FAFCF9FAFBF7FFFCFCFDF9FCFDFCFDFDFAFDFDFAFDFDFAFDFDFBFBFDFBFBFDFCFBFDFBFB -FEFEFDFCFCFCFFF9FAFFF9FAFFF9FAFFF9FAFFF9FAFFFAFAFDFDFAFCFCFAFCFCFAFDFDFBFDFDFB -FDFDFCFCF9FCFFFCFEFEFCFEFEFCFEFEFCFEFEFCFEFDFBFDFCFBFDFCFBFDFCFBFDFCFBFDFCFBFD -FFFDFEFEFDFEFFFDFEFCFBFDFCFCFDFCFBFDFCFEFAFBFEFAFBFEFAFBFDFAFCFEFCFBFCF9FBFCFA -FCF8FFFFF9FCFDFFFAF3FEFF7E92B4A3B0ABFEFFFFFCFFFEF7F7F9F7F9FDF5F9FDF8FDFDF5FBF9 -F2F8F1F5FDF5F7FCFAF7FCFEF8FCFCF9FCFBF8FCFBF8FCFBF8FCFBF8FCFCF8FCF8F8FCF9F9FCF9 -F6FBF8F7FBF8F7FCF7F7FAFBF7FCFAF7FBFAF7FCFAF7FCFAF7FBFBF7FBF7F7FBF8F6FBF8F8FBFA -F7FBF7F9FDFAF6F9FCF6FAFCF6FAFCF6F9FCF6F8FCF6F9FCF6F9FBF6FAFDF5F8FCF7FBFEF7FAFD -F7FAFEF7FBFAF7FBFAF7FBFAF7FBFAF7FBFAF7FBFAF7FBFAFFFFFF5F6261B1B4B4FFFFFF1D211F -FFFFFFD8DBD94B4F4E8B8F8D353837606461585C5BA2A5A5FEFFFFFDFEFD555958CFD0D0FFFFFF -6D6D6ED0CFCF626867BEC0BF949A994346446D7070FDFFFF8E9291808282FFFFFF0F0F0FFFFFFF -FFFFFF1B1A1BB8B9BA828685FFFFFFF8FBFA2A2E2DA8ABAB8D8F8FFFFFFF656867C2C4C41A1A1A -FFFFFF9293929CA19F383A3EF4F5F6FFFFFF85898CADAEAF1B1B1BFFFFFFFFFFFF101010FFFFFF -F8FAFDF9FCFFF2F5F59093954C4F5163676AE2E3E5FFFFFF4B4E4E888988C2C3C2F7F9F86C6E6C -515553868888FFFFFF121212FFFFFF6C6C6C5458576262624D4D4FB2B2B2A0A0A0818182FFFFFF -101110FFFFFF8F91917E8081FFFFFFF7FAFAF6F9FCF9FCFDF7FBFCF6F9FCF8FBFCF9FCFDF9F8FC -FAFAFCFAF9FCFCFAFEFBFAFDFCFAFDF8FEFEF8FEFDF9FEFEF7FDFDF7FDFDF7FDFDF9FEFDF8FEFD -F8FEFDF8FEFDF8FEFDF8FEFDFAFDFDFAFDFDFAFDFDFAFDFDFAFDFDFAFDFDFAFDFEFBFEFEFAFDFE -FBFEFEFBFEFEFBFEFEF9FCFDFAFDFDF9FCFDF9FDFEF9FDFEFAFDFDF9FDFEFAFDFEFAFDFEFAFDFE -FAFDFEFAFDFEFAFDFEFAFDFEF9FDFDFAFDFFFAFDFFFAFDFFF9FDFDFAFDFEFAFDFEFAFDFEFAFDFE -FAFDFEFAFDFEFAFDFEFAFDFEFAFDFEFAFDFEFAFDFDFAFDFFFAFCFFF7FBFEF6FDFEF5FEFEF3FFFE -F5FEFDF3FDFDF2FCFCF3FEFEF3FDFEF3FDFEF4FCFEF4FCFEF4FCFDF6FEFFF4FCFEF6FEFFF4FCFE -F5FDFEF4FDFEF7FEFEF6FEFEF6FEFFFAFDFFF9FCFFFAFDFFF9FBFEF9FCFEF9FCFEF9FCFDFBFEFE -FAFDFEF9FDFDF9FEFBF9FEFAFAFCFDFAFDFCFAFDFDF9FDFDF9FDFDF9FDFDFAFCFDFAFDFCFAFDFC -FBFDFEF9FCFCFBFEFEFCFBFCFCFCFDFBFBFCFCFCFDFCFCFDFCFCFDFCFCFDFDFBFCFDFBFDFCFBFD -FDFBFDFDFCFEFBF8FBFDFAFCFBF8FBFBF9FCFBF9FCFBF9FBFBF9FDFBF9FDFBF9FDFBF9FDFBF9FD -FBF9FDFBF9FDFBF9FDFBF9FDFBF9FDFBF9FDFBF9FDFCF9FEFCF9FEFCF9FEFDFBFFFDFBFEFDFAFE -FAFDFFF8FBFEFAFDFFF9FCFEF9FCFFF9FCFEFAFDFFF9FCFEF9FDFEF9FCFDFBFDFFFAFCFDFCFDFE -FCFDFEFCFDFEFCFDFEFCFDFEFEFCFEF8FEFEF8FEFEF8FEFEF8FDFDF8FDFDF8FCFDF7FDFEF9FEFF -F9FEFFF9FEFFF9FEFFFAFEFFF7FEFFF8FDFFF8FDFFF8FDFFF8FDFFF8FDFFFAFEFFF8FEFFFAFEFF -F8FDFFF8FDFFF8FDFFFDFCFCFDFBFCFDFBFCFDFCFDFEFDFFFDFAFBF8F9F3FDF9FAFDF6F3FFFFF9 -F6FEFF8093B2A2AFA0FDFFFAFCFAF6FDF8F5FDFAF8FAF8F6FDFEF2FCFDEEFBFEEBFCFDEBFDFEEF -FDFEF3FDFFFBFDFFFAFDFFFAFDFFFAFDFFFAFDFFFAFDFFF9FDFFF9FDFFF9FBFFF6FCFFF8FBFEF7 -FEFFFCFDFFFAFAFEF8FCFEF9FCFEF9FCFEF9FCFFF6FCFFF8FBFFF6FFFFFBFCFFF6FBFEF7FBFDF9 -FBFDFAFBFDFAFCFFFBFCFEFBFCFFFCFBFDFDFDFFFFFDFEFFFBFDFEFBFDFEFBFDFEFCFEFCFCFEFC -FCFEFCFCFEFCFCFEFCFCFEFCFAFDFAFFFFFF505151C8CBC9FFFFFF1A1C1AFFFFFFD2D4D24A4E4A -C4C6C3818383FFFFFFCDCFCDC0C1C0FEFFFFFFFFFF757775CECECDFFFFFF5A5B5ACFCECF6C6F6D -A7A8A7BFC1BEFFFFFF64666690928F9A9B9A8B8C8BFFFFFF070908FFFFFFFFFFFF161616C0C0C0 -454745FFFFFFCCCECD757675999B99929393FFFFFF3A3938C7C7C7111112FFFFFF969695989797 -7B7B77C5C5C3FFFFFF51514DE4E3E3121213FFFFFFFFFFFF0C0C0BFFFFFFFEFFFCFCFCF9E6E7E6 -C2C4BFFFFFFF969799666667FFFFFF3B3A38585654DFE0E0DEDBDAC6C5C6FFFFFF636161ADACAC -101010FFFFFF7C7C7BADADACFFFFFFBEBCBDE9E4E49C9899828080FFFFFF090909FFFFFF8F908F -838483FFFFFFFFFFFFF9FAFAFEFFFFFEFFFEFCFEFEFEFFFFFEFFFFFFFBFEFEFCFEFEFCFEFFFDFE -FFFDFEFFFDFFFEFCFEFDFCFEFDFEFEFDFBFCFDFBFDFDFBFDFDFEFCFDFCFCFDFCFCFDFCFCFDFCFC -FDFDFBFDFEFCFDFEFCFDFEFCFDFEFCFDFEFCFDFEFCFDFEFDFCFEFDFCFFFDFEFFFDFEFFFDFEFFFE -FCFEFCFCFEFCFEFFFCFBFDFBFBFDFBFCFDFCFDFCFCFDFBFDFDFBFDFDFBFDFDFBFDFDFBFDFDFBFD -FDFBFDFDFBFDFDFCFDFDFCFDFDFCFDFDFCFDFDFBFDFDFBFDFDFBFDFDFBFDFDFBFDFDFBFDFDFBFD -FDFBFDFDFBFDFDFBFDFCFDFDFDFDFDFBFCFDF8FAFBF8FCFCF8FCFCF8FCFCFAFBFBFAFBFBF7F9F9 -F9FBFBF9FBFBF9FBFBFCF9FBFAFAFBFAF9FBFDFBFCFAF9FBFDFBFDFBFAF7FDFDFAFDFDFAFBFBF8 -FCFBF9FBFBF8FBFDFDFBFDFDFCFFFEF9FAFBF9FBFBF9FAFCFBFCFDFDFFFEFCFDFDFBFCFBFBFEFA -FBFEF8FBFDF8FBFDF7FBFDF8FBFEF8FBFEF8FBFEF8FBFDF8FBFDF7FBFDF7FFFFFBFCFEF8FFFFFB -FEFEF9FFFFFBFEFDF9FFFEFAFFFEFAFEFEFAFFFAF7FFFBF7FFFBF7FFFDFAFFFCF9FFFEFAFFF8FA -FFFAFBFFF9F9FFF9FAFFF9FAFFF9FBFFF9FBFFF9FBFFF9FBFFF9FBFFF9FBFFF9FBFFF9FBFFF9FB -FFF9FBFFF9FBFFF9FBFFF9FBFFF9FCFFF9FBFFF9FBFFF9FBFFF9FCFFF9FBFAFEF8F9FDF7FCFEF9 -F9FAF5F9FBF6F9FAF6FDFFF8FBFEF6FBFEF7FCFDF7FDFEF8FCFDF7FCFEF8FDFEF7FDFEF7FDFEF7 -FDFEF7FEFEF8FBFEF6FBFEF6FBFEF6FBFFF7FBFFF7FDFFF7F6FDF7F9FFFAFAFFF9FAFFF9FAFFF9 -F9FFFAFBFDF7FBFDF8FBFDF8FBFEF8FBFEF8FBFDF8FDFFFAFCFFF9FDFFFAFBFEF8FBFEF9FBFEF8 -FFFBF9FFFCF9FFFCF8FFFCFAFFFEFAFFF9F8F9FBF1FFFEFAFEF8F3FCFEF1F0FCFF7A8FA9A8AE9C -FFFFF5FEFCF1FFFAF2FFFAF3FEFCF4FEFAEAFEFAE7FEFAE3FFFEE7FFFEE9FFFCECFEFDF1FEFDF2 -FFFDF2FCFCF1FDFCF1FCFCF1FFFDF2FEFDF2FEFDF2FFFDF2FFFDF2FFFDF3FEFDF2FEFDF2FFFDF2 -FFFDF2FFFDF2FFFDF2FCFCF2FDFCF2FDFCF2FCFCF2FEFCF2FCFCF2FFFEF5FFFEF5FFFEF5FCFCF3 -FDFDF3FCFCF2FFFDF8FEFCF7FEFDF7FFFDF7FFFDF7FFFCF7FCFBF7FDFBF7FCFBF7FFFDF8FFFDF8 -FFFDF8FEFBF8FFFFFFD2D1CC0A0803B2B1AB3A3833FFFFFFDBD9D7494744FFFFFF5855502C2A25 -4B4945FFFFFAFDFBF7FEFDFBF2F0ED4F4C47474540454240DBDCDC716D68CAC8C77D7A77312C28 -57514DF4F3F4D5CFCB0E0805E8E7E4363333FFFFFFFFFFFF373637C6C2C168635E3F3935423E3A -F3F1EDEAE8E82E29264D47435A5450D2D0CE7D77743D373497918E8F8B88F7F5F13C362F2B251E -8C8581FFFFFF2C2C2BFFFFFFFFFFFF2D2D2BFFFFFFFEF8F2FFFAF3FDFDF788877D2B2A24514F4B -DBDAD9FFFFFFB7B2AE545150FFFFFFEEECEA5D5652342E2A706A65FFFFFF8E888526211EF7F2ED -534C49322724514743F6F4F4A297948D8886FFFFFF2D2B2BFFFFFF989693928E8DC1BEBC8D8783 -FFFFFFFFFBF7FEFBF8FFFAF5FFF9F5FFF9F5FFF9F7FFF9F7FFF9F7FEF9F6FEF9F6FEF9F6FEFAF6 -FFFAF6FFFAF6FFFAF6FFFAF6FFFAF7FFFAF4FFFAF5FFFAF5FFFAF5FFFAF5FFF9F5FFFCF5FFFBF5 -FFFBF4FFFAF5FFFCF7FFFAF5FFFBF4FFFBF6FFFBF4FFFBF4FFFBF4FFFBF4FFF9F3FFF9F3FFF9F3 -FFFAF3FFFAF3FFF9F4FEF9F4FFFAF5FFFAF5FFFAF5FFFAF5FFFAF5FFFAF5FFFAF5FFFAF5FFF9F5 -FFF9F5FFF9F5FFFAF5FFFAF5FFFAF5FFFAF5FFFAF5FFFAF5FFFAF5FFFAF5FFFAF5FFFAF5FFFAF5 -FFF9F5FAFBF5FCFAF5FCFAF5FCFAF5FEF9F5FDF9F5FEF9F5FEFAF6FEFAF6FEFAF5FEFAF5FEFAF5 -FFF8F5FFF9F5FFF8F6FEF8F5FFF8F5FEF8F5FFFBF2FFF9F3FFF9F2FFFCF5FFFAF4FFFBF4FFF9F4 -FFF9F5FFF9F5FFFAF5FFFAF5FFF9F5FFF9F6FFFAF5FFFAF4FFFAF2FFFAF1FFFAF0FFFAF0FFFAF0 -FFFAF0FFFAF0FFFAF0FFFAF0FFFAF0FFFAF0FFFBF0FFF9F0FFF9F0FFF9F0FAFDF0F9FDF0F9FDF0 -F9FDF0F9FDF0F9FDF0FBFCF0FAFCF0FAFCF0FAFCF0FAFCF0FAFCEFFAFBF4FAFBF4FAFBF4FAFBF4 -FAFBF4FAFBF5FAFDF0FAFDF1FAFDF1FAFDF1FAFDF1FAFDF1FAFDF1FAFDF1FAFDF1FAFDF1FAFDF1 -FAFDF1FAFDF1FAFDF1FAFDF1FAFDF1FAFDF1FBFCF1FFFBF0FFFAEEFFFCF1FFFAEFFFFAF0FFFCEF -FEFAECFFFCEEFEFAECFFFCEDFFFBECFFFCEDFCFAEBFEFAEBFDFAEBFDFAEBFDFAEBFDF9EBFFFCEF -FFFCEFFFFCEDFFFDF0FFFCF0FFFDEEFFFDF1FFFDF2FEFDF2FEFDF2FEFDF2FEFDF2FFFDF2FFFDF2 -FFFEF2FFFBF0FFFBF1FFFBF1FFFBF0FFFBF0FFFBF1FFFBF0FEF8EEFFFBF2F7F9ECF8F9EEF8F9EE -F8FAEDF8FAEDF9FAEDF7FDF8F9FAFBFEFDFDF5FEF5EDFFFF7E98B8A5B2ADFFFFFFFEFFFCFDFFFE -FAFFFFF5FFFFFFFFFEFFFFFDFFFFFAFFFFFAFFFFFCFFFFFDFEFFFEFEFFFEFEFFFEFEFFFEFEFFFE -FEFFFEFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFDFEFFFEFEFFFEFEFFFEFEFFFEFEFFFE -FEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFFFEFFFFFEFFFF -FEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFF -FFFFFFF0F2F0FBFDFCF2F5F3FFFFFFFEFFFFF0F4F2FFFFFFFFFFFFE8E7E5FFFFFFFFFFFFFFFFFF -FEFFFFFFFFFFFFFFFFF2F1F0FFFFFFFFFFFFF2F7F7FEFCFAFFFFFFF0EFECFFFFFFFFFFFFFFFFFF -FAF5F4FFFFFFF0EFEEFFFFFFFFFFFFEEECEBFDFEFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFEFC -FFFFFFFFFFFFFBFFFDFFFFFFE4E8E6FDFFFDF5F9F7FFFFFFFFFFFFF3F6F2FFFFFFFFFFFFE8E8E4 -FCFFFFFFFFFFEAEAE6FFFFFFFBFFFEFBFFFEFFFFFFFFFFFFEFEFECFFFFFFFFFFFFF9FFFF90989D -959798FFFFFFFFFFFFFFFFFFEBEAE9FFFFFFFDFFFFFFFFFFE7E9E6FFFFFFFFFFFFE9EAE9FFFFFF -FFFFFFF4F8F8F9FBFAFFFFFFEFF1F0FFFFFFFAFCF9F7F7F7F7F9F9F0F1EFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFEFFFFFEFFFFFEFFFFFEFEFFFEFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFEFFFF -FDFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFE -FFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFCFFFEFBFFFEFBFFFEFBFFFEFBFFFEFAFFFE -FDFFFEFCFFFEFCFFFEFCFFFEFCFFFEFCFFFFFCFFFFFCFFFFFCFFFFFCFFFFFCFFFFFCFFFFFCFFFE -FCFFFEFCFFFEFCFFFEFCFFFEFCFFFEFCFFFEFCFFFEFCFFFEFCFFFEFCFFFEFCFFFEFCFFFEFCFFFE -FCFFFEFCFFFEFCFFFEFCFFFEFFFFFDFFFFFCFFFFFDFFFFFDFFFFFDFFFFFDFFFFFBFFFFFCFFFFFC -FFFFFCFFFFFCFFFFFCFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFBFFFFFCFFFFFCFFFFFD -FFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFD -FFFFFDFFFFFDFFFFFDFFFFFDFFFFFEFFFFFEFFFFFEFEFFFFFDFFFFFEFFFFFCFFFEFCFFFEFCFFFF -FAFFFFFEFFFFFFFFFFF7FFFFEEFFFF7B9BC37C98A7CCE3F1C9DFEEC6E4F1BEE5F1B9E9F2C9DDF4 -C9E0F2C7DEEECCE3F2CBE1F5CCE1F8CAE0EDCAE0EECAE0EECBE2EFCBE2EFCBE1EFCAE0F2CAE0F2 -CAE0F2CAE0F2CAE0F2CAE0F2C9E1EECBE1EDC9E1EECAE1EECAE1EDCAE0EEC9E0F1C9E0F2C9E0F2 -C9E0F2C9E0F2C9E0F2CDE3F2CCE3F2CDE3F3CBE1F1CBE1F1CCE2F2C9E1EDC9E1ECC9E1ECC9E1EC -C9E1ECC9E1EBCBE1F1CAE1F1CAE1F0CCE2F2CCE2F0CDE2F3CAE1EFCDE5F4CAE1F1CDE3F2CCE3F2 -CDE4F3CDE4F3C9E0EECFE6F5C8DFEFCFE6F4D5EBF9C9DFEFCEE5F2CFE5F4CBE2F0CFE7F5CCE2F1 -D2E7F5CCE0F0D4E9F5C9DEEECCDFF0CADFECD5E5F6CFDFF0CCDCEDD1E1F3D3E1F2CDDFEFD6E7F7 -CCDDEECCDEF0D8E6F7CEDFF0D4E5F6CBDBECD1E2F3D1E1F2CCDDEFD5E5F7D4E2F4C7E4F0C6E1EF -C4E0EDCAE5F2C8E4F2C7E4F2C7E2F0C8E4F2C7E2F1C7E3F0C7E4F3C9E3F1C6E4F4C8E4F3CBE5F3 -C0DDEBC6E2F1C7E4F1CAE0F2CCE1F3CFE4F2CEE7F0D4ECF19DB7BC325160D4EFFCC7E2F0C9E7F3 -C6E3F0CBE4F2C5E1EFC5E1EFC6E2EFC7E2F0C6E3F0C3E0EEC9E3F1CBE5F3C8E1F0C8E3F1C6E0ED -C7E0EFD5E6F5CCDDEFD3E3F4D1E2F4CFE0F1D3E5F6CDDDEBCCDCEACDDDECCBDCEACBDCEACCDDEA -C6E1EAC5E0EAC4DFEAC8E2EDC8E1ECC6E1ECC8E2ECC9E2ECC9E2ECC9E2ECC9E2ECC9E2ECC9E2EB -C9E2EAC9E2EAC9E1EAC9E2EAC8E0EACEDFEBCEE1EBCEE1EBCEE0EBD0E1ECCEE0EBCEE1EBCEE0EB -CEE0EBCEE1EBCEE1EBCEE1ECCFE1ECCFE1ECD0E1ECCDDFEACDDFEACFDFEAC4E4EBC5E2EBC5E2EB -C5E2EBC5E2EBC5E2EBC4E2EBC5E2EBC5E2EBC5E2EBC5E2EBC5E2EBC4E2EBC5E2EBC5E2EBC5E2EB -C5E2EBC5E2EBC5E2ECC5E2ECC5E2ECC5E2ECC5E2ECC6E2ECC7E1ECC8E1EDC9E0EDCBE1EDCDDFED -CDDFEDC7E2EDC7E1EDC7E1EDC7E1EDC7E1EDC7E1EDC9E0EDC9E0EDC9E0EDC8DFECC8E0ECC8E0ED -C7DEEFC7DEEEC7DEEEC9DFF0C9DFF0C7DEEFCCE0EECCDFEDCCDFEDCBDFEDCBDFEDCBDFEDCCDFF0 -CBDFEFCBDFEDCBE0EBCBDFEBCBDFE9CBDFEFCBDFF0CBDFF0CBDFF0CBDFF0CBDFF0CBDFEECBDFF0 -CADFF0CCDEEFCCDEEFCADEEFCEDDEFCEDDF0CEDDF0CEDDEFCEDEF0CEDEF0CFDDEFCFDDF0CFDDEF -CFDDF0CFDDF0CFDDF0CFDDECCFDDEBCFDDEBCFDDEBCFDDEBCFDDEBCFDEEBCFDEEBCFDEEBCFDEEB -CFDEEBCFDEEBCFDEEBCFDEEBCFDEEBCFDEEBCFDEEBCFDEEBCFDEEBCFDEEBCFDEEBCFDEEBCFDEEB -CFDEEBCDE0EECADEEDCDE0EFCBDFEDCBDFEDCBDFEECBDFECCDE0EDCBDFECCBDFECCBDFECCCE0EC -C6E0EAC7E0EBC7E0EBC7E0EBC7E0EBC8E0EBCDDEEBCCDDEBCCDDEBCFDFEDCDDFEDCDDFEBCFDDEE -D0DEEED0DEEED0DEEED0DEEECFDDEECEE0EECDDFEECDE0EECCDDECCCDFEDCCDFEDCCDDECCCDEEC -CCDDECCCDEEDCDDFEECDDFEDCCDAEDCCDBEDCCDBEDCDDCEECDDCEECCDAEDCFDEE7D3DDECD7DDE9 -CFE0E7BCD8EB6387B61B46573D739C2D71A81F6EA6216FAD2469B81675B01472AE1675B01371AE -1372AD1372AD1675AD1473AD1473AD1473AD1473AD1473AE1473AC1473AC1573AC1674AE1674AE -1675AE1772AA1873AB1873AB1772AB1772AB1772AA1B75AD1A75AD1A75AD1B75AD1B75AD1B75AD -1873AB1772AB1670A81872AB1974AC1872AB1773A61873A91975A91874A81A75AA1874A81A75AC -1A75AE1A73B11A73B31A73B61972B71C71BA196FB91C71BB1A70B91D73BB1C72BB1971B91A73BB -1971B91C74BC1871BA1A73BC1A6FB81A6FB91A6FB9196EB71A6FB8196EB71A73B51A73B51570B1 -1B75B61A74B61973B61D70B51F71B82072B9196CB21B6EB41B6CB51971AB1C74AD1972AA1870A9 -1A72AB1871A91970AA1870A91770A91970AA176FA81770A81B6FAE1C71AE196EAA1F6FAE1E6CAA -216FAD266DAA256AA7286EAC246AA7246AA7266BA7216CA7216CA71F6AA62973AF236DA92872AE -1C6AB31E6CB41E6DB31A69B11E6BB42B78C3307FBD236FAD206DAA1C6AA31E6CA41D6BA4226AA2 -236AA3236AA3236AA3236AA3246AA32369A32468A12469A22467A2266CA52467A31A6BA31B6CA2 -18699F1B6C9F1B6D9E1B6C9D1A6D9F1A6EA01A6EA0196C9F196C9F196C9F1B6A9D1C699D1C6B9E -1D679D206A9F226BA21F6A9F206A9F206AA01E699E1E699E1E699E1E699D1E699F1E699D206AA1 -206A9F216CA11B6A9A1967981968981866971968981866971A68991A68991A6898196898166696 -1A68981764A01765A01764A01865A31864A41865A31F60A81F62A61F62A61F62A61F62A61F62A6 -1D61A61E61A61E62A61C60A51C60A51C60A51F62A61F62A61F62A61F62A61F62A61F61A61F63A5 -2063A21D60A11F63A31F62A31F62A31C66971E6597206397235F952660982A60992F5E952E5E96 -2E5E962E5E962E5E962E5F962F5B992F5B982F5B972E5C952E5D922E5D932D5B992F5B9A2F5B9A -2D5B982D5B992D5A99285D95295D95295C952C5C962D5A952F5D982E5D912E5D912E5D912F5E93 -2F5E92305E92325D90325E90325E90325E90325E90335E8F2F5F93305E91325E90335D8E335E8E -365C8C325F8A335E8A335E8A325E8B325F8A2F5C8833608C305D88335F8C315D89315D89315D89 -325D88325D89325D89325D89325D89325D89325D88325D88325D88325D88325D88325D88325D88 -325D88325D88325D88325D88325D88325D88325D88325D88325D88325D88335D882E5E8E2F5E8E -2E5D8E305F8F2F5F8F305F902D608D2D608D2E608D2E608D2E608D2E608D2D60872D60862E6087 -2C5E842D5F862B5E84335C86335B85335B86325B84325B84335B84385988365888365888365888 -365888385988345987355A89335887365C8A345A88325786355C89355A89355B89345A88375E8B -315886335987345987335986345A87325986395F8D3F57883553783F63813F6588325A8A214B84 -02425A0F558702569600599600569B0053A40056A20053A00055A20055A20055A20055A30055A2 -0055A20055A20055A20055A20055A20055A20055A20056A20054A00054A00054A000539E00549E -00549E00549E00549E00539E00559F00559F00559F00559F00559F00549F00559F00559F00539D -00529D00549E00529D00549B00549D00559E00549C00559D00549C00579B00569A00569A00569A -00569A00569A00559D00539C00559E00519A00549D00529B00559F00559E00559E00559F00539C -00569F00539D00549D00549D00539D00559E00539C0055A30054A20052A00054A20053A20054A2 -00549A00549B01559C00519800529900529900529E00519D00539E00529D00529D00529D00519C -00519C00519C00519C00519C00529D004F9D004E9C0152A1004D9C02509E004D9D004F9C00509C -00519C004E9B004E9B004E9B004F99004F9A004F99004F9B004D9A004F9A004E97004E97004E97 -004E97004F98004D96024E9F004A9A004B99004C99004C97004C96004F96004E96004E96004E96 -004E96004E96004C95004D96004D96004D96004F97004D96024C96014A94004992014A91014B90 -004C8F004B94004B93004A93004B93004B93004B93004B93004C93004B93004993024A92014892 -01489201489201489200479100479100479100479100479100469101499301489302499300478A -004489004589004388004589004488004286004286004285004589004386004589004584004584 -004585004585004586004686004484004484004484004484004484004484004584004484004484 -004483004583004583004484004484004484004484004484004384004486004485004284004284 -004283004285004389004086003E84003D84033E86063D88004082004083004083004083004083 -004083013D85013E85013E84013F83013F81003F81034183024084024084034185024085024084 -063E83063F83073E83083D84063A80063880093D80093C80083C800A3D81093D810A3E8209387C -0A3A7C093A7C093A7C0A3A7C0A397C063B7F093A7F09397D0C3B7C0D3B7B0D3A7B0B3C7A0B3C79 -0B3C790D3D7B0C3D7A0A3B780B3B7A093A770B3B790B3C7A0B3B7A0B3C7A0E3B760D3B760D3B76 -0D3B760D3B760D3B760D3B770D3B770D3B770D3B770D3B770D3B770D3B770D3B770D3B770D3B77 -0D3B770D3B770D3B770D3B770D3B770D3B770D3B770E3C770B3E730B3D720B3E72093C70093C70 -093C72093C6F0B3C6F0A3C6F0A3C6F0A3C6F0A3C6F0D3D760C3C740C3D750A3C740C3D760B3C74 -0F3C740E3A740E3B750E3B740E3B740E3B75123B6E113B6D113B6D113B6D113B6D113B6D103B6D -113D6F103B6E0F3A6C0F3B6C0D396A0C376A0C376A0B37690D396B103C6E113C6F103B6E103B6E -0F3B6D123D700D386B13407114346A103362153A650D38620B366B14407F004A71085B9B0361B3 -0060B00061B1005EB9035AB30158B2045AB40158B20158B20358B30058AF0058B00058B00158B0 -0158B00158B00058B00058B00058B00259B00259B00159B1065AB0045AB0045AB00459AF0459AF -0459AF055AB0055AB0055AB0055AB0055AB00459B0065BB1055BB10358AE0256AD0358AE0256AD -0459AD065AB0075DB10458AE065AAF0458AE065BAF055BAD055BAB055BA9055CA7055CA6015DA9 -005BA7025DAA005BA8035EAA025DAA055CAA055BA9065BA9035AA80157A6045AA9005CA8005CA8 -005BA8025DA9035EAB015DA8055BB10559AF0257AE0258AE0258AE0258AF015AA6015AA7015AA7 -0059A60059A60058A50559B00255AB0559B00458AD0458AE0458AE0256AC0357AC0357AC0357AD -0357AD0456AD0056AD0056AF0052AA0256AE0151AB0455AF0054A80057AD0054AB0055AA0053AA -0055AA0055A90054A90054A90055AA0056AD0055AC0053A20053A10053A10154A30153A20052A0 -0250AD014FAB014FAA0352AA0352A90351A70055A60056A70054A60054A60055A70056A70053A6 -0054A60054A60054A60055A70054A60851A70550A5044EA3044FA0044F9E044D9D0150A20350A1 -034FA10451A40451A30351A20153A40352A40353A4024FA2034FA2014C9F014D9F014D9F014DA0 -004B9E004C9E004C9E004C9F004C9F004C9F014D9F014D9F004CA1054B9C02499A03499B014899 -03499B01489902499A02499A02499A03499A01469903499B014992014993014A91014A90024B8F -034C90024C8C024C8D024C8D024C8D024C8D024C8D004B8D024C8D024C8D024C8E024C8E024C8E -014B8D024C8D024C8D024C8D024C8D024C8C044D91034C9102498F00478D00498D01488D004796 -034999084C9C0446960747990A489B004A94004A95004A95004A96004A96004A96014A98024A97 -024996014A95014B94034C9300498F004990004990024B91014B9102499104488E05498E064890 -03448C05458D0C489003418D04438D04438D06449006448E06448E08428D08438D08438D08438D -08438D08438E06439107438E07418E0C44900D448E0D448E0B458E0A458E0B458E09448C09438B -0641890B458D08438B0A458D08428B08428B08438C0A41870B43870B42870B42870B42870B4287 -0B42870B42870B42870B42870B42870B42870B42870B42870B42870B42870B42870B42870B4287 -0B42870B42870B42870B42870B41870C43800D43810C42810C43810C43810C43820C437E0E4380 -0D427F0D437F0D437F0D43800D41840D41850D42850D41850F43870D41840E43870E43860D4285 -0D43860D41850D438610427E1043801043801043801043801042800E43800F44810E43800C407C -0B3F7D083D7A0C3F7A0C3F7A0A3F790F447F0D417C0C407B0D417B0C417B0D417C0A3D790D427C -083E79143B7B143E770F3D74103D760E407E0E3E8201447A0955A70759BF005ABA0057B80454BD -0361AF0361AF035FAF0360AF035FAF0361AF025EAB025EAC025FAC015DAB015DAB015DAB025FAC -025EAC025EAC025EAC025EAC025EAC035FAA035EAA035EAA025DAA035DAA035DAA015CA8015CA8 -015CA8015CA8015CA8015CA8035DAA035DAA035DAA025CA9025CA9035CAA015CA9015CAB015CAA -015CAB015CAA015DAB0159B6015BB3015AB0015BAD015BAB015CAB015FAD015FAD015FAD025FAD -005FAD015FAD015BAB015BAC015BAC015BAC035CAC025BAC015FAD015FAD015FAD015FAD005FAD -015FAE015DA5025DA7035FA7005CA6005CA6015CA6015BAC005BAD005DAD005AAC005AAC005BAC -025AA6025AA7025AA70259A60259A60259A6035AA7025AA7035AA70259A7025AA7015AA7005CA8 -005CA9005BAA015BAA0158A80053A3085AAC0355A80254A70053A60053A60053A60352A70352A7 -0352A70352A60352A50352A70053A60055A90056A80058AB0057AA0055A90053A50054AA0053A6 -0054A30054A40054A20351A00451A10351A10451A10554A30251A00650A10650A10650A10650A1 -0650A10651A100519C02529D02529B04539D03549B03569A00519B00539C00539C00529B00529B -00539B00549B00549B00539B00529B004F99004F9902519B00519B02519B00509A00509A01509A -004F98004F98004F9800519B00509A01519A024D96034E97014B94024D97024D96024D97024D97 -024D97024D97024D96024D97024C96034D9D034D9C034D9B034E9A034D96014B93004F92004E92 -004E93004C90004D91004D90004F93004E92004B8F004D91004C91004C90004E93004E92004E92 -004E92004E91004C90004994004A93004A93024C96004B96004B95024C90004C8F014B8E034C8F -044B8F044A8F064A8D054A8D054B8D03498C04498C04498B06488F06488E06488D06488C06498B -06498A064986064986064986044785064987074B88014D86014C87024B87044C88034A86014885 -054C89044B89054B8903498703498802498804488804488804488804488804488804488806498D -06498C074A8B0748880948870B4886084889074888074888064786064788044585054686054686 -054685054686054686064686074680084681084681084681084681084681084681084681084681 -084681084681084681084681084681084681084681084681084681084681084681084681084681 -0846810848820B43870944870944860944860944860943870E45860A42830E45860B42850B4485 -0B42850B457F0B457F0B457F0D45810A447E0D458108447E0946800B488109457F0B4881094580 -0B44860C43850C43850C43850C43850C44850944840B45860A4484064183084383084384084382 -084382084382064282084382084382054181074181054181084382084382084482113E83103F81 -0E41800D3F800D3F820B3E850143760A55A70658BC0158B90258B30855B70060AB005EAC005FAC -005FAC005FAC005EAD0060A90060A90060A9005EA8005FA8005EA80060A90060A90060A90060A9 -0060A90060AA005CA5005CA6005CA5005EA7005EA7005DA7005EA7015EA6015EA6015EA6015EA6 -005EA7005DA7005EA7005DA7005EA7015EA6015EA7015DA9015EAA015EAA015EAA015EAA015DAA -015CAB015DAC015CAC015DAC015CAC005CAC015CAB015CAB015CAB015CAB015CAB015CAB005CAB -015DAC015DAC015DAC015DAC005CAB015CAB015CAB015CAB015CAB015CAB015CAC005EA6005EA6 -015EA6005DA5005DA5005EA60058A90058AA0058AA015AAB015AAB0159AB005BA3005BA4005AA4 -005CA5005CA4005CA50059A20059A30059A2005AA4005AA40059A4005BA6005AA5005AA60055A2 -0157A60358A60358A70355A60153A40154A60154A50153A50252A50352A50352A50352A50352A5 -0353A60054A60056A90056A90053A60054A70051A40154A80051A40155A60052A30054A20055A1 -03529F0352A003529F0553A2024F9E0553A204519F0551A00551A00551A00551A00651A000539B -00539B00549900539900549800549600549A005499005499005499005499005399005499005499 -00539900529A004F97015097015198015198025198005097005097005097005098005097005097 -015097005097015098014E95014E96004C93004D95004D94004D94004D94004D94004D94004D94 -004D94004D95004B9F004C9D004C99014D97014F94004C91014C94014C95014D95004B93014C94 -004C93044A95034C95004A92024B94014A94024A93024D95014C95014D95014D95014D95004A93 -024992024993024892044B94034A94034A93034C8B034C8C034C8C024C8C014C8C024D8B064A89 -074A8A074B8A05498906498906498806488C08488B084988084887084987084986084984084984 -074984094A85074983044681034C87034B87054B88024584054886084B89074983074985074985 -0548840648840648830648850648850648850648850648850548850848890848890948870B4886 -0B47840D47850948860A48870A4887094785084685074583084685084684084684084684084685 -08458608477E09467F09467F09467F09467F09467F09467F09467F09467F09467F09467F09467F -09467F09467F09467F09467F09467F09467F09467F09467F09467F09467F09467F0A467F0B4485 -0B43850B43850B43850B44850B42860D437F1146840D43810E44810E44810E43810E447C0E447D -0E447D0D437C10467F0D427C1247800E447D0D427A10467F0C417A10457F0E42840F42840F4284 -0F42840F42840F42840B43840D44850C43840941810A42820A41830A437B0A437D0A437D0A437D -0A437D0A437D09427C09437C09427C0A437D0A437D0A437D0E40800C3F810F3F800E3F800D4080 -0E407F01466E0559A10157B8005CB7005BAD045AAE005EB0005EB1005DB0005DAF005DB1005DB0 -0060B00060AF0060AF005EAE005FAE005EAE0060AF0060AF0060AF0060AF0060AF0060B0005DAB -005DAC005DAC005CAB005CAB005CAB005EAD005DAC005EAC005DAC005DAC005EAD005CAB005CAB -005CAB005EAD005DAC005EAC005CB1005DB0005DB0005DB0005DB0005CB10060A2005FA30060A7 -005EA8005FAC005FAC005BA8005BA9005BA9005BA9005BA9005BA8005FAB005FAA005FAA005FAA -005FAA005FAB005BA8005BA8005BA8005BA8005BA8005BA9005EB0005EB0005EB0005BAE005DAF -005CAF015AAB0059AB0059AB0059AB0059AB0059AB005DAB005CAB005CAB005CAA005CAA005CAB -005AA9005AA9005BA90058A8005AA80059A80057AA0157AA0056A90055AA0355AB0456AB0058AF -0056AC0055AA0057AC0057AB0057AB0053AD0054AD0054AD0054AD0054AD0054AC0051A60354A8 -0255A90255A80154A70052A6024FAE0351B00251AC0150A90250A90252A80055A50054A40055A5 -0054A40056A80054A40053A50053A40053A50053A50053A40054A60051A00053A10053A000519C -00539B00519A00549F00549F00549F00549F00549F00539F00519F00539F01529F0251A0004D9C -014D9D024F9E024F9E034F9F004D9C014E9D014E9D024F9F024F9E024F9E014D9D014D9D014F9D -014C9C024C9C004A9A014D9C014B9B014C9B014C9B014C9B014C9B014B9B014D9B014C9D00499E -004B9B004A97024F96024E91004C8E034B95034B96034D96024A95024A95004A95054C96054A96 -024794054A95044995044995034D96034B96034B96034B96034B9600499405488F05498F05488E -064A90064A9006498F064991064A92064891034991044B92034B91014C90024C90024C90014B8E -014B8F014B8F034991044A8F04498F044A8E044B8C044A8C044B8C034B8D054B8D00468901488C -03488C07489007478F08468E0B47910A458E08438D0B48890B47890B47890945880A46880A4689 -0A458B0A448C0A448C0A448C0A448C09448D0C468F0C45900D448E0E458D10448C1043890D458C -0E458E0E458E0D448C0D428C0A418A0C438C0C438B0C438B0C438B0C438B0D418C0C43840E4385 -0D43850D43850D43850D43850D43840D43850D43850D43840D43850D43850D43850D43850D4385 -0E43850E43850E43850D43850D43850D43850D43850D43850E42860C457F0D44800D44800D4580 -0D45800C448012447F10407C12447E0F417C11437D11427D1142821142831142821142840E3F80 -13438411408113428315448511408214428313418411407F12418012418012417F124180124380 -10427F1244811043800E407C0E407E0E407E0E41790E417A0E417A0F427A0E427A0F427A0D3F79 -0D40790D3F790F427A0E427A0F417A0C427C0D407D0D3F7F10427E11417B11417A0443650E58B8 -005FB50061A50058B90557B50062A7005EAC005FB2005DB6005FB2005FAE005DAD005DAD005FAF -005CAC005CAD005DAD005CAC005DAD005FAF005CAC005CAC005CAC0060AD005FAC005EAA005FAB -005FAC005FAC005FAA005FAB005DAA0060AD0060AC005DA9005DAA0060AD0060AD005DAA005FAB -005FAB005EAB005EAB005EAB005EAB005EAB005FAB015DAA015DAA015DAA015CAB015CAA015CA9 -015EAB015EAB015EAB015EAB015EAB015EAB015CAA015CAB015CAB015CAB015DAB005CA9025FAD -025FAD025FAD005DAB015EAC005EAC015CAB025CAB025CAB015CAB0059A90059A9005BA8005BA8 -005BA90058A7005AA70058A70059A90159A80159A80159A90159A8015AAA0056A60058A80056A6 -0058A90058A90057A90059A70059A80059A90057A70058A70057A70358AB0156A90053A70053A7 -0053A70053A90153A40153A50153A50153A50153A50053A40254A80153A70254A80051A50051A5 -0153A70053A30053A30053A40053A40053A40051A40152A30152A30152A30152A30152A30152A3 -0152A30152A30152A30152A30152A30152A40252A10251A200509E01539C01539D01529B01529B -01529C01529C01529C01529C01529C00549C01529C02529C004F9B014F99014F9B03519B03519B -01519B04509C01509A014E9902519B03519B03519B004F9A04519C014F9B014C99024E99004B97 -014D98014D98014D98014D98014D98014D98014D98014D98014D98014D98014D98004B98024F95 -024F95004C92004E94004E92004E92004E92004E92004E94004A91014C91014C91034C94004A91 -034C94004E92004E92004E92004E92004E93004C90004892014A92014A92014892014992004991 -06499303478D044B8B084D8E04498D054892054B8F05498E054B9004488D04488E044A8D054890 -054A8F054A8D05498B05488B044A8805488A06488A06488A064A8A064A8A064A8B044A8A04498A -05498A06478807468A08478A07478A07488B07488B08488B08488B08488B08488908488A08488A -08488A08488A08488B07488A08488A0A478A0A478A0B47890B448B0B47890B478A0C478A0A4589 -0A45890842870945880945880945880945880945880944890945840A45830A45840A45840A4584 -0A45840A45830A45830A45830C46850A45830A43820A45830A45830A4584094282094482094282 -0A45840A45830A45830A45830A45830A44830946840946840945840D42840D42840C4285104183 -0E43830E41831144850D40811144850E41830F43840E41821144851144850E41820F42840F4284 -0F42840D40821244860F41831041830F41830F41831143851042831041820F4383114484104283 -0E42830E40820C3F800D427D0C427D0E427D0B3F7B0B3F7C0B3F7C0C417C0C417C0C417C0B3F7C -0B3F7C0B3F7C10427F12448110427E0F417E0E427F0E427E034A670B58B4005DB30061A30059B7 -0458B50060A8005EAC005FB2005DB5005FB2005FAE005FAF005FAF005FAF005CAC005EAE005CAC -0061B1005DAD005CAC005EAE005EAE005EAE005DA9005EAB0062AF005DAA005FAC005FAC005FAC -005FAC005DAA0060AD0060AD005DAA005DAA0060AD0060AD005DAA005FAC005FAC005FAB005FAB -005FAB005FAB005FAB005FAC015CA9015DAB015DAB015EAB015EAB015EAB015EAB015EAB015EAB -015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB005CA9025FAD025FAD025FAD005CAA -015EAC005EAC025BAB025CAB025CAB025CAB0059A8005BAA005BAA005BAA005BAA0058A7005AA9 -005AA70159AA0159AA0159AA0159AA0159AA015AAA0059A90056A60059A90057A70058A90059A9 -0159A90159A80159A90056A60058A70058A60358AB0257A90053A60055A80055A70055A80252A4 -0253A50253A50253A50253A50253A40254A80254A80254A80051A50153A70153A70153A30153A4 -0153A40153A40153A40053A50252A20252A30252A30252A30252A30252A30252A30252A30252A3 -0252A30252A30252A40253A00252A200509D01539B01539C01539A01529D01529C01529C01529C -01529C01519C00549C01539C01519B05549F02509B004B9603519C03519B03519C004E98014F9B -05539D014F9A03519B014F9A03519C004E9803529C004C98024E99004B96014D99014D98014D98 -014D98014D98014D98014D98014D98014D98014D98014D97004B98024F95024F95004C91014E94 -014E94014E94014E94014E94004E94024A91014C93004A91034D94004A91034D94004E94014E94 -014E94014E94014E94004C91024892014A92014A92014A92014A92004A92044690084C9004498A -024789094D92074992064B8F064B90064B9004488D054A8F054A8D054890054A8F05498C05498C -05498B034B8806488B064A8A064A8A064A8A064A8A064A8A034A8A054A8A054A8B044587084689 -09488B08478A09488B09488B09488B09488B09488B09488B09488A09488A09488A09488A09468A -07498A09478A09488A0B488A0C478B0D458B0A478B0B478A0C478B0944880B46890843860A4589 -0945880945880945880945890845880B45840A45850A45850A45850A45850A45850A44830A4483 -0B45840842820A44840E48870943830A44830B45840842820943820842820B45840A44830A4483 -0A44830A44830B43830846850946850945850D42850D43850C41851042831042840F4184104284 -1043841042840F41831042840F41830F42831042840F42831042840F42841042840E41820E4182 -1346871040831140840F40831242861142850E3E811043841144851043840C3E800E4082114384 -0D407D0E427E0E427E0C3F7B0D417D0D417D0D417D0D417D0D417D0D417D0D417D0B3F7B124381 -0D3F7C1143800E407D10427F10427F014F660758B1005BAD0061A20059B70657B50261A8015FAC -015EB2015EB6015EB2015FAE005FAF005FAF005FAF005CAC005EAE005DAD005CAC005DAD005FAF -005CAC005EAE005CAE0061AD005EAB005EAB005EAB005FAC005FAC005FAC005FAC005DAA0060AD -0060AD005DAA005DAA0060AD0060AD005DAA005DAA005DAA005DAB005DAB005DAA005FAC005FAC -005FAC015CA9015EAB015EAB005CA9005CA9015EAB015EAB015EAB015EAB015EAB005DAA005CA9 -015EAB015EAB015EAB015EAB015EAB005CA9025FAD025FAD025FAD005DAB015EAC005EAC025DAC -025DAC025DAC025CAB0059A8005BAA005BAA005BAA005BAA0058A70058A7005AA70159AA015AAA -0059A8015AAA015AAA015AAA0056A60059A90056A60058A80059A90059A90259A90259A90259A9 -0058A70158A80058A60258AC0157AA0053A60055A80055A80055A80253A40254A60254A60254A6 -0254A60254A40254A80254A80254A80051A50153A70153A70153A30153A50153A50153A50153A5 -0053A50253A20253A40253A40253A40253A40253A40253A40253A40253A40253A40253A40253A4 -0253A00151A200509D01539B01539C01539A01539D01539D01539D01539D01539D01519D00549D -01539D02529D00509B014E99014F9A03519C03519C014F9A03519D014F9A014F9A03519C03519C -03519C02509B04529D02509B014C99024E9A004B97014D99014D99014D99014D99014D99014D99 -014D99014D99014D99014D99014D97004B98024F95024F95004C91014E94014E94004C92014E94 -014E94004E94024A91004B92004A91034D94004A91034D94004E94014E94014E94014E94014E94 -004C91024890004890014890014890014890004890054A9202488D044B8B074D8E03498E044991 -044B90044B8F054B9003488D034A8F034A8D03499003498F034A8C044A8C034A8B034B8806488B -064A8B064A8B064A8B064A8B064A8B034A8B054A8B044A890A4B8D08468904438609488B09488B -09488B09488B09488B09488B09488B09488B09488B09488B09488B09468B07498B09478B0A488B -0B488B0C478B0D468B0C478B0C478B0C478B0A45890B468A0843870A45890A45890A45890A4589 -0A45890845880B45840B45850B45850B45850B45850B45850B45820B45810944810D47840A4582 -0A45800A45810B45810B46810843800944800843800B46810B45810B45810B45810B45810B4582 -0946850A46850A45850D42850C43850D42850D43820D42810D43810D42810F46830D42810D4381 -0D43810D43810B427F0E44820F45830D43810D43810D42810F46830F44830A407E114281114281 -1142820D3F7D1244821545850D42820F45830E43820D43810C41800A417F0B417C0B427E0B427E -0A3F7B0A3F7B0A3F7B0A3F7B0A417D0A3F7B0A3F7B0A3F7B093F7B10417E1244810E407D0F417E -10427F10427F07616D065AA9005FAB0063A30059B60158B30360A8015EAC025DB2005BB2015CB0 -035EAE005CAC005CAC005CAC0060B0005DAD005DAD005FAF005FAF005FAF005CAC005EAE005CAE -005DAA005FAC005FAC005FAC005FAC005FAC005FAC005FAC005DAA0060AD0060AD005DAA005DAA -0060AD0060AD0060AD0060AD0060AD0060AD0060AD0060AD005DAA005FAC005FAC015CA9015EAB -005CA9025EAB025FAC015BA8005DAA015EAB015EAB005CA9025FAC025FAC005CA9015EAB015EAB -015EAB015EAB015EA9005CAC005CAA015EAC005BA9005AA8005DAB0059A80059A80059A80059A8 -005BAA005BAA005BAA005BAA0059A8015CAB015CAB0059A80259A90057A7025AAA0057A70057A7 -0058A80056A60059A90056A60058A80059A90059A90257A80054A50054A50054A50054A50054A5 -0053A60053A60055A80055A80055A80055A80151A30051A30051A30051A30051A30051A30051A7 -0051A50051A50153A70153A70153A70153A30153A50153A50153A50153A50053A50253A20253A4 -0253A40253A40253A40253A40051A20152A30051A20050A10050A10050A301509F0253A301539F -00529B01539C01539A01539D01539D01539D004F9900529C00539D00519B01539D01509B01509B -02509B004D9803519C03519C03519C014F9A03519C004E99004D98004D98004E99004C97004C97 -004C97014B97004D98014D99014D99014D99014D99014D99014D99014D99014D99014D99014D99 -014D99014D97004B98024F97004B92034F95004D93004D93035096004C92014E94004E94034C94 -034D94034D94004A91034D94034B94004E94014E94014E94014E94014E94004B91034A93034B93 -034B93034B93034B93024B93034891034A8F03498A024A89064D90034890054B91044B8F054B90 -03488D034A8F034A8D03499003498F044B8C01498A044B8B054C8906488B064A8B064A8B064A8B -064A8B064A8B034A8B054A8B064A8B03438509488B0B4A8D07468909488B09488B09488B09488B -09488B09488B09488B09488B09488B09488B09468B07498B09478B0A488B0744870843870B4287 -0843870843870843870843870944880A45890A45890A45890A45890A45890A45890845880B4584 -0B45850B45850842820943820842840B46820B45810B45810944810B45810B45810B45810B4581 -0B45810B45810B45810B45810B45810B45810B45810B45810B45810B4582074384074582084382 -0D44850C42850D42850D44820F45830D44810D43810D42810D43810D43810D43810D43810F4583 -0E44820B427F0D43810D43810D43810C42800B427F1248870F41811142810F4281124483114282 -0E3F7F0E44810D43810D44810B407F0B407F093F7D0C427C0B427E0B427E0B427E0B427E0B427E -0C417D093F7B0C417D0B427E0B427E0A407C1143800D3F7C1143800E407D10427F10427F15767A -045EA9005DA60061A0015BB80059B3035FA8025EAC025CB2045EB6025DB1005BAB005EAE005EAE -005EAE005CAC005DAD0061B1005DAD005FAF005FAF005CAC005DAE005CAE005FAA005FAC005FAC -005FAC005FAC005FAC005FAC005FAC005DAA0060AD0060AD005DAA005DAA0060AD0060AD0060AD -0060AD0060AD0060AD0060AD0060AD005DAA005FAC005FAC015CA9015EAB015EAB005CA9005AA7 -0260AD005CA9015EAB015EAB005CA9025FAC025FAC005CA9015EAB015EAB015EAB015EAB015EA9 -015EAC015EAC015EAC005DAB005AA8005DAB0059A8005BAA005BAA005BAA005BAA005BAA005BAA -005BAA0059A8015CAB015CAB005AA80057A7015CAC0057A70059A90059A90057A70059A90055A5 -0059A90057A70059A90059A90357A80154A50155A70053A50054A50054A50054A80055A80055A8 -0055A80055A80055A80151A30153A50153A50153A50153A50153A30153A70153A70153A70153A7 -0153A70153A70153A30153A50153A50153A50153A50053A50253A20253A40253A40253A40253A4 -0152A30051A20050A10152A30051A20152A30050A30253A2004F9F0254A200519B01539C01539A -01539D01539D01539D00519B00529C00519B00539B01539D01519C024F9A03519C024F9A02509B -03519C03519C03519C03519C004E99014F9A014F9A014F9A004C97004E99004E99014B99014D99 -014D99014D99014D99014D99014D99014D99014D99014D99014D99014D99014D99014D97004B98 -035098024F9600488E045197004D93004C92014E94014E94004E94034B94034D94034D94004A91 -034D94034B94004E94014E94014E94014E94014E94004C91034993034B93034B93034B93034B93 -014B93054892054A8F04498A054A8B04498E054890054B90064B8F064B9004488D054A8F054A8D -054890054A8F054A8C03478C064A8B064C8906488B064A8B064A8B064A8B064A8B064A8B034A8B -054A8B044A8A08488A08478A05448709488B09488B09488B09488B09488B09488B09488B09488B -09488B09488B09488B09468B07498B09478B0A488B0844870A45890B43890845890A45890A4589 -0A45890A45890A45890A45890A45890A45890A45890A45890845880B45840B45850B4585084282 -0A44840842840B45840B44840B44840B44840B44840B44840B44840B44840B44840B44840B4484 -0B44840B44840B44840B44840B44840B44840B44840745840945840843820D44850D43850C4183 -1244850E40821244860F41831042841042841042841042841042840F42831042840F42830F4183 -1042840F41831346871043840C40821141841141841041841041831141841041830F4383104284 -1043840B3D7F0D3F811041830D427D0E427E0E427E0E427E0E427E0E427E0B3F7B1044800B3F7B -0E427E0E427E0C417C10427F10427F10427F0F417E10427F10427F1E8483015EA3005DA301619F -045EB70059B4045EA9035DAD035CB30259B3025AB1055EB0005EAC005EAE005CAC0060B0005DAD -005DAD005FAE005FAF005FAF005CAE005EAD005DAF005FAA005FAC005FAC005FAC005FAC005FAC -005FAC005FAC005EAB0060AD0060AD005DAA005DAA0060AD0060AD0060AD0060AD0060AD0060AD -0060AD0060AD005EAB005FAC005FAC015CA9015EAB005CA9025EAB025FAC015BA8005DAA015EAB -015EAB005CA9025FAC025FAC005CA9015EAB015EAB015EAB015EAB015EA9015CAC015CAC015EAC -005BA9005BA9005DAB0059A8005BAA005BAA005BAA0059A8005BAA0059A8005BAA0059A8015CAB -015CAB0059A8025AAA0057A7025AAA0057A70059A90058A80056A6005AAA0056A60058A80059A9 -0059A90455A80253A50355A70051A30051A30051A30055A80055A80055A80055A80055A80055A8 -0151A30153A50153A50051A30153A50051A30153A70051A70153A70053A70053A70051A70051A3 -0153A50051A30153A50153A50053A50253A20253A40253A40051A20253A40051A20253A4004FA0 -0253A40050A10152A30051A30151A00354A301539F00539D01539C01539B01539D01539D01539D -00539D01539D00509A00539C01539D02519C004D9802509B04529D014F9A03519C014F9A03519C -03519C004E99014F9A014F9A014F9A004C97004E99004E99014B99014D99014D99014D99014D99 -014D99014D99014D99014D99014D99014D99014D99014D99014D97004B98024F97004B92034F95 -004C92004D93035096004C92014E94004E94034B94034D94034D94004990024C93034B94004E94 -014E94014E94014E94004E94004C91034A93034B93034B93014991034B93014B93054891034A8F -03488A074C8B02478C064992054B90064B8F064B9003488D054A8F054A8D054890054A8F054A8C -03488C064B8B064C8A06488B064A8B064A8B044889064A8B064A8B034A8B054A8B044A8A07488A -08478A07468909488B09488B09488B07468909488B09488B09488B09488B09488B09488B074689 -09478B07498B09488B0A488B0844870A45890B43890945890A45890A45890A45890A45890A4589 -0A45890A45890A45890A45890A45890845880945850A45850B45850842820A42820842820B4582 -0B45820B45820B45840B45840B45840B45840B45840B45840B45820B45820B45820B45820B4582 -0B45820B45840B45840B45840745840945840843820D44850D42850C42841042821145850E4182 -0F42831043841043840E41821043840E42820D40811043841144850E41821043840E41820F4283 -1245860D41811142841141841142840E3F811141841243850E43831043841043840D41810C4081 -0B3E7F0D427E0C427D0C427E0C427E0C427E0C427C0D417D0A3F7B0D417D0C427C0C427E0C427D -0E407D1244810D407D10427F10427F10427F1A7B7A025CA30463AE0062A1035EB6035BAC005EA2 -005EA8025DAD005AAA015EAD005AA7005DAD005BAB005DAD005AAA015DAD005EAC025DB0025FAF -015CAA005BA9005CA9005BA9015EAA015CA9015CA9015CA9015CA9015CA9015CA9015CA9015CA9 -015CA9015CA9015EAB015EAB015CA9015CA9015CA9015CA9015CA9015CA9015CA9015CA9015CA9 -015CA9015CA9015EAB015EAB015EAB005CA9005CA9015EAB015EAB015EAB015EAB015EAB005DAA -005CA9015EAB015EAB015EAB015EAB015EAB015CAB005FA9005FA9015DA9025FAC005BA80058A5 -005BAA005BAA005AA9015AA9015DAC0159A8025CAB0059A8025CAB005AA9015CAB005AA90054A4 -005AAA0054A40059A90059A90059A90059A90057A70059A90059A90059A90059A90455A80153A5 -0355A70153A50254A60253A60055A40055A40055A40055A40055A40055A40151A30153A50051A3 -0254A60152A40052A50152A30355A50151A30153A40253A40253A40254A60051A30254A60051A3 -0153A50052A50152A20152A30051A20354A50051A20354A50354A50050A10050A10051A20152A3 -0152A10152A500509F004F9A005097004F99004F9B00529A00509A004E9800509A004F99004F99 -00539C01539D02509B03529D024F9A004E9903519C004E9903519C004D98004E99004C97004C97 -004C97004C97004E99004E99004E99014B99014D99014D99014D99014D99014D99014D99014D99 -014D99014D99014D99014D99014D99014D97004B98025098004C93004C92024F95014E94004B91 -014E94014E94004E94034B94034D94004A91014B92024C93024D93004D91004E92004C91004E94 -034C94024991004890004890004890054D95014991024A92064993064B90064B8B044A8B084D92 -044892054A90064B8F064B9003488D054A8F054A8D054890054A8F054A8D02478A02478A024A87 -05478A034788034788074B8C044889034788054A8B054A8B044A8B064688074589074689064588 -08478A07468909488B07468906458809488B09488B08478A0645880A498C064588064888074588 -09478A0846870A45890B43890742860842870742860A45890A45890A45890A45890A45890A4589 -0A45890945890A45880C41830D41820C41820B45850A46850846850B43850B45850B4585084282 -0842840842840842840842840842820B45850B45850B45850B45850B45850B4585084282084384 -0A42840745840945840843820D44850D42850C42841042821144851043840F42830F42830F4283 -1043840E42821245860E41821043840D40811043841043841043841044840D40811144850C3F80 -1043840E42831044841144850D4182103F81103F811041830C3D7F0E3D810D40800F417F0F3F7D -0F3F7E0F3F7E0F3F7E0F3F7E0F3F7C0F417E0F3F7C0F3F7E0F3F7E0D3F7C1343810D3C7B134381 -0E3E7C103E7C103E7C1676790058A4045FAE0060A4025CBA0159B1025FA2025EA9025DAD005BAC -015BAC015DA9005CAD005DAD005DAD005BAB015EAE005EAC025DB0025FAF015CAA005DAB005DA9 -005BA8015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB -015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB -015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB -015EAB015EAB015EAB015CAB005FAB005FAB015EAB005BA8005AA7025BA90059AA005BAA0059A8 -025CAB0058A7025CAB0059A8015EAD0059A8015CAB015CAB005AA80057A70058A80057A70059A9 -0059A90059A90059A90059A90059A90059A90059A90059A90455A80153A50355A70052A40254A6 -0252A60055A60054A60054A60054A60054A60055A60151A30153A50153A50051A30254A60051A3 -0254A60050A30254A60252A40253A50053A50051A30456A80051A30153A50153A50051A50253A4 -0253A40253A40051A20556A70051A20051A20253A40050A10152A30152A30152A10152A40151A0 -004F9C00529700519A00509C00509A00519B00509A00509A00519B004F9900539C01539D02529C -004D99014F9A05539E004D9805539E004D9805539E02509B004D98004E99004E99004E99004E99 -004E99004E99014B99014D99014D99014D99014D99014D99014D99014D99014D99014D99014D99 -014D99014D99014D97004B98024F98004C93014E94004D93014E94004D93004D93014E94004E94 -034B94034D94004A91024C9300488F055097004C91004E93004C91014E94024D94024991024A92 -024A92024A9200478F064E96044C94064993064B9004498B074C8D04478C074A9404498F064B90 -064B9004488D054A8F054A8D054890054A8F054A8D03478A04488A024A8705478A05498A05498A -034788044889084C8D034889054A8B044A8B07488A08478A0746890C4B8E0A498C09488B064588 -0746890B4A8D07468909488B07468909488B05448709488B06488808468A09478A0846870A4589 -0B43890744860944880742860A45890A45890A45890A45890A45890A45890A45890A4589094588 -0D41830B42840C41820B45850A46850846850B43850B45850B45850842820A44840A44840A4484 -0A44840842820B45850B45850B45850B45850B45850B45850842820A44840A4284074584094584 -0843820D44850D43850C41831244850E40821143851143851144851345870F42831244860C3F80 -1345870E41821244861042841042841043840F41831345870D40811548890F42831144850F4183 -0D3F811346870E3F811040831041830C3D800E3E810C40800F417E0F417D0F417E0F417E0F417E -0F417E0F417E0F417E0F417E0F417E0F417E0D417D0F3F7D1242800F3F7D0F3F7D10407E10407E -1A79820059AA015EB3005FA8015BBD0056B4025FA2025EA9015CAD025DAE005AA9025EA9005BAD -005DAD005DAD005BAB015EAE005EAC025DB0025FAF015CAA005DAB005DAA005BA8015EAB015EAB -015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB -015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB -015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB015EAB -015CAB005FAB005FAB015DA9015EAB005BA80058A5005AAA005BAA005AA9005AA9005CAB0059A8 -015BAA005AA9005BAA005BAA015CAB005AA80058A90055A50059A90058A80059A90059A90059A9 -0059A90059A90059A90059A90059A90455A80153A50355A70052A40254A60153A60056A60055A6 -0055A60055A60055A60056A60151A30153A50051A30253A50152A40052A40152A40254A60152A4 -0153A50253A50152A40153A50052A40253A50051A30153A50052A50152A20152A30152A30253A4 -0152A30253A40254A50050A10052A30051A20152A30152A10152A40151A0004F9C00529700509A -00519C004F9900529C00529C004F9900519B004F9900539C01539D02509B01519C024F9A014F9A -02509B014F9A02519C004D98004E99004D98004E99004E99004E99004E99004E99004E99014B99 -014D99014D99014D99014D99014D99014D99014D99014D99014D99014D99014D99014D99014D97 -004B98024F98004C93014E94004C92024F95024F95004C92014E94004E94034B94034D94004A91 -014B92024C93024D93004D91004E93004C91014E94024D94024991024A92024A92004890044C94 -014991024A92054A93044A90044B8B044B8A064D90044A92044A90044B8F054B9003488D034A8F -034A8D03499003498F044B8D02498A02498A024A8705478A05498A034788064A8B044889044889 -04498A054A8B044A8B06468807468907468907468908478A08478A09488B07468907468908478A -09488B08478A06458809488B08458906488908468A09478A0846870A45890B4389074486094488 -0742860A45890A45890A45890A45890A45890A45890A45890A45890945880D41830B42840C4182 -0B45850A46850846850B43850B45850B45850842820A44840A44840A44840A44840842820B4585 -0B45850B45850B45850B45850B45850842820A44840A42840745840945840843820D44850C4285 -0D42850D44820F45830D43810D42810D43810C43800E43820D42810F45830C41800E43820C4280 -0E44820E43820E43820E44820C42800F44830A417E0E44820D42810E44820F45830C4280104180 -1041801042810C3E7E0E3F7E0C3E7F0F417C0F417E0F417E0F417E0F417E0F417E0F417E0F417E -0F417E0F417E0F417E0D417C11407E11417F10407E0E3E7C10407E10407E - -end -%%PageTrailer -%%Trailer -%%EOF diff --git a/doc/Doxyfile-chm b/doc/Doxyfile-chm new file mode 100644 index 0000000..de5e37a --- /dev/null +++ b/doc/Doxyfile-chm @@ -0,0 +1,2978 @@ +# Doxyfile 1.13.2 + +# This file describes the settings to be used by the documentation system +# Doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). +# +# Note: +# +# Use Doxygen to compare the used configuration file with the template +# configuration file: +# doxygen -x [configFile] +# Use Doxygen to compare the used configuration file with the template +# configuration file without replacing the environment variables or CMake type +# replacement variables: +# doxygen -x_noenv [configFile] + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "OWA-EPANET Toolkit 2.3" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewers a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# With the PROJECT_ICON tag one can specify an icon that is included in the tabs +# when the HTML document is shown. Doxygen will copy the logo to the output +# directory. + +PROJECT_ICON = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where Doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES then Doxygen will create up to 4096 +# sub-directories (in 2 levels) under the output directory of each output format +# and will distribute the generated files over these directories. Enabling this +# option can be useful when feeding Doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise cause +# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to +# control the number of sub-directories. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# Controls the number of sub-directories that will be created when +# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every +# level increment doubles the number of directories, resulting in 4096 +# directories at level 8 which is the default and also the maximum value. The +# sub-directories are organized in 2 levels, the first level always has a fixed +# number of 16 directories. +# Minimum value: 0, maximum value: 8, default value: 8. +# This tag requires that the tag CREATE_SUBDIRS is set to YES. + +CREATE_SUBDIRS_LEVEL = 8 + +# If the ALLOW_UNICODE_NAMES tag is set to YES, Doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by Doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, +# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English +# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, +# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with +# English messages), Korean, Korean-en (Korean with English messages), Latvian, +# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, +# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, +# Swedish, Turkish, Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, Doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, Doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, Doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, Doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which Doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where Doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, Doxygen will generate much shorter (but +# less readable) file names. This can be useful if your file system doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen will interpret the +# first line (until the first dot, question mark or exclamation mark) of a +# Javadoc-style comment as the brief description. If set to NO, the Javadoc- +# style will behave just like regular Qt-style comments (thus requiring an +# explicit @brief command for a brief description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the JAVADOC_BANNER tag is set to YES then Doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by Doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will interpret the first +# line (until the first dot, question mark or exclamation mark) of a Qt-style +# comment as the brief description. If set to NO, the Qt-style will behave just +# like regular Qt-style comments (thus requiring an explicit \brief command for +# a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# By default Python docstrings are displayed as preformatted text and Doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# Doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as Doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then Doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:^^" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by Doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make Doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by Doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then Doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by Doxygen, so you can +# mix Doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 6. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 6 + +# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to +# generate identifiers for the Markdown headings. Note: Every identifier is +# unique. +# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a +# sequence number starting at 0 and GITHUB use the lower case version of title +# with any whitespace replaced by '-' and punctuation characters removed. +# The default value is: DOXYGEN. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +MARKDOWN_ID_STYLE = DOXYGEN + +# When enabled Doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. Words listed in the +# AUTOLINK_IGNORE_WORDS tag are excluded from automatic linking. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# This tag specifies a list of words that, when matching the start of a word in +# the documentation, will suppress auto links generation, if it is enabled via +# AUTOLINK_SUPPORT. This list does not affect affect links explicitly created +# using \# or the \link or commands. +# This tag requires that the tag AUTOLINK_SUPPORT is set to YES. + +AUTOLINK_IGNORE_WORDS = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let Doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also makes the inheritance and +# collaboration diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software) sources only. Doxygen will parse +# them like normal C++ but will assume all classes use public instead of private +# inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# Doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then Doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, Doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# Doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run Doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +# The NUM_PROC_THREADS specifies the number of threads Doxygen is allowed to use +# during processing. When set to 0 Doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which effectively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 + +# If the TIMESTAMP tag is set different from NO then each generated page will +# contain the date or date and time when the page was generated. Setting this to +# NO can help when comparing the output of multiple runs. +# Possible values are: YES, NO, DATETIME and DATE. +# The default value is: NO. + +TIMESTAMP = NO + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, Doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# will also hide undocumented C++ concepts if enabled. This option has no effect +# if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_UNDOC_NAMESPACES tag is set to YES, Doxygen will hide all +# undocumented namespaces that are normally visible in the namespace hierarchy. +# If set to NO, these namespaces will be included in the various overviews. This +# option has no effect if EXTRACT_ALL is enabled. +# The default value is: YES. + +HIDE_UNDOC_NAMESPACES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# With the correct setting of option CASE_SENSE_NAMES Doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and macOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# Possible values are: SYSTEM, NO and YES. +# The default value is: SYSTEM. + +CASE_SENSE_NAMES = SYSTEM + +# If the HIDE_SCOPE_NAMES tag is set to NO then Doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then Doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + +SHOW_HEADERFILE = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES then Doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then Doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then Doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then Doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then Doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and Doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING Doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# Doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by Doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by Doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents Doxygen's defaults, run Doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. +# +# Note that if you run Doxygen from a directory containing a file called +# DoxygenLayout.xml, Doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +# The EXTERNAL_TOOL_PATH tag can be used to extend the search path (PATH +# environment variable) so that external tools such as latex and gs can be +# found. +# Note: Directories specified with EXTERNAL_TOOL_PATH are added in front of the +# path already specified by the PATH variable, and are added in the order +# specified. +# Note: This option is particularly useful for macOS version 14 (Sonoma) and +# higher, when running Doxygen from Doxywizard, because in this case any user- +# defined changes to the PATH are ignored. A typical example on macOS is to set +# EXTERNAL_TOOL_PATH = /Library/TeX/texbin /usr/local/bin +# together with the standard path, the full search path used by doxygen when +# launching external tools will then become +# PATH=/Library/TeX/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin + +EXTERNAL_TOOL_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by Doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by Doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then Doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, Doxygen will generate warnings for +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# If WARN_IF_INCOMPLETE_DOC is set to YES, Doxygen will warn about incomplete +# function parameter documentation. If set to NO, Doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + +WARN_IF_INCOMPLETE_DOC = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, Doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, Doxygen will warn about +# undocumented enumeration values. If set to NO, Doxygen will accept +# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: NO. + +WARN_IF_UNDOC_ENUM_VAL = NO + +# If WARN_LAYOUT_FILE option is set to YES, Doxygen will warn about issues found +# while parsing the user defined layout file, such as missing or wrong elements. +# See also LAYOUT_FILE for details. If set to NO, problems with the layout file +# will be suppressed. +# The default value is: YES. + +WARN_LAYOUT_FILE = YES + +# If the WARN_AS_ERROR tag is set to YES then Doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then Doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the Doxygen process Doxygen will return with a non-zero status. +# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then Doxygen behaves +# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined Doxygen will not +# write the warning messages in between other messages but write them at the end +# of a run, in case a WARN_LOGFILE is defined the warning messages will be +# besides being in the defined file also be shown at the end of a run, unless +# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case +# the behavior will remain as with the setting FAIL_ON_WARNINGS. +# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that Doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# See also: WARN_LINE_FORMAT +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# In the $text part of the WARN_FORMAT command it is possible that a reference +# to a more specific place is given. To make it easier to jump to this place +# (outside of Doxygen) the user can define a custom "cut" / "paste" string. +# Example: +# WARN_LINE_FORMAT = "'vi $file +$line'" +# See also: WARN_FORMAT +# The default value is: at line $line of file $file. + +WARN_LINE_FORMAT = "at line $line of file $file" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = main.dox \ + toolkit-usage.dox \ + toolkit-examples.dox \ + toolkit-files.dox \ + toolkit-input.dox \ + toolkit-units.dox \ + toolkit-topics.dox \ + ../include/epanet2_enums.h \ + ../include/epanet2_2.h + +# This tag can be used to specify the character encoding of the source files +# that Doxygen parses. Internally Doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# See also: INPUT_FILE_ENCODING +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# This tag can be used to specify the character encoding of the source files +# that Doxygen parses. The INPUT_FILE_ENCODING tag can be used to specify +# character encoding on a per file pattern basis. Doxygen will compare the file +# name with each pattern and apply the encoding instead of the default +# INPUT_ENCODING if there is a match. The character encodings are a list of the +# form: pattern=encoding (like *.php=ISO-8859-1). +# See also: INPUT_ENCODING for further information on supported encodings. + +INPUT_FILE_ENCODING = + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by Doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm, +# *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, +# *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d, +# *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to +# be provided as Doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cxxm \ + *.cpp \ + *.cppm \ + *.ccm \ + *.c++ \ + *.c++m \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.ixx \ + *.l \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f18 \ + *.f \ + *.for \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf \ + *.ice + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which Doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# ANamespace::AClass, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = ./ + +# The INPUT_FILTER tag can be used to specify a program that Doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that Doxygen will use the data processed and written to standard output +# for further processing, therefore nothing else, like debug statements or used +# commands (so in case of a Windows batch file always use @echo OFF), should be +# written to standard output. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by Doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by Doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the Doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +# If the IMPLICIT_DIR_DOCS tag is set to YES, any README.md file found in sub- +# directories of the project's root, is used as the documentation for that sub- +# directory, except when the README.md starts with a \dir, \page or \mainpage +# command. If set to NO, the README.md file needs to start with an explicit \dir +# command in order to be used as directory documentation. +# The default value is: YES. + +IMPLICIT_DIR_DOCS = YES + +# The Fortran standard specifies that for fixed formatted Fortran code all +# characters from position 72 are to be considered as comment. A common +# extension is to allow longer lines before the automatic comment starts. The +# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can +# be processed before the automatic comment starts. +# Minimum value: 7, maximum value: 10000, default value: 72. + +FORTRAN_COMMENT_AFTER = 72 + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# multi-line macros, enums or list initialized variables directly into the +# documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct Doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of Doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by Doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then Doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then Doxygen will use the +# clang parser (see: +# http://clang.llvm.org/) for more accurate parsing at the cost of reduced +# performance. This can be particularly helpful with template rich C++ code for +# which Doxygen's built-in parser lacks the necessary type information. +# Note: The availability of this option depends on whether or not Doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS +# tag is set to YES then Doxygen will add the directory of each input to the +# include path. +# The default value is: YES. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_ADD_INC_PATHS = YES + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by Doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the directory containing a file called compile_commands.json. This +# file is the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the +# options used when the source files were built. This is equivalent to +# specifying the -p option to a clang tool, such as clang-check. These options +# will then be passed to the parser. Any options specified with CLANG_OPTIONS +# will be added as well. +# Note: The availability of this option depends on whether or not Doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) +# that should be ignored while generating the index headers. The IGNORE_PREFIX +# tag works for classes, function and member names. The entity will be placed in +# the alphabetical list under the first letter of the entity name that remains +# after removing the prefix. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, Doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank Doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that Doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that Doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of Doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank Doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that Doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = newfooter.html + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank Doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that Doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by Doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output +# should be rendered with a dark or light theme. +# Possible values are: LIGHT always generates light mode output, DARK always +# generates dark mode output, AUTO_LIGHT automatically sets the mode according +# to the user preference, uses light mode if no preference is set (the default), +# AUTO_DARK automatically sets the mode according to the user preference, uses +# dark mode if no preference is set and TOGGLE allows a user to switch between +# light and dark mode via a button. +# The default value is: AUTO_LIGHT. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE = LIGHT + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a color-wheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use gray-scales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be +# dynamically folded and expanded in the generated HTML source code. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_CODE_FOLDING = YES + +# If the HTML_COPY_CLIPBOARD tag is set to YES then Doxygen will show an icon in +# the top right corner of code and text fragments that allows the user to copy +# its content to the clipboard. Note this only works if supported by the browser +# and the web page is served via a secure context (see: +# https://www.w3.org/TR/secure-contexts/), i.e. using the https: or file: +# protocol. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COPY_CLIPBOARD = YES + +# Doxygen stores a couple of settings persistently in the browser (via e.g. +# cookies). By default these settings apply to all HTML pages generated by +# Doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store +# the settings under a project specific key, such that the user preferences will +# be stored separately. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_PROJECT_COOKIE = + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, Doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then Doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline (the HTML help workshop was already many +# years in maintenance mode). You can download the HTML help workshop from the +# web archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by Doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = YES + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = ../owa_epanet.chm + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# Doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = "c:\Program Files (x86)\HTML Help Workshop\hhc.exe" + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# The SITEMAP_URL tag is used to specify the full URL of the place where the +# generated documentation will be placed on the server by the user during the +# deployment of the documentation. The generated sitemap is called sitemap.xml +# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL +# is specified no sitemap is generated. For information about the sitemap +# protocol see https://www.sitemaps.org +# This tag requires that the tag GENERATE_HTML is set to YES. + +SITEMAP_URL = + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty Doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = YES + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by Doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has the same information as the tab index, you could +# consider setting DISABLE_INDEX to YES when enabling this option. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the +# FULL_SIDEBAR option determines if the side bar is limited to only the treeview +# area (value NO) or if it should extend to the full height of the window (value +# YES). Setting this to YES gives a layout similar to +# https://docs.readthedocs.io with more room for contents, but less room for the +# project logo, title, and description. If either GENERATE_TREEVIEW or +# DISABLE_INDEX is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FULL_SIDEBAR = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# Doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 0 + +# When the SHOW_ENUM_VALUES tag is set doxygen will show the specified +# enumeration values besides the enumeration mnemonics. +# The default value is: NO. + +SHOW_ENUM_VALUES = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, Doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# If the OBFUSCATE_EMAILS tag is set to YES, Doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +OBFUSCATE_EMAILS = YES + +# If the HTML_FORMULA_FORMAT option is set to svg, Doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# Doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2 and MathJax_3. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_VERSION = MathJax_2 + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 +# (see: +# http://docs.mathjax.org/en/latest/web/components/output.html). +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for MathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. The default value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see +# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): +# MATHJAX_EXTENSIONS = ams +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with JavaScript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled Doxygen will generate a search box for +# the HTML output. The underlying search engine uses JavaScript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the JavaScript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /
UNITSCFS / GPM / MGD / IMGD / AFD /
LPS / LPM / MLD / CMS / CMH / CMD
PRESSUREPSI / KPA / METERS
HEADLOSSH-W / D-W / C-M
HYDRAULICSUSE / SAVE  filename
VISCOSITYvalue
@image html DistributionSystem.png -@image latex DistributionSystem.eps
@@ -17,6 +16,7 @@ The OWA-EPANET Toolkit is an open-source version of the original EPANET Toolkit - allowing networks to be built completely from function calls instead of from an input file - allowing multiple projects to be analyzed in parallel in a thread-safe manner - adding the ability to use pressure dependent demands in hydraulic analyses +- adding the ability to model fixed and variable area leakage in pipes - producing more robust results with regard to hydraulic convergence, low/zero flow conditions, and water quality mass balance - achieving faster run times for single period hydraulic analyses. @@ -25,7 +25,7 @@ Before using the OWA-EPANET Toolkit one should be familiar with the way that EPA - @subpage DataFlow "Data Flow Diagram" - @subpage ToolkitVersions "Toolkit Versions" -More detailed information can be obtained from reading the EPANET 2 Users Manual. +More detailed information can be obtained from reading the EPANET 2 Users Manual. __Note:__ OWA (Open Water Analytics) exists on GitHub as an open community for the exchange of information and ideas related to computing in the water & wastewater industries. Its activities and code projects are neither affiliated with nor endorsed by the USEPA. */ @@ -38,7 +38,6 @@ EPANET models a pipe network as a collection of links connected to nodes. The li
@image html Network.png -@image latex Network.eps
@@ -59,15 +58,14 @@ being taken and if false result in a different set of actions being taken An EPANET model also contains a number of analysis options that specify: - the project's flow units which in turn determines its unit system (US or SI) -- the formula used to compute head loss +- the formula used to compute pipe head loss as a function of flow rate - whether to use a demand driven or a pressure driven analysis -- hydraulic convergence criteria +- hydraulic convergence criteria and water quality tolerances - time steps used for hydraulic, water quality and reporting - the type of water quality analysis to perform (chemical reaction, source tracing or water age) -- global values for chemical reaction coefficients that can be overridden for individual pipes - global values for energy usage parameters that can be overridden for individual pumps. -Please refer to the EPANET 2 Users Manual +Please refer to the EPANET 2 Users Manual for more information on EPANET's data model. */ @@ -79,7 +77,6 @@ The EPANET Toolkit contains separate code modules for network building, hydrauli
@image html DataFlow.png -@image latex DataFlow.eps
@@ -104,7 +101,7 @@ with single threaded applications. analyzed concurrently. Both Toolkit versions utilize identical function names and argument lists with the following exceptions: -- The `#include "epanet2.h"` directive must appear in all C/C++ code modules that use the single-threaded library while `#include "epanet2_2.h"` must be used for the multi-threaded library. +- The `#include epanet2.h` directive must appear in all C/C++ code modules that use the single-threaded library while `#include epanet2_2.h` must be used for the multi-threaded library. (The "_2" portion of the latter file's name means it is the second of two header files provided and is not a minor release number.) - Function names in the single-threaded library begin with \b EN while those in the multi-threaded library begin with \b EN_ . - The multi-threaded functions contain an additional argument that references a particular network project diff --git a/doc/newfooter.html b/doc/newfooter.html index 6ef6196..536c10b 100644 --- a/doc/newfooter.html +++ b/doc/newfooter.html @@ -4,7 +4,7 @@ diff --git a/doc/readme.md b/doc/readme.md index 36e1793..90d8da8 100644 --- a/doc/readme.md +++ b/doc/readme.md @@ -1,30 +1,28 @@  -## Generating Documentation for OWA-EPANET 2.2 +## Generating Documentation for OWA-EPANET 2.3 -You must have [Doxygen](http://www.doxygen.nl) installed on your machine to generate documentation for the OWA-EPANET Toolkit. Assuming this is the case, open a terminal window, navigate to the project's `doc` directory and issue the command `doxygen`. This will generate HTML documentation placed in a sub-directory named `html`. From that directory you can launch the `index.html` file to view the full documentation in a web browser. +You must have [Doxygen](http://www.doxygen.nl) version 1.13 installed on your machine to generate documentation for the OWA-EPANET Toolkit. Assuming this is the case, open a terminal window, navigate to the project's `doc` directory and issue the command `doxygen`. This will generate HTML documentation placed in a sub-directory named `html`. From that directory you can launch the `index.html` file to view the full documentation in a web browser. -To generate a Windows compiled HTML Help file you must have [Microsoft's HTML Help Workshop](https://www.microsoft.com/en-us/download/details.aspx?id=21138) installed. You then need to edit the Doxygen configuration file `doxyfile` as follows: - -1. Change the `GENERATE_HTMLHELP` setting to `YES`. - -2. Enter the location where the Help Workshop system was installed next to the - `HHC_LOCATION` setting. - -After running Doxygen again the resulting Help file named `owa-epanet.chm` will appear in the `html` sub-directory. +To generate a Windows compiled HTML Help file you must have [Microsoft's HTML Help Workshop](http://web.archive.org/web/20160201063255/http://download.microsoft.com/download/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe) installed. Then follow these steps: +1. Open a terminal window and navigate to the project's `doc` directory. +2. Edit the configuration file `Doxyfile-chm` by entering the location where the Help Workshop system was installed next to the `HHC_LOCATION` setting. +3. Issue the command `doxygen Doxyfile-chm` to generate a compiled Help file named `owa-epanet.chm` in the `doc` directory. +4. You can delete the `html-chm` sub-directory created by Doxygen. Doxygen uses the special comments placed in the project's `epanet2_2.h` and `epanet2_enums.h` header files to document EPANET's API. It also uses supplementary material contained in the following files of the project's `doc` directory to generate additional pages of documentation: - `main.dox`: generates the *Overview* section. -- `usage.dox`: generates the *Usage* section. +- `toolkit-usage.dox`: generates the *Usage* section. - `toolkit-examples.dox` : generates the *Examples* section. - `toolkit-files.dox`: generates the *Toolkit Files* section. -- `input-file.dox`: generates the *Input File* sub-section. +- `toolkit-input.dox`: generates the *Input File* sub-section. - `toolkit-units.dox`: generates the *Measurement Units* section. -- `modules.dox`: defines the contents of the *API Reference* section. +- `toolkit-topics.dox`: defines the contents of the *API Reference* section. Finally, a group of special Doxygen files are used to customize the format of the generated documentation. These include the following: -- `doxyfile`: the main Doxygen configuration file -- `DoxygenLayout.xml`: sets the title of the automatically generated *Modules* section to *API Reference* and hides the *Files* section in the tree view pane of the document. -- `extrastylesheet.css`: reduces the size of the the h1 heading style. +- `Doxyfile`: the Doxygen configuration file for HTML output +- `Doxyfile-chm`: the Doxygen configuration file for HTML Help output +- `DoxygenLayout.xml`: sets the title of the automatically generated *Topics* section to *API Reference* and hides the *Files* section in the tree view pane of the document. +- `doxygen-awsome.css`: applies a custom theme provided by [doxygen-awesome](https://github.com/jothepro/doxygen-awesome-css) to produce a more modern visual style for HTML output. - `newfooter.html`: replaces the default Doxygen footer in HTML output with a custom one. diff --git a/doc/toolkit-examples.dox b/doc/toolkit-examples.dox index 547724e..aafadac 100644 --- a/doc/toolkit-examples.dox +++ b/doc/toolkit-examples.dox @@ -47,7 +47,6 @@ Below is a schematic of the network to be built.
@image html Example2.png -@image latex Example2.eps
diff --git a/doc/toolkit-files.dox b/doc/toolkit-files.dox index 38aeab8..fdf2115 100644 --- a/doc/toolkit-files.dox +++ b/doc/toolkit-files.dox @@ -157,7 +157,8 @@ Developers need to issue an include directive for either `epanet2.h` or `epanet2 Several additional function declaration files that provide bindings for other programming languages are included with the Toolkit package: - `epanet2.bas` for Visual Basic for Applications and Visual Basic 6 - `epanet2.vb` for Visual Basic .NET -- `epanet2.pas` for Delphi Pascal, Free Pascal or Lazarus. +- `epanet2.pas` for Delphi Pascal, Free Pascal or Lazarus. +- `epanet2.cs` for C# These bindings only support the single-threaded version of the Toolkit. */ diff --git a/doc/input-file.dox b/doc/toolkit-input.dox similarity index 96% rename from doc/input-file.dox rename to doc/toolkit-input.dox index 1c35f6f..49996ba 100644 --- a/doc/input-file.dox +++ b/doc/toolkit-input.dox @@ -9,11 +9,12 @@ The file is organized by sections where each section begins with a keyword enclo |@subpage TitlePage "[Title]" |@subpage CurvesPage "[Curves]" |@subpage QualPage "[Quality]" |@subpage OptionsPage "[Options]"|@subpage BackdropPage "[Backdrop]" | |@subpage JuncsPage "[Junctions]"|@subpage PatsPage "[Patterns]" |@subpage ReactsPage "[Reactions]"|@subpage TimesPage "[Times]" |@subpage CoordsPage "[Coordinates]" | |@subpage ResvPage "[Reservoirs]"|@subpage EnergyPage "[Energy]" |@subpage SourcesPage "[Sources]" |@subpage ReportPage "[Report]" |@subpage VertexPage "[Vertices]" | -|@subpage TanksPage "[Tanks]" |@subpage StatusPage "[Status]" |@subpage MixingPage "[Mixing]" | |@subpage LabelsPage "[Labels]" | +|@subpage TanksPage "[Tanks]" |@subpage StatusPage "[Status]" |@subpage MixingPage "[Mixing]" |@subpage TagsPage "[Tags]" |@subpage LabelsPage "[Labels]" | |@subpage PipesPage "[Pipes]" |@subpage CtrlsPage "[Controls]" | | | | |@subpage PumpsPage "[Pumps]" |@subpage RulesPage "[Rules]" | | | | |@subpage ValvesPage "[Valves]" |@subpage DmndsPage "[Demands]" | | | | -|@subpage EmitsPage "[Emitters]" | | | | | +|@subpage EmitsPage "[Emitters]" |@subpage LeaksPage "[Leakage]" | | | | + The order of sections is not important. However, whenever a node or link is referred to in a section it must have already been defined in the [JUNCTIONS], [RESERVOIRS], [TANKS], [PIPES], [PUMPS], or [VALVES] sections. Thus it is recommended that these sections be placed first. @@ -40,7 +41,7 @@ One line for each control which can be of the form:    LINK _linkID_   _status_   AT TIME  _time_ -   LINK _linkID_   _status_   AT CLOCKTIME _clocktime_   AM / PM +   LINK _linkID_   _status_   AT CLOCKTIME _clocktime_ where: @@ -54,7 +55,8 @@ where: __Remarks:__ 1. Simple controls are used to change link status or settings based on tank water level, junction pressure, time into the simulation or time of day. -2. See the notes for the @ref StatusPage section for conventions used in specifying link status and setting, particularly for control valves. +2. See the notes for the @ref StatusPage section for conventions used in specifying link status and setting, particularly for control valves. +3. Adding the keyword DISABLED at the end of a control statement will indicate that the control is disabled and will not be applied. __Examples:__ @@ -65,8 +67,8 @@ LINK 12 CLOSED IF NODE 23 ABOVE 20 ;Open Link 12 if the pressure at Node 130 is under 30 psi
LINK 12 OPEN IF NODE 130 BELOW 30 -;Pump PUMP02's speed is set to 1.5 at 16 hours into the simulation
-LINK PUMP02 1.5 AT TIME 16 +;Disable setting Pump PUMP02's speed to 1.5 at 16 hours into the simulation
+LINK PUMP02 1.5 AT TIME 16 DISABLED ;Link 12 is closed at 10 am and opened at 8 pm throughout the simulation
LINK 12 CLOSED AT CLOCKTIME 10 AM
@@ -235,6 +237,26 @@ J3 115 ;No demand at this junction ``` */ +/** +@page LeaksPage [LEAKAGE] + +__Purpose:__ + +Assigns leakage parameters to individual pipes. + +__Format:__ + +A line for each pipe subject to leaking that contains: +- Pipe ID label +- the area of cracks that leak in sq. mm per 100 units of pipe length (ft or m) +- the rate at which cracks expand in sq. mm per unit of pressure head (ft or m) + +__Remarks__ +1. This section is optional. +2. Leak area is the total area of all cracks assumed to exist per 100 feet (or meters) of pipe. +3. Experimental values of expansion range between 0 and 0.001 (sq mm)/m depending on pipe material and crack size. +*/ + /** @page MixingPage [MIXING] @@ -904,6 +926,38 @@ __Example:__ @endcode */ +/** +@page TagsPage [TAGS] + +__Purpose:__ + +Associates category labels (tags) with specific nodes and links. + +__Format:__ + +One line for each node and link with a tag containing: +- the keyword NODE or LINK +- the node or link ID label +- the text of the tag label (with no spaces) + +__Remarks:__ +1. Tags can be useful for assigning nodes to different pressure zones or for classifying pipes by material or age. +2. If a node or link’s tag is not identified in this section then it is assumed to be blank. +3. The [TAGS] section is optional and has no effect on the hydraulic or water quality calculations. + +__Example:__ +@code +[TAGS] +;Object ID Tag +;------------------------------ +NODE 1001 Zone_A +NODE 1002 Zone_A +NODE 45 Zone_B +LINK 201 UNCI-1960 +LINK 202 PVC-1985 +@endcode +*/ + /** @page TanksPage [TANKS] @@ -1048,11 +1102,11 @@ __Remarks:__ |PBV (pressure breaker valve) | Pressure, psi (m) | |FCV (flow control valve) | Flow (flow units) | |TCV (throttle control valve) | Partially open loss coefficient | -|PCV (positional control valve) | Fraction open | +|PCV (positional control valve) | Percent open | |GPV (general purpose valve) | ID of head loss curve | 2. Shutoff valves and check valves are considered to be part of a pipe, not a separate control valve component (see @ref PipesPage). 3. The loss coefficient setting for a TCV should not be less than its fully open loss coefficient. -4. The characteristic curve for a PCV relates the valve's fraction of fully open flow to the fraction open. If not supplied then a linear curve is assumed. +4. The characteristic curve for a PCV relates the valve's percent of fully open flow to the percent open. If not supplied then a linear curve is assumed. 5. The partially opened loss coefficient for a PCV is the inverse of the squared value from its characteristic curve times the fully open loss coefficient. 6. The head loss curve for a GPV relates head loss across the valve to the flow rate through it. */ diff --git a/doc/modules.dox b/doc/toolkit-topics.dox similarity index 71% rename from doc/modules.dox rename to doc/toolkit-topics.dox index a2ad22e..ff2d646 100644 --- a/doc/modules.dox +++ b/doc/toolkit-topics.dox @@ -71,9 +71,14 @@ These are the toolkit's enumerated types whose members are used as function argu @fn int EN_runproject(EN_Project ph, const char *f1, const char *f2, const char *f3, void (*pviewprog)(char *)) @fn int EN_init(EN_Project ph, const char *rptFile, const char *outFile, int unitsType, int headLossType) @fn int EN_open(EN_Project ph, const char *inpFile, const char *rptFile, const char *binOutFile) +@fn int EN_openX(EN_Project ph, const char *inpFile, const char *rptFile, const char *binOutFile) @fn int EN_getcount(EN_Project ph, int code, int *count) @fn int EN_gettitle(EN_Project ph, char *line1, char *line2, char *line3) -@fn int EN_settitle(EN_Project ph, char *line1, char *line2, char *line3) +@fn int EN_settitle(EN_Project ph, const char *line1, const char *line2, const char *line3) +@fn int EN_getcomment(EN_Project ph, int object, int index, char *comment) +@fn int EN_setcomment(EN_Project ph, int object, int index, const char *comment) +@fn int EN_gettag(EN_Project ph, int object, int index, char *tag) +@fn int EN_settag(EN_Project ph, int object, int index, const char *tag) @fn int EN_saveinpfile(EN_Project ph, const char *filename) @fn int EN_close(EN_Project ph) @} @@ -110,17 +115,18 @@ These are the toolkit's enumerated types whose members are used as function argu /** @addtogroup Reporting @{ -@fn int EN_writeline(EN_Project ph, char *line) +@fn int EN_writeline(EN_Project ph, const char *line) @fn int EN_report(EN_Project ph) -@fn int EN_copyreport(EN_Project ph, char *filename) +@fn int EN_copyreport(EN_Project ph, const char *filename) @fn int EN_clearreport(EN_Project ph) @fn int EN_resetreport(EN_Project ph) -@fn int EN_setreport(EN_Project ph, char *reportFormat) +@fn int EN_setreport(EN_Project ph, const char *reportFormat) @fn int EN_setstatusreport(EN_Project ph, int code) @fn int EN_getversion(int *version) @fn int EN_geterror(int errcode, char *errmsg, int maxLen) @fn int EN_getstatistic(EN_Project ph, int type, double* value) @fn int EN_getresultindex(EN_Project ph, int type, int index, int *value) +@fn int EN_timetonextevent(EN_Project ph, int *eventType, long *duration, int *elementIndex); @} */ @@ -128,7 +134,7 @@ These are the toolkit's enumerated types whose members are used as function argu /** @addtogroup Options @{ -@fn int EN_getoption(EN_Project ph, int option, double *value) +@fn int EN_getoption(EN_Project ph, int option, double *out_value) @fn int EN_setoption(EN_Project ph, int option, double value) @fn int EN_getflowunits(EN_Project ph, int *units) @fn int EN_setflowunits(EN_Project ph, int units) @@ -136,67 +142,66 @@ These are the toolkit's enumerated types whose members are used as function argu @fn int EN_settimeparam(EN_Project ph, int param, long value) @fn int EN_getqualinfo(EN_Project ph, int *qualType, char *chemName, char *chemUnits, int *traceNode) @fn int EN_getqualtype(EN_Project ph, int *qualType, int *traceNode) -@fn int EN_setqualtype(EN_Project ph, int qualType, char *chemName, char *chemUnits, char *traceNode) +@fn int EN_setqualtype(EN_Project ph, int qualType, const char *chemName, const char *chemUnits, const char *traceNode) @} */ -/** -@addtogroup Nodes +/** \addtogroup Nodes @{ -@fn int EN_addnode(EN_Project ph, char *id, int nodeType, int *index) +@fn int EN_addnode(EN_Project ph, const char *id, int nodeType, int *out_index) @fn int EN_deletenode(EN_Project ph, int index, int actionCode) -@fn int EN_getnodeindex(EN_Project ph, char *id, int *index) -@fn int EN_getnodeid(EN_Project ph, int index, char *id) -@fn int EN_setnodeid(EN_Project ph, int index, char *newid) -@fn int EN_getnodetype(EN_Project ph, int index, int *code) -@fn int EN_getnodevalue(EN_Project ph, int index, int code, double *value) -@fn int EN_setnodevalue(EN_Project ph, int index, int code, double v) -@fn int EN_setjuncdata(EN_Project ph, int index, double elev, double dmnd, char *dmndpat) -@fn int EN_settankdata(EN_Project ph, int index, double elev, double initlvl, - double minlvl, double maxlvl, double diam, double minvol, char *volcurve) -@fn int EN_getcoord(EN_Project ph, int index, double *x, double *y) +@fn int EN_getnodeindex(EN_Project ph, const char *id, int *out_index) +@fn int EN_getnodeid(EN_Project ph, int index, char *out_id) +@fn int EN_setnodeid(EN_Project ph, int index, const char *newid) +@fn int EN_getnodetype(EN_Project ph, int index, int *out_nodeType) +@fn int EN_getnodevalue(EN_Project ph, int index, int property, double *out_value) +@fn int EN_getnodevalues(EN_Project ph, int property, double *out_values) +@fn int EN_setnodevalue(EN_Project ph, int index, int property, double value) +@fn int EN_setjuncdata(EN_Project ph, int index, double elev, double dmnd, const char *dmndpat) +@fn int EN_settankdata(EN_Project ph, int index, double elev, double initlvl, double minlvl, double maxlvl, double diam, double minvol, const char *volcurve) +@fn int EN_getcoord(EN_Project ph, int index, double *out_x, double *out_y) @fn int EN_setcoord(EN_Project ph, int index, double x, double y) -@} -*/ +@}*/ /** @addtogroup Demands @{ @fn int EN_getdemandmodel(EN_Project ph, int *type, double *pmin, double *preq, double *pexp) @fn int EN_setdemandmodel(EN_Project ph, int type, double pmin, double preq, double pexp) -@fn int EN_adddemand(EN_Project ph, int nodeIndex, double baseDemand, char *demandPattern, char *demandName) +@fn int EN_adddemand(EN_Project ph, int nodeIndex, double baseDemand, const char *demandPattern, const char *demandName) @fn int EN_deletedemand(EN_Project ph, int nodeIndex, int demandIndex) -@fn int EN_getdemandindex(EN_Project p, int nodeIndex, char *demandName, int *demandIndex) +@fn int EN_getdemandindex(EN_Project p, int nodeIndex, const char *demandName, int *demandIndex) @fn int EN_getnumdemands(EN_Project ph, int nodeIndex, int *numDemands) @fn int EN_getbasedemand(EN_Project ph, int nodeIndex, int demandIndex, double *baseDemand) @fn int EN_setbasedemand(EN_Project ph, int nodeIndex, int demandIndex, double baseDemand) @fn int EN_getdemandpattern(EN_Project ph, int nodeIndex, int demandIndex, int *pattIndex) @fn int EN_setdemandpattern(EN_Project ph, int nodeIndex, int demandIndex, int patIndex) @fn int EN_getdemandname(EN_Project ph, int nodeIndex, int demandIdx, char *demandName) -@fn int EN_setdemandname(EN_Project ph, int nodeIndex, int demandIdx, char *demandName) +@fn int EN_setdemandname(EN_Project ph, int nodeIndex, int demandIdx, const char *demandName) @} */ /** @addtogroup Links @{ -@fn int EN_addlink(EN_Project ph, char *id, int linkType, char *fromNode, char *toNode, int *index) +@fn int EN_addlink(EN_Project ph, char *id, int linkType, const char *fromNode, const char *toNode, int *out_index) @fn int EN_deletelink(EN_Project ph, int index, int actionCode) -@fn int EN_getlinkindex(EN_Project ph, char *id, int *index) +@fn int EN_getlinkindex(EN_Project ph, const char *id, int *out_index) @fn int EN_getlinkid(EN_Project ph, int index, char *id) -@fn int EN_setlinkid(EN_Project ph, int index, char *newid) -@fn int EN_getlinktype(EN_Project ph, int index, int *linkType) +@fn int EN_setlinkid(EN_Project ph, int index, const char *newid) +@fn int EN_getlinktype(EN_Project ph, int index, int *out_linkType) @fn int EN_setlinktype(EN_Project ph, int *index, int linkType, int actionCode) -@fn int EN_getlinknodes(EN_Project ph, int index, int *node1, int *node2) +@fn int EN_getlinknodes(EN_Project ph, int index, int *out_node1, int *out_node2) @fn int EN_setlinknodes(EN_Project ph, int index, int node1, int node2) -@fn int EN_getlinkvalue(EN_Project ph, int index, int property, double *value) +@fn int EN_getlinkvalue(EN_Project ph, int index, int property, double *out_value) +@fn int EN_getlinkvalues(EN_Project ph, int property, double *out_values) @fn int EN_setlinkvalue(EN_Project ph, int index, int property, double value) @fn int EN_setpipedata(EN_Project ph, int index, double length, double diam, double rough, double mloss) -@fn int EN_getpumptype(EN_Project ph, int linkIndex, int *pumpType) -@fn int EN_getheadcurveindex(EN_Project ph, int pumpIndex, int *curveIndex) +@fn int EN_getpumptype(EN_Project ph, int linkIndex, int *out_pumpType) +@fn int EN_getheadcurveindex(EN_Project ph, int pumpIndex, int *out_curveIndex) @fn int EN_setheadcurveindex(EN_Project ph, int pumpIndex, int curveIndex) -@fn int EN_getvertexcount(EN_Project ph, int index, int *count) -@fn int EN_getvertex(EN_Project ph, int index, int vertex, double *x, double *y) +@fn int EN_getvertexcount(EN_Project ph, int index, int *out_count) +@fn int EN_getvertex(EN_Project ph, int index, int vertex, double *out_x, double *out_y) @fn int EN_setvertex(EN_Project ph, int index, int vertex, double x, double y) @fn int EN_setvertices(EN_Project ph, int index, double *x, double *y, int count) @} @@ -205,33 +210,34 @@ These are the toolkit's enumerated types whose members are used as function argu /** @addtogroup Patterns @{ -@fn int EN_addpattern(EN_Project ph, char *id) +@fn int EN_addpattern(EN_Project ph, const char *id) @fn int EN_deletepattern(EN_Project ph, int index) -@fn int EN_getpatternindex(EN_Project ph, char *id, int *index) +@fn int EN_getpatternindex(EN_Project ph, char *id, int *out_index) @fn int EN_getpatternid(EN_Project ph, int index, char *id) -@fn int EN_setpatternid(EN_Project ph, int index, char *id) -@fn int EN_getpatternlen(EN_Project ph, int index, int *len) -@fn int EN_getpatternvalue(EN_Project ph, int index, int period, double *value) +@fn int EN_setpatternid(EN_Project ph, int index, const char *id) +@fn int EN_getpatternlen(EN_Project ph, int index, int *out_len) +@fn int EN_getpatternvalue(EN_Project ph, int index, int period, double *out_value) @fn int EN_setpatternvalue(EN_Project ph, int index, int period, double value) -@fn int EN_getaveragepatternvalue(EN_Project ph, int index, double *value) +@fn int EN_getaveragepatternvalue(EN_Project ph, int index, double *out_value) @fn int EN_setpattern(EN_Project ph, int index, double *f, int len) +@fn int EN_loadpatternfile(EN_Project ph, const char *filename, const char *id) @} */ /** @addtogroup Curves @{ -@fn int EN_addcurve(EN_Project ph, char *id) +@fn int EN_addcurve(EN_Project ph, const char *id) @fn int EN_deletecurve(EN_Project ph, int index) -@fn int EN_getcurveindex(EN_Project ph, char *id, int *index) -@fn int EN_getcurveid(EN_Project ph, int index, char *id) -@fn int EN_setcurveid(EN_Project ph, int index, char *id) -@fn int EN_getcurvelen(EN_Project ph, int index, int *len) -@fn int EN_getcurvetype(EN_Project ph, int index, int *type) +@fn int EN_getcurveindex(EN_Project ph, const char *id, int *out_index) +@fn int EN_getcurveid(EN_Project ph, int index, char *out_id) +@fn int EN_setcurveid(EN_Project ph, int index, const char *id) +@fn int EN_getcurvelen(EN_Project ph, int index, int *out_len) +@fn int EN_getcurvetype(EN_Project ph, int index, int *out_type) @fn int EN_setcurvetype(EN_Project ph, int index, int type) -@fn int EN_getcurvevalue(EN_Project ph, int curveIndex, int pointIndex, double *x, double *y) +@fn int EN_getcurvevalue(EN_Project ph, int curveIndex, int pointIndex, double *out_x, double *out_y) @fn int EN_setcurvevalue(EN_Project ph, int curveIndex, int pointIndex, double x, double y) -@fn int EN_getcurve(EN_Project ph, int curveIndex, char* id, int *nPoints, double **xValues, double **yValues) +@fn int EN_getcurve(EN_Project ph, int index, char *out_id, int *out_nPoints, double *out_xValues, double *out_yValues) @fn int EN_setcurve(EN_Project ph, int index, double *xValues, double *yValues, int nPoints) @} */ @@ -239,10 +245,12 @@ These are the toolkit's enumerated types whose members are used as function argu /** @addtogroup Controls @{ -@fn int EN_addcontrol(EN_Project ph, int type, int linkIndex, double setting, int nodeIndex, double level, int *index) +@fn int EN_addcontrol(EN_Project ph, int type, int linkIndex, double setting, int nodeIndex, double level, int *out_index) @fn int EN_deletecontrol(EN_Project ph, int index) -@fn int EN_getcontrol(EN_Project ph, int index, int *type, int *linkIndex, double *setting, int *nodeIndex, double *level) +@fn int EN_getcontrol(EN_Project ph, int index, int *out_type, int *out_linkIndex, double *out_setting, int *out_nodeIndex, double *out_level) @fn int EN_setcontrol(EN_Project ph, int index, int type, int linkIndex, double setting, int nodeIndex, double level) +@fn int EN_getcontrolenabled(EN_Project ph, int index, int *out_enabled) +@fn int EN_setcontrolenabled(EN_Project ph, int index, int enabled) @} */ @@ -265,43 +273,50 @@ These are the toolkit's enumerated types whose members are used as function argu @fn int EN_getelseaction(EN_Project ph, int ruleIndex, int actionIndex, int *linkIndex, int *status, double *setting) @fn int EN_setelseaction(EN_Project ph, int ruleIndex, int actionIndex, int linkIndex, int status, double setting) @fn int EN_setrulepriority(EN_Project ph, int index, double priority) +@fn int EN_getruleenabled(EN_Project ph, int index, int *out_enabled) +@fn int EN_setruleenabled(EN_Project ph, int index, int enabled) @} */ /** @addtogroup Enumerations @{ -\enum EN_SizeLimits -\enum EN_ObjectType -\enum EN_CountType -\enum EN_NodeType -\enum EN_LinkType -\enum EN_PumpType -\enum EN_PumpStateType -\enum EN_CurveType -\enum EN_QualityType -\enum EN_SourceType -\enum EN_ControlType -\enum EN_HeadLossType -\enum EN_NodeProperty -\enum EN_LinkProperty -\enum EN_LinkStatusType -\enum EN_TimeParameter -\enum EN_Option -\enum EN_FlowUnits -\enum EN_PressUnits -\enum EN_DemandModel -\enum EN_MixingModel -\enum EN_StatisticType -\enum EN_InitHydOption -\enum EN_ActionCodeType -\enum EN_AnalysisStatistic -\enum EN_StatusReport -\enum EN_RuleObject -\enum EN_RuleVariable -\enum EN_RuleOperator -\enum EN_RuleStatus +\typedef EN_SizeLimits +\typedef EN_ObjectType +\typedef EN_CountType +\typedef EN_NodeType +\typedef EN_LinkType +\typedef EN_PumpType +\typedef EN_PumpStateType +\typedef EN_CurveType +\typedef EN_QualityType +\typedef EN_SourceType +\typedef EN_ControlType +\typedef EN_HeadLossType +\typedef EN_NodeProperty +\typedef EN_LinkProperty +\typedef EN_LinkStatusType +\typedef EN_TimeParameter +\typedef EN_TimestepEvent +\typedef EN_Option +\typedef EN_FlowUnits +\typedef EN_PressUnits +\typedef EN_DemandModel +\typedef EN_MixingModel +\typedef EN_StatisticType +\typedef EN_InitHydOption +\typedef EN_ActionCodeType +\typedef EN_AnalysisStatistic +\typedef EN_StatusReport +\typedef EN_RuleObject +\typedef EN_RuleVariable +\typedef EN_RuleOperator +\typedef EN_RuleStatus \def EN_MISSING +\def EN_SET_CLOSED +\def EN_SET_OPEN +\def EN_FALSE +\def EN_TRUE @} */ @@ -349,19 +364,25 @@ These are the toolkit's enumerated types whose members are used as function argu | 226 | No head curve or power rating for pump | | 227 | Invalid head curve for pump | | 230 | Nonincreasing x-values for curve | -| 233 | Network has unconnected node | +| 231 | No data provided for a curve | +| 232 | No data provided for a pattern | +| 233 | Network has unconnected nodes | | 240 | Function call refers to nonexistent water quality source | | 241 | Function call refers to nonexistent control | | 250 | Function call contains invalid format (e.g. too long an ID name) | | 251 | Function call contains invalid parameter code | +| 252 | Function call rferes to an invalid ID name | | 253 | Function call refers to nonexistent demand category | | 254 | Function call refers to node with no coordinates | +| 255 | Function call refers to link with no vertices | | 257 | Function call refers to nonexistent rule | | 258 | Function call refers to nonexistent rule clause | | 259 | Function call attempts to delete a node that still has links connected to it | | 260 | Function call attempts to delete node assigned as a Trace Node | | 261 | Function call attempts to delete a node or link contained in a control | | 262 | Function call attempts to modify network structure while a solver is open | +| 263 | Function call refers to node that is not a tank | +| 299 | An invalid section keyword was detected in an input file | | || | 301 | Identical file names used for different types of files | | 302 | Cannot open input file | diff --git a/doc/toolkit-usage.dox b/doc/toolkit-usage.dox index 6859317..ca31542 100644 --- a/doc/toolkit-usage.dox +++ b/doc/toolkit-usage.dox @@ -57,7 +57,7 @@ EN_deleteproject(ph); After an input file has been loaded in this fashion the resulting network can have objects added or deleted, and their properties set using the various Toolkit functions . -The second method for supplying network data to a project is to use the Toolkit's functions to add objects and to set their properties via code. In this case the @ref EN_init function should be called immediately after creating a project, passing in the names of a report and binary output files (both optional) as well as the choices of flow units and head loss formulas to use. After that the various \b EN_add functions, such as @ref EN_addnode, @ref EN_addlink, @ref EN_addpattern, @ref EN_addcontrol, etc., can be called to add new objects to the network. Here is a partial example of constructing a network from code: +The second method for supplying network data to a project is to use the Toolkit's functions to add objects and to set their properties via code. In this case the @ref EN_init function should be called immediately after creating a project, passing in the names of a report and binary output files (both optional) as well as the choices of flow units and head loss formulas to use. After that the various \b EN_add functions, such as @ref EN_addnode , @ref EN_addlink , @ref EN_addpattern , @ref EN_addcontrol , etc., can be called to add new objects to the network. Here is a partial example of constructing a network from code: \code {.c} int index; @@ -76,7 +76,7 @@ See the @ref Example2 for a more complete example. The labels used to name objec The Toolkit contains several functions for retrieving and setting the properties of a network's objects and its analysis options. The names of retrieval functions all begin with \b EN_get (e.g., @ref EN_getnodevalue, @ref EN_getoption, etc.) while the functions used for setting parameter values begin with \b EN_set (e.g., @ref EN_setnodevalue, @ref EN_setoption, etc.). -Most of these functions use an index number to refer to a specific network component (such as a node, link, time pattern or data curve). This number is simply the position of the component in the list of all components of similar type (e.g., node 10 is the tenth node, starting from 1, in the network) and is not the same as the ID label assigned to the component. A series of functions exist to determine a component's index number given its ID label (see @ref EN_getnodeindex, @ref EN_getlinkindex, @ref EN_getpatternindex, and @ref EN_getcurveindex). Likewise, functions exist to retrieve a component's ID label given its index number (see @ref EN_getlinkid, @ref EN_getnodeid, @ref EN_getpatternid, and @ref EN_getcurveid). The @ref EN_getcount function can be used to determine the number of different components in the network. Be aware that a component's index can change as elements are added or deleted from the network. The @ref EN_addnode and @ref EN_addlink functions return the index of the newly added node or link as a convenience for immediately setting their properties. +Most of these functions use an index number to refer to a specific network component (such as a node, link, time pattern or data curve). This number is simply the position of the component in the list of all components of similar type (e.g., node 10 is the tenth node, starting from 1, in the network) and is not the same as the ID label assigned to the component. A series of functions exist to determine a component's index number given its ID label (see @ref EN_getnodeindex , @ref EN_getlinkindex , @ref EN_getpatternindex , and @ref EN_getcurveindex ). Likewise, functions exist to retrieve a component's ID label given its index number (see @ref EN_getlinkid , @ref EN_getnodeid , @ref EN_getpatternid , and @ref EN_getcurveid ). The @ref EN_getcount function can be used to determine the number of different components in the network. Be aware that a component's index can change as elements are added or deleted from the network. The @ref EN_addnode and @ref EN_addlink functions return the index of the newly added node or link as a convenience for immediately setting their properties. The code below is an example of using the property retrieval and setting functions. It changes all links with diameter of 10 inches to 12 inches. @@ -177,16 +177,24 @@ int runConcurrentQuality(EN_Project ph) @section results Retrieving Computed Results The @ref EN_getnodevalue and @ref EN_getlinkvalue functions can also be used to retrieve the results of hydraulic and water quality simulations. The computed parameters (and their Toolkit codes) that can be retrieved are as follows: -|For Nodes: | For Links: | -|----------------------------------- | ----------------------------------------- | -|\b EN_DEMAND (demand) |\b EN_FLOW (flow rate) | -|\b EN_DEMANDDEFICIT (demand deficit) |\b EN_VELOCITY (flow velocity) | -|\b EN_HEAD (hydraulic head) |\b EN_HEADLOSS (head loss) | -|\b EN_PRESSURE (pressure) |\b EN_STATUS (link status) | -|\b EN_TANKLEVEL (tank water level) |\b EN_SETTING (pump speed or valve setting) | -|\b EN_TANKVOLUME (tank water volume) |\b EN_ENERGY (pump energy usage) | -|\b EN_QUALITY (water quality) |\b EN_PUMP_EFFIC (pump efficiency) | -|\b EN_SOURCEMASS (source mass inflow)| | +|For Nodes: | For Links: | +|------------------------------------ | ----------------------------------------- | +|\b EN_DEMAND (total node outflow |\b EN_FLOW (flow rate) | +|\b EN_HEAD (hydraulic head) |\b EN_VELOCITY (flow velocity) | +|\b EN_PRESSURE (pressure) |\b EN_HEADLOSS (head loss) | +|\b EN_TANKLEVEL (tank water level) |\b EN_STATUS (link status) | +|\b EN_TANKVOLUME (tank water volume) |\b EN_SETTING (pump speed or valve setting)| +|\b EN_QUALITY (water quality) |\b EN_ENERGY (pump energy usage) | +|\b EN_SOURCEMASS (source mass inflow)|\b EN_PUMP_EFFIC (pump efficiency) | +| |\b EN_LINK_LEAKAGE (pipe leakage flow rate | + +In addition, the following quantities related to a node's outflow can be retrieved: +-# EN_FULLDEMAND (consumer demand requested) +-# EN_DEMANDFLOW (consumer demand delivered) +-# EN_DEMANDDEFICIT (difference between consumer demand requested and delivered) +-# EN_EMITTERFLOW (outflow through a node's emitter) +-# EN_LEAKAGEFLOW (outflow due to leakage in a node's connecting pipes) +where `EN_DEMAND` is the sum of `EN_DEMANDFLOW`, `EN_EMITTERFLOW`, and `EN_LEAKAGEFLOW`. The following code shows how to retrieve the pressure at each node of a network after each time step of a hydraulic analysis (`writetofile` is a user-defined function that will write a record to a file): \code {.c} diff --git a/include/epanet2_2.h b/include/epanet2_2.h index 287c9c6..185f8ec 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -48,11 +48,11 @@ extern "C" { */ typedef struct Project *EN_Project; -/******************************************************************** +/*=================================================================== Project Functions -********************************************************************/ +===================================================================*/ /** @brief Creates an EPANET project. @@ -209,7 +209,7 @@ typedef struct Project *EN_Project; @brief Retrieves the number of objects of a given type in a project. @param ph an EPANET project handle. @param object a type of object to count (see @ref EN_CountType) - @param[out] count number of objects of the specified type + @param[out] out_count number of objects of the specified type @return an error code */ int DLLEXPORT EN_getcount(EN_Project ph, int object, int *out_count); @@ -233,11 +233,11 @@ typedef struct Project *EN_Project; */ int DLLEXPORT EN_close(EN_Project ph); - /******************************************************************** +/*=================================================================== Hydraulic Analysis Functions - ********************************************************************/ +===================================================================*/ /** @brief Runs a complete hydraulic simulation with results for all time periods @@ -327,7 +327,7 @@ typedef struct Project *EN_Project; /** @brief Computes a hydraulic solution for the current point in time. @param ph an EPANET project handle. - @param[out] currentTime the current simulation time in seconds. + @param[out] out_currentTime the current simulation time in seconds. @return an error or warning code. This function is used in a loop with ::EN_nextH to run an extended period hydraulic @@ -344,7 +344,7 @@ typedef struct Project *EN_Project; @brief Determines the length of time until the next hydraulic event occurs in an extended period simulation. @param ph an EPANET project handle. - @param[out] tStep the time (in seconds) until the next hydraulic event or 0 if at + @param[out] out_tStep the time (in seconds) until the next hydraulic event or 0 if at the end of the full simulation duration. @return an error code. @@ -413,11 +413,11 @@ typedef struct Project *EN_Project; */ int DLLEXPORT EN_closeH(EN_Project ph); - /******************************************************************** +/*=================================================================== Water Quality Analysis Functions - ********************************************************************/ +===================================================================*/ /** @brief Runs a complete water quality simulation with results at uniform @@ -473,7 +473,7 @@ typedef struct Project *EN_Project; @brief Makes hydraulic and water quality results at the start of the current time period available to a project's water quality solver. @param ph an EPANET project handle. - @param[out] currentTime current simulation time in seconds. + @param[out] out_currentTime current simulation time in seconds. @return an error code. Use ::EN_runQ along with ::EN_nextQ in a loop to access water quality results at the @@ -493,7 +493,7 @@ typedef struct Project *EN_Project; /** @brief Advances a water quality simulation over the time until the next hydraulic event. @param ph an EPANET project handle. - @param[out] tStep time (in seconds) until the next hydraulic event or 0 if at the end + @param[out] out_tStep time (in seconds) until the next hydraulic event or 0 if at the end of the full simulation duration. @return an error code. @@ -525,7 +525,7 @@ typedef struct Project *EN_Project; /** @brief Advances a water quality simulation by a single water quality time step. @param ph an EPANET project handle. - @param[out] timeLeft time left (in seconds) to the overall simulation duration. + @param[out] out_timeLeft time left (in seconds) to the overall simulation duration. @return an error code. This function is used in a loop with ::EN_runQ to perform an extended period water @@ -550,11 +550,11 @@ typedef struct Project *EN_Project; */ int DLLEXPORT EN_closeQ(EN_Project ph); - /******************************************************************** +/*=================================================================== Reporting Functions - ********************************************************************/ +===================================================================*/ /** @brief Set a user-supplied callback function for reporting @@ -661,7 +661,7 @@ typedef struct Project *EN_Project; /** @brief Retrieves the toolkit API version number. - @param[out] version the version of the OWA-EPANET toolkit. + @param[out] out_version the version of the OWA-EPANET toolkit. @return an error code. The version number is to be interpreted with implied decimals, i.e., @@ -684,14 +684,14 @@ typedef struct Project *EN_Project; @brief Retrieves a particular simulation statistic. @param ph an EPANET project handle. @param type the type of statistic to retrieve (see @ref EN_AnalysisStatistic). - @param[out] value the value of the statistic. + @param[out] out_value the value of the statistic. @return an error code */ int DLLEXPORT EN_getstatistic(EN_Project ph, int type, double* out_value); /** - @brief Get information about upcoming time step events, and what causes them. + @brief Gets information about when the next hydraulic time step occurs. @param ph an EPANET project handle. @param[out] eventType the type of event that will occur (see @ref EN_TimestepEvent). @param[out] duration the amount of time in the future this event will occur @@ -704,7 +704,7 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param type a type of element (either @ref EN_NODE or @ref EN_LINK). @param index the element's current index (starting from 1). - @param[out] value the order in which the element's results were written to file. + @param[out] out_value the order in which the element's results were written to file. @return an error code. If the element does not appear in the file then its result index is 0. @@ -715,17 +715,17 @@ typedef struct Project *EN_Project; */ int DLLEXPORT EN_getresultindex(EN_Project ph, int type, int index, int *out_value); - /******************************************************************** +/*=================================================================== Analysis Options Functions - ********************************************************************/ +===================================================================*/ /** @brief Retrieves the value of an analysis option. @param ph an EPANET project handle. @param option a type of analysis option (see @ref EN_Option). - @param[out] value the current value of the option. + @param[out] out_value the current value of the option. @return an error code */ int DLLEXPORT EN_getoption(EN_Project ph, int option, double *out_value); @@ -743,7 +743,7 @@ typedef struct Project *EN_Project; /** @brief Retrieves a project's flow units. @param ph an EPANET project handle. - @param[out] units a flow units code (see @ref EN_FlowUnits) + @param[out] out_units a flow units code (see @ref EN_FlowUnits) @return an error code. Flow units in liters or cubic meters implies that SI metric units are used for all @@ -766,7 +766,7 @@ typedef struct Project *EN_Project; @brief Retrieves the value of a time parameter. @param ph an EPANET project handle. @param param a time parameter code (see @ref EN_TimeParameter). - @param[out] value the current value of the time parameter (in seconds). + @param[out] out_value the current value of the time parameter (in seconds). @return an error code. */ int DLLEXPORT EN_gettimeparam(EN_Project ph, int param, long *out_value); @@ -783,10 +783,10 @@ typedef struct Project *EN_Project; /** @brief Gets information about the type of water quality analysis requested. @param ph an EPANET project handle. - @param[out] qualType type of analysis to run (see @ref EN_QualityType). + @param[out] out_qualType type of analysis to run (see @ref EN_QualityType). @param[out] out_chemName name of chemical constituent. @param[out] out_chemUnits concentration units of the constituent. - @param[out] traceNode index of the node being traced (if applicable). + @param[out] out_traceNode index of the node being traced (if applicable). @return an error code. */ int DLLEXPORT EN_getqualinfo(EN_Project ph, int *out_qualType, char *out_chemName, @@ -795,8 +795,8 @@ typedef struct Project *EN_Project; /** @brief Retrieves the type of water quality analysis to be run. @param ph an EPANET project handle. - @param[out] qualType the type of analysis to run (see @ref EN_QualityType). - @param[out] traceNode the index of node being traced, if qualType = EN_TRACE. + @param[out] out_qualType the type of analysis to run (see @ref EN_QualityType). + @param[out] out_traceNode the index of node being traced, if qualType = EN_TRACE. @return an error code. */ int DLLEXPORT EN_getqualtype(EN_Project ph, int *out_qualType, int *out_traceNode); @@ -818,18 +818,18 @@ typedef struct Project *EN_Project; int DLLEXPORT EN_setqualtype(EN_Project ph, int qualType, const char *chemName, const char *chemUnits, const char *traceNode); - /******************************************************************** +/*=================================================================== Node Functions - ********************************************************************/ +===================================================================*/ /** @brief Adds a new node to a project. @param ph an EPANET project handle. @param id the ID name of the node to be added. @param nodeType the type of node being added (see @ref EN_NodeType) - @param[out] index the index of the newly added node + @param[out] out_index the index of the newly added node @return an error code. When a new node is created all of its properties (see @ref EN_NodeProperty) are set to 0. @@ -855,7 +855,7 @@ typedef struct Project *EN_Project; @brief Gets the index of a node given its ID name. @param ph an EPANET project handle. @param id a node ID name. - @param[out] index the node's index (starting from 1). + @param[out] out_index the node's index (starting from 1). @return an error code */ int DLLEXPORT EN_getnodeindex(EN_Project ph, const char *id, int *out_index); @@ -886,7 +886,7 @@ typedef struct Project *EN_Project; @brief Retrieves a node's type given its index. @param ph an EPANET project handle. @param index a node's index (starting from 1). - @param[out] nodeType the node's type (see @ref EN_NodeType). + @param[out] out_nodeType the node's type (see @ref EN_NodeType). @return an error code. */ int DLLEXPORT EN_getnodetype(EN_Project ph, int index, int *out_nodeType); @@ -896,20 +896,7 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param index a node's index. @param property the property to retrieve (see @ref EN_NodeProperty). - @param[out] value the current value of the property. - @return an error code. - - Values are returned in units that depend on the units used for flow rate - (see @ref Units). - */ - - int DLLEXPORT EN_getnodevalues(EN_Project ph, int property, double *out_values); - - /** - @brief Retrieves an array of property values for all nodes. - @param ph an EPANET project handle. - @param property the property to retrieve (see @ref EN_NodeProperty). - @param[out] values an array of values for all nodes. + @param[out] out_value the current value of the property. @return an error code. Values are returned in units that depend on the units used for flow rate @@ -918,6 +905,19 @@ typedef struct Project *EN_Project; int DLLEXPORT EN_getnodevalue(EN_Project ph, int index, int property, double *out_value); + /** + @brief Retrieves an array of property values for all nodes. + @param ph an EPANET project handle. + @param property the property to retrieve (see @ref EN_NodeProperty). + @param[out] out_values an array of values for all nodes. + @return an error code. + + Values are returned in units that depend on the units used for flow rate + (see @ref Units). + */ + + int DLLEXPORT EN_getnodevalues(EN_Project ph, int property, double *out_values); + /** @brief Sets a property value for a node. @param ph an EPANET project handle. @@ -966,8 +966,8 @@ typedef struct Project *EN_Project; @brief Gets the (x,y) coordinates of a node. @param ph an EPANET project handle. @param index a node index (starting from 1). - @param[out] x the node's X-coordinate value. - @param[out] y the node's Y-coordinate value. + @param[out] out_x the node's X-coordinate value. + @param[out] out_y the node's Y-coordinate value. @return an error code. */ int DLLEXPORT EN_getcoord(EN_Project ph, int index, double *out_x, double *out_y); @@ -982,19 +982,19 @@ typedef struct Project *EN_Project; */ int DLLEXPORT EN_setcoord(EN_Project ph, int index, double x, double y); - /******************************************************************** +/*=================================================================== Nodal Demand Functions - ********************************************************************/ +===================================================================*/ /** @brief Retrieves the type of demand model in use and its parameters. @param ph an EPANET project handle. - @param[out] type Type of demand model (see @ref EN_DemandModel). - @param[out] pmin Pressure below which there is no demand. - @param[out] preq Pressure required to deliver full demand. - @param[out] pexp Pressure exponent in demand function. + @param[out] out_type Type of demand model (see @ref EN_DemandModel). + @param[out] out_pmin Pressure below which there is no demand. + @param[out] out_preq Pressure required to deliver full demand. + @param[out] out_pexp Pressure exponent in demand function. @return an error code. Parameters pmin, preq, and \b pexp are only used when the demand model is \b EN_PDA. @@ -1054,7 +1054,7 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param nodeIndex the index of a node (starting from 1) @param demandName the name of a demand category for the node - @param[out] demandIndex the index of the demand being sought + @param[out] out_demandIndex the index of the demand being sought @return an error code */ int DLLEXPORT EN_getdemandindex(EN_Project ph, int nodeIndex, const char *demandName, @@ -1064,7 +1064,7 @@ typedef struct Project *EN_Project; @brief Retrieves the number of demand categories for a junction node. @param ph an EPANET project handle. @param nodeIndex the index of a node (starting from 1). - @param[out] numDemands the number of demand categories assigned to the node. + @param[out] out_numDemands the number of demand categories assigned to the node. @return an error code. */ int DLLEXPORT EN_getnumdemands(EN_Project ph, int nodeIndex, int *out_numDemands); @@ -1074,7 +1074,7 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param nodeIndex a node's index (starting from 1). @param demandIndex the index of a demand category for the node (starting from 1). - @param[out] baseDemand the category's base demand. + @param[out] out_baseDemand the category's base demand. @return an error code. */ int DLLEXPORT EN_getbasedemand(EN_Project ph, int nodeIndex, int demandIndex, @@ -1096,7 +1096,7 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param nodeIndex the node's index (starting from 1). @param demandIndex the index of a demand category for the node (starting from 1). - @param[out] patIndex the index of the category's time pattern. + @param[out] out_patIndex the index of the category's time pattern. @return an error code. A returned pattern index of 0 indicates that no time pattern has been assigned to the @@ -1143,11 +1143,11 @@ typedef struct Project *EN_Project; int DLLEXPORT EN_setdemandname(EN_Project ph, int nodeIndex, int demandIdx, const char *demandName); - /******************************************************************** +/*=================================================================== Link Functions - ********************************************************************/ +===================================================================*/ /** @brief Adds a new link to a project. @@ -1156,7 +1156,7 @@ typedef struct Project *EN_Project; @param linkType The type of link being added (see @ref EN_LinkType) @param fromNode The ID name of the link's starting node. @param toNode The ID name of the link's ending node. - @param[out] index the index of the newly added link. + @param[out] out_index the index of the newly added link. @return an error code. A new pipe is assigned a diameter of 10 inches (254 mm) and a length of 330 @@ -1194,7 +1194,7 @@ typedef struct Project *EN_Project; @brief Gets the index of a link given its ID name. @param ph an EPANET project handle. @param id a link's ID name. - @param[out] index the link's index (starting from 1). + @param[out] out_index the link's index (starting from 1). @return an error code. */ int DLLEXPORT EN_getlinkindex(EN_Project ph, const char *id, int *out_index); @@ -1225,7 +1225,7 @@ typedef struct Project *EN_Project; @brief Retrieves a link's type. @param ph an EPANET project handle. @param index a link's index (starting from 1). - @param[out] linkType the link's type (see @ref EN_LinkType). + @param[out] out_linkType the link's type (see @ref EN_LinkType). @return an error code. */ int DLLEXPORT EN_getlinktype(EN_Project ph, int index, int *out_linkType); @@ -1249,8 +1249,8 @@ typedef struct Project *EN_Project; @brief Gets the indexes of a link's start- and end-nodes. @param ph an EPANET project handle. @param index a link's index (starting from 1). - @param[out] node1 the index of the link's start node (starting from 1). - @param[out] node2 the index of the link's end node (starting from 1). + @param[out] out_node1 the index of the link's start node (starting from 1). + @param[out] out_node2 the index of the link's end node (starting from 1). @return an error code. */ int DLLEXPORT EN_getlinknodes(EN_Project ph, int index, int *out_node1, int *out_node2); @@ -1270,7 +1270,7 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param index a link's index (starting from 1). @param property the property to retrieve (see @ref EN_LinkProperty). - @param[out] value the current value of the property. + @param[out] out_value the current value of the property. @return an error code. Values are returned in units that depend on the units used for flow rate (see @ref Units). @@ -1281,7 +1281,7 @@ typedef struct Project *EN_Project; @brief Retrieves an array of property values for all links. @param ph an EPANET project handle. @param property the property to retrieve (see @ref EN_LinkProperty). - @param[out] values an array of values for all links. + @param[out] out_values an array of values for all links. @return an error code. Values are returned in units that depend on the units used for flow rate (see @ref Units). @@ -1319,7 +1319,7 @@ typedef struct Project *EN_Project; @brief Retrieves the number of internal vertex points assigned to a link. @param ph an EPANET project handle. @param index a link's index (starting from 1). - @param[out] count the number of vertex points that describe the link's shape. + @param[out] out_count the number of vertex points that describe the link's shape. @return an error code. */ int DLLEXPORT EN_getvertexcount(EN_Project ph, int index, int *out_count); @@ -1329,8 +1329,8 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param index a link's index (starting from 1). @param vertex a vertex point index (starting from 1). - @param[out] x the vertex's X-coordinate value. - @param[out] y the vertex's Y-coordinate value. + @param[out] out_x the vertex's X-coordinate value. + @param[out] out_y the vertex's Y-coordinate value. @return an error code. */ int DLLEXPORT EN_getvertex(EN_Project ph, int index, int vertex, double *out_x, double *out_y); @@ -1359,17 +1359,17 @@ typedef struct Project *EN_Project; */ int DLLEXPORT EN_setvertices(EN_Project ph, int index, double *x, double *y, int count); - /******************************************************************** +/*=================================================================== Pump Functions - ********************************************************************/ +===================================================================*/ /** @brief Retrieves the type of head curve used by a pump. @param ph an EPANET project handle. @param linkIndex the index of a pump link (starting from 1). - @param[out] pumpType the type of head curve used by the pump (see @ref EN_PumpType). + @param[out] out_pumpType the type of head curve used by the pump (see @ref EN_PumpType). @return an error code. */ int DLLEXPORT EN_getpumptype(EN_Project ph, int linkIndex, int *out_pumpType); @@ -1378,7 +1378,7 @@ typedef struct Project *EN_Project; @brief Retrieves the curve assigned to a pump's head curve. @param ph an EPANET project handle. @param linkIndex the index of a pump link (starting from 1). - @param[out] curveIndex the index of the curve assigned to the pump's head curve. + @param[out] out_curveIndex the index of the curve assigned to the pump's head curve. @return an error code. */ int DLLEXPORT EN_getheadcurveindex(EN_Project ph, int linkIndex, int *out_curveIndex); @@ -1392,11 +1392,11 @@ typedef struct Project *EN_Project; */ int DLLEXPORT EN_setheadcurveindex(EN_Project ph, int linkIndex, int curveIndex); - /******************************************************************** +/*=================================================================== Time Pattern Functions - ********************************************************************/ +===================================================================*/ /** @brief Adds a new time pattern to a project. @@ -1420,7 +1420,7 @@ typedef struct Project *EN_Project; @brief Retrieves the index of a time pattern given its ID name. @param ph an EPANET project handle. @param id the ID name of a time pattern. - @param[out] index the time pattern's index (starting from 1). + @param[out] out_index the time pattern's index (starting from 1). @return an error code. */ int DLLEXPORT EN_getpatternindex(EN_Project ph, const char *id, int *out_index); @@ -1451,7 +1451,7 @@ typedef struct Project *EN_Project; @brief Retrieves the number of time periods in a time pattern. @param ph an EPANET project handle. @param index a time pattern index (starting from 1). - @param[out] len the number of time periods in the pattern. + @param[out] out_len the number of time periods in the pattern. @return an error code. */ int DLLEXPORT EN_getpatternlen(EN_Project ph, int index, int *out_len); @@ -1461,7 +1461,7 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param index a time pattern index (starting from 1). @param period a time period in the pattern (starting from 1). - @param[out] value the pattern factor for the given time period. + @param[out] out_value the pattern factor for the given time period. @return an error code. */ int DLLEXPORT EN_getpatternvalue(EN_Project ph, int index, int period, double *out_value); @@ -1480,7 +1480,7 @@ typedef struct Project *EN_Project; @brief Retrieves the average of all pattern factors in a time pattern. @param ph an EPANET project handle. @param index a time pattern index (starting from 1). - @param[out] value The average of all of the time pattern's factors. + @param[out] out_value The average of all of the time pattern's factors. @return an error code. */ int DLLEXPORT EN_getaveragepatternvalue(EN_Project ph, int index, double *out_value); @@ -1507,13 +1507,13 @@ typedef struct Project *EN_Project; @param id the ID name of the new pattern to load. @return an error code. */ - int DLLEXPORT EN_loadpatternfile(EN_Project p, const char *filename, const char *id); + int DLLEXPORT EN_loadpatternfile(EN_Project ph, const char *filename, const char *id); - /******************************************************************** +/*=================================================================== Data Curve Functions - ********************************************************************/ +===================================================================*/ /** @brief Adds a new data curve to a project. @@ -1537,7 +1537,7 @@ typedef struct Project *EN_Project; @brief Retrieves the index of a curve given its ID name. @param ph an EPANET project handle. @param id the ID name of a curve. - @param[out] index The curve's index (starting from 1). + @param[out] out_index The curve's index (starting from 1). @return an error code. */ int DLLEXPORT EN_getcurveindex(EN_Project ph, const char *id, int *out_index); @@ -1568,7 +1568,7 @@ typedef struct Project *EN_Project; @brief Retrieves the number of points in a curve. @param ph an EPANET project handle. @param index a curve's index (starting from 1). - @param[out] len The number of data points assigned to the curve. + @param[out] out_len The number of data points assigned to the curve. @return an error code. */ int DLLEXPORT EN_getcurvelen(EN_Project ph, int index, int *out_len); @@ -1577,7 +1577,7 @@ typedef struct Project *EN_Project; @brief Retrieves a curve's type. @param ph an EPANET project handle. @param index a curve's index (starting from 1). - @param[out] type the curve's type (see @ref EN_CurveType). + @param[out] out_type the curve's type (see @ref EN_CurveType). @return an error code. */ int DLLEXPORT EN_getcurvetype(EN_Project ph, int index, int *out_type); @@ -1596,8 +1596,8 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param curveIndex a curve's index (starting from 1). @param pointIndex the index of a point on the curve (starting from 1). - @param[out] x the point's x-value. - @param[out] y the point's y-value. + @param[out] out_x the point's x-value. + @param[out] out_y the point's y-value. @return an error code. */ int DLLEXPORT EN_getcurvevalue(EN_Project ph, int curveIndex, int pointIndex, @@ -1620,13 +1620,13 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param index a curve's index (starting from 1). @param[out] out_id the curve's ID name. - @param[out] nPoints the number of data points on the curve. - @param[out] xValues the curve's x-values. - @param[out] yValues the curve's y-values. + @param[out] out_nPoints the number of data points on the curve. + @param[out] out_xValues the curve's x-values. + @param[out] out_yValues the curve's y-values. @return an error code. - The calling program is responsible for making `xValues` and `yValues` large enough - to hold `nPoints` number of data points and for sizing `id` to hold at least + The calling program is responsible for making `out_xValues` and `out_yValues` large enough + to hold `out_nPoints` number of data points and for sizing `out_id` to hold at least @ref EN_SizeLimits "EN_MAXID+1" characters. */ int DLLEXPORT EN_getcurve(EN_Project ph, int index, char *out_id, int *out_nPoints, @@ -1649,11 +1649,11 @@ typedef struct Project *EN_Project; int DLLEXPORT EN_setcurve(EN_Project ph, int index, double *xValues, double *yValues, int nPoints); - /******************************************************************** +/*=================================================================== Simple Controls Functions - ********************************************************************/ +===================================================================*/ /** @brief Adds a new simple control to a project. @@ -1665,7 +1665,7 @@ typedef struct Project *EN_Project; (0 for \b EN_TIMER and \b EN_TIMEOFDAY controls). @param level action level (tank level, junction pressure, or time in seconds) that triggers the control. - @param[out] index index of the new control. + @param[out] out_index index of the new control. @return an error code. */ int DLLEXPORT EN_addcontrol(EN_Project ph, int type, int linkIndex, @@ -1683,12 +1683,12 @@ typedef struct Project *EN_Project; @brief Retrieves the properties of a simple control. @param ph an EPANET project handle. @param index the control's index (starting from 1). - @param[out] type the type of control (see @ref EN_ControlType). - @param[out] linkIndex the index of the link being controlled. - @param[out] setting the control setting applied to the link. - @param[out] nodeIndex the index of the node used to trigger the control + @param[out] out_type the type of control (see @ref EN_ControlType). + @param[out] out_linkIndex the index of the link being controlled. + @param[out] out_setting the control setting applied to the link. + @param[out] out_nodeIndex the index of the node used to trigger the control (0 for \b EN_TIMER and \b EN_TIMEOFDAY controls). - @param[out] level the action level (tank level, junction pressure, or time in seconds) + @param[out] out_level the action level (tank level, junction pressure, or time in seconds) that triggers the control. @return an error code. */ @@ -1729,11 +1729,11 @@ typedef struct Project *EN_Project; */ int DLLEXPORT EN_setcontrolenabled(EN_Project ph, int index, int enabled); - /******************************************************************** +/*=================================================================== Rule-Based Controls Functions - ********************************************************************/ +===================================================================*/ /** @brief Adds a new rule-based control to a project. @@ -1758,10 +1758,10 @@ typedef struct Project *EN_Project; @brief Retrieves summary information about a rule-based control. @param ph an EPANET project handle. @param index the rule's index (starting from 1). - @param[out] nPremises number of premises in the rule's IF section. - @param[out] nThenActions number of actions in the rule's THEN section. - @param[out] nElseActions number of actions in the rule's ELSE section. - @param[out] priority the rule's priority value. + @param[out] out_nPremises number of premises in the rule's IF section. + @param[out] out_nThenActions number of actions in the rule's THEN section. + @param[out] out_nElseActions number of actions in the rule's ELSE section. + @param[out] out_priority the rule's priority value. @return an error code. */ int DLLEXPORT EN_getrule(EN_Project ph, int index, int *out_nPremises, @@ -1784,14 +1784,14 @@ typedef struct Project *EN_Project; @param ruleIndex the rule's index (starting from 1). @param premiseIndex the position of the premise in the rule's list of premises (starting from 1). - @param[out] logop the premise's logical operator ( \b IF = 1, \b AND = 2, \b OR = 3 ). - @param[out] object the type of object the premise refers to (see @ref EN_RuleObject). - @param[out] objIndex the index of the object (e.g. the index of a tank). - @param[out] variable the object's variable being compared (see @ref EN_RuleVariable). - @param[out] relop the premise's comparison operator (see @ref EN_RuleOperator). - @param[out] status the status that the object's status is compared to + @param[out] out_logop the premise's logical operator ( \b IF = 1, \b AND = 2, \b OR = 3 ). + @param[out] out_object the type of object the premise refers to (see @ref EN_RuleObject). + @param[out] out_objIndex the index of the object (e.g. the index of a tank). + @param[out] out_variable the object's variable being compared (see @ref EN_RuleVariable). + @param[out] out_relop the premise's comparison operator (see @ref EN_RuleOperator). + @param[out] out_status the status that the object's status is compared to (see @ref EN_RuleStatus). - @param[out] value the value that the object's variable is compared to. + @param[out] out_value the value that the object's variable is compared to. @return an error code. */ int DLLEXPORT EN_getpremise(EN_Project ph, int ruleIndex, int premiseIndex, @@ -1856,9 +1856,9 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param ruleIndex the rule's index (starting from 1). @param actionIndex the index of the THEN action to retrieve (starting from 1). - @param[out] linkIndex the index of the link in the action (starting from 1). - @param[out] status the status assigned to the link (see @ref EN_RuleStatus) - @param[out] setting the value assigned to the link's setting. + @param[out] out_linkIndex the index of the link in the action (starting from 1). + @param[out] out_status the status assigned to the link (see @ref EN_RuleStatus) + @param[out] out_setting the value assigned to the link's setting. @return an error code. */ int DLLEXPORT EN_getthenaction(EN_Project ph, int ruleIndex, int actionIndex, @@ -1882,9 +1882,9 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param ruleIndex the rule's index (starting from 1). @param actionIndex the index of the ELSE action to retrieve (starting from 1). - @param[out] linkIndex the index of the link in the action. - @param[out] status the status assigned to the link (see @ref EN_RuleStatus). - @param[out] setting the value assigned to the link's setting. + @param[out] out_linkIndex the index of the link in the action. + @param[out] out_status the status assigned to the link (see @ref EN_RuleStatus). + @param[out] out_setting the value assigned to the link's setting. @return an error code. */ int DLLEXPORT EN_getelseaction(EN_Project ph, int ruleIndex, int actionIndex, diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index fdfd2cd..68a619c 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -9,7 +9,7 @@ Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE - Last Updated: 02/14/2025 + Last Updated: 03/22/2025 ****************************************************************************** */ @@ -17,13 +17,11 @@ #ifndef EPANET2_ENUMS_H #define EPANET2_ENUMS_H - // --- Define the EPANET toolkit constants - -/// Size Limts -/** -Limits on the size of character arrays used to store ID names -and text messages. +/// Character array size limits +/*! \enum EN_SizeLimits + * Limits on the size of character arrays used to store ID names + * and text messages. */ typedef enum { EN_MAXID = 31, //!< Max. # characters in ID name @@ -31,11 +29,11 @@ typedef enum { } EN_SizeLimits; /// Node properties -/** -These node properties are used with @ref EN_getnodevalue and @ref EN_setnodevalue. -Those marked as read only are computed values that can only be retrieved. +/*! \enum EN_NodeProperty + * These node properties are used with @ref EN_getnodevalue and @ref EN_setnodevalue. + * Those marked as read only are computed values that can only be retrieved. */ -typedef enum { +typedef enum { EN_ELEVATION = 0, //!< Elevation EN_BASEDEMAND = 1, //!< Primary demand baseline value EN_PATTERN = 2, //!< Primary demand time pattern index @@ -133,16 +131,16 @@ typedef enum { EN_NEXTEVENTTANK = 15 //!< Index of tank with shortest time to become empty or full (read only) } EN_TimeParameter; - +/// Time step events /** -These are the types of events that can cause a timestep to end. +These are the types of events that can cause a new time step to be taken. **/ typedef enum { - EN_STEP_REPORT = 0, - EN_STEP_HYD = 1, - EN_STEP_WQ = 2, - EN_STEP_TANKEVENT = 3, - EN_STEP_CONTROLEVENT = 4 + EN_STEP_REPORT = 0, //!< A reporting time step has ended + EN_STEP_HYD = 1, //!< A hydraulic time step has ended + EN_STEP_WQ = 2, //!< A water quality time step has ended + EN_STEP_TANKEVENT = 3, //!< A tank has become empty or full + EN_STEP_CONTROLEVENT = 4 //!< A link control needs to be activated } EN_TimestepEvent; /// Analysis convergence statistics @@ -437,7 +435,7 @@ typedef enum { EN_EFFIC_CURVE = 2, //!< Pump efficiency v. flow curve EN_HLOSS_CURVE = 3, //!< Valve head loss v. flow curve EN_GENERIC_CURVE = 4, //!< Generic curve - EN_VALVE_CURVE = 5 //!< Valve loss coeff. v. frac. open + EN_VALVE_CURVE = 5 //!< % of fully open flow v. % open } EN_CurveType; /// Deletion action codes @@ -512,7 +510,7 @@ typedef enum { #define EN_SET_CLOSED -1.E10 //!< Link set closed indicator #define EN_SET_OPEN 1.E10 //!< Link set open indicator -#define EN_FALSE 0 // boolean false -#define EN_TRUE 1 // boolean true +#define EN_FALSE 0 //!< boolean false +#define EN_TRUE 1 //!< boolean true #endif //EPANET2_ENUMS_H diff --git a/src/epanet.c b/src/epanet.c index c763d9b..9d9e4ea 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -1691,7 +1691,19 @@ int DLLEXPORT EN_settimeparam(EN_Project p, int param, long value) /// get the time to next event, and give a reason for the time step truncation -int DLLEXPORT EN_timetonextevent(EN_Project p, int *eventType, long *duration, int *elementIndex) +int DLLEXPORT EN_timetonextevent(EN_Project p, int *eventType, + long *duration, int *elementIndex) +/*---------------------------------------------------------------- +** Input: none +** Output: eventType = event causing a new time step +** to occur (see EN_TimestepEvent) +** duration = seconds until next time step occurs +** elementIndex = index of tank node or simple control +** that triggers a new time step +** Returns: error code +** Purpose: Get information about when the next hydraulic time step occurs +**---------------------------------------------------------------- +*/ { Times *time = &p->times; long hydStep, tankStep, controlStep; From d4c41a2d526fc8cbcbd070a336d281f1844d2fcd Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Sun, 30 Mar 2025 10:06:29 -0400 Subject: [PATCH 196/233] Updates to toolkit documentation --- doc/Doxyfile-chm | 8 +-- doc/toolkit-topics.dox | 3 +- include/epanet2.h | 1 + include/epanet2_2.h | 123 +++++++++++++++++++++++----------------- include/epanet2_enums.h | 31 +++++----- src/epanet.c | 19 ++++++- 6 files changed, 112 insertions(+), 73 deletions(-) diff --git a/doc/Doxyfile-chm b/doc/Doxyfile-chm index de5e37a..e8f9afc 100644 --- a/doc/Doxyfile-chm +++ b/doc/Doxyfile-chm @@ -1528,7 +1528,7 @@ HTML_COLORSTYLE_GAMMA = 80 # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_DYNAMIC_MENUS = YES +HTML_DYNAMIC_MENUS = NO # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the @@ -1554,7 +1554,7 @@ HTML_CODE_FOLDING = YES # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_COPY_CLIPBOARD = YES +HTML_COPY_CLIPBOARD = NO # Doxygen stores a couple of settings persistently in the browser (via e.g. # cookies). By default these settings apply to all HTML pages generated by @@ -1815,7 +1815,7 @@ DISABLE_INDEX = YES # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. -GENERATE_TREEVIEW = YES +GENERATE_TREEVIEW = NO # When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the # FULL_SIDEBAR option determines if the side bar is limited to only the treeview @@ -1985,7 +1985,7 @@ MATHJAX_CODEFILE = # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. -SEARCHENGINE = YES +SEARCHENGINE = NO # When the SERVER_BASED_SEARCH tag is enabled the search engine will be # implemented using a web server instead of a web client using JavaScript. There diff --git a/doc/toolkit-topics.dox b/doc/toolkit-topics.dox index ff2d646..9b5adf3 100644 --- a/doc/toolkit-topics.dox +++ b/doc/toolkit-topics.dox @@ -127,7 +127,8 @@ These are the toolkit's enumerated types whose members are used as function argu @fn int EN_getstatistic(EN_Project ph, int type, double* value) @fn int EN_getresultindex(EN_Project ph, int type, int index, int *value) @fn int EN_timetonextevent(EN_Project ph, int *eventType, long *duration, int *elementIndex); - +@fn int EN_setreportcallback(EN_Project ph, void (*callback)(void *userData, void *EN_projectHandle, const char*)) +@fn int EN_setreportcallbackuserdata(EN_Project ph, void *userData) @} */ diff --git a/include/epanet2.h b/include/epanet2.h index 7022c34..1496e9a 100644 --- a/include/epanet2.h +++ b/include/epanet2.h @@ -169,6 +169,7 @@ extern "C" { int DLLEXPORT ENtimetonextevent(int *eventType, long *duration, int *elementIndex); int DLLEXPORT ENsetreportcallback(void (*callback)(void *userData, void *EN_projectHandle, const char*)); + int DLLEXPORT ENsetreportcallbackuserdata(void *userData); diff --git a/include/epanet2_2.h b/include/epanet2_2.h index 185f8ec..2dcfc28 100644 --- a/include/epanet2_2.h +++ b/include/epanet2_2.h @@ -218,14 +218,14 @@ typedef struct Project *EN_Project; @brief Saves a project's data to an EPANET-formatted text file. @param ph an EPANET project handle. @param filename the name of the file to create. - @return Error code + @return an error code */ int DLLEXPORT EN_saveinpfile(EN_Project ph, const char *filename); /** @brief Closes a project and frees all of its memory. @param ph an EPANET project handle. - @return Error code + @return an error code This function clears all existing data from a project but does not delete the project, so it can be re-used with another set of network data. Use ::EN_deleteproject @@ -331,7 +331,7 @@ typedef struct Project *EN_Project; @return an error or warning code. This function is used in a loop with ::EN_nextH to run an extended period hydraulic - simulation. This process automatically updates the simulation clock time so \b currentTime + simulation. This process automatically updates the simulation clock time so `currentTime` should be treated as a read-only variable. ::EN_initH must have been called prior to running the ::EN_runH - ::EN_nextH loop. @@ -351,7 +351,7 @@ typedef struct Project *EN_Project; This function is used in a loop with ::EN_runH to run an extended period hydraulic simulation. - The value of \b tstep should be treated as a read-only variable. It is automatically + The value of `out_tstep` should be treated as a read-only variable. It is automatically computed as the smaller of: - the time interval until the next hydraulic time step begins - the time interval until the next reporting time step begins @@ -400,7 +400,7 @@ typedef struct Project *EN_Project; Before calling this function hydraulic results must have been generated and saved by having called ::EN_solveH or the ::EN_initH - ::EN_runH - ::EN_nextH sequence with the initflag - argument of ::EN_initH set to \b EN_SAVE or \b EN_SAVE_AND_INIT. + argument of ::EN_initH set to `EN_SAVE` or `EN_SAVE_AND_INIT`. */ int DLLEXPORT EN_savehydfile(EN_Project ph, const char *filename); @@ -456,8 +456,8 @@ typedef struct Project *EN_Project; /** @brief Initializes a network prior to running a water quality analysis. @param ph an EPANET project handle. - @param saveFlag set to \b EN_SAVE (1) if results are to be saved to the project's - binary output file, or to \b EN_NOSAVE (0) if not. + @param saveFlag set to `EN_SAVE` (1) if results are to be saved to the project's + binary output file, or to `EN_NOSAVE` (0) if not. @return an error code. Call ::EN_initQ prior to running a water quality analysis using ::EN_runQ in @@ -484,9 +484,9 @@ typedef struct Project *EN_Project; ::EN_initQ must have been called prior to running an ::EN_runQ - ::EN_nextQ (or ::EN_stepQ) loop. - The current time of the simulation is determined from information saved with the - hydraulic analysis that preceded the water quality analysis. Treat it as a read-only - variable. + The current time of the simulation, `out_currentTime`, is determined from information + saved with the hydraulic analysis that preceded the water quality analysis. Treat it + as a read-only variable. */ int DLLEXPORT EN_runQ(EN_Project ph, long *out_currentTime); @@ -502,7 +502,7 @@ typedef struct Project *EN_Project; time step determined by when the next hydraulic event occurs. Use ::EN_stepQ instead if you wish to generate results over each water quality time step. - The value of \b tStep is determined from information produced by the hydraulic analysis + The value of `tStep` is determined from information produced by the hydraulic analysis that preceded the water quality analysis. Treat it as a read-only variable. Example: @@ -533,8 +533,8 @@ typedef struct Project *EN_Project; quality time step of the simulation, rather than over each hydraulic event period as with ::EN_nextQ. - Use the argument \b timeLeft to determine when no more calls to ::EN_runQ are needed - because the end of the simulation period has been reached (i.e., when \b timeLeft = 0). + Use the argument `timeLeft` to determine when no more calls to ::EN_runQ are needed + because the end of the simulation period has been reached (i.e., when `timeLeft` = 0). */ int DLLEXPORT EN_stepQ(EN_Project ph, long *out_timeLeft); @@ -557,15 +557,35 @@ typedef struct Project *EN_Project; ===================================================================*/ /** - @brief Set a user-supplied callback function for reporting + @brief Sets a user-supplied callback function for reporting @param ph an EPANET project handle. - @param callback a function pointer with declared signature, which gets called by EPANET for reporting. + @param callback a function pointer used for reporting. @return an error code. - @details The report callback function must have the signature specified - void(void* userData, EN_Project, char*) - - use the userData parameter to pass any client context necessary (a context pointer or wrapper object perhaps). - Leave un-set or set the report callback to NULL to revert to EPANET's default behavior. - **/ - int DLLEXPORT EN_setreportcallback(EN_Project ph, void (*callback)(void *userData, void *EN_projectHandle, const char*)); + + The callback function replaces the project's report file as + the destination for all output written by ::EN_writeline. It must have + the following signature: + + `void(void *userData, void *EN_projectHandle p, const char* s)` + + The `userData` parameter is a pointer to a client-side data object. + It can be changed using the ::EN_setreportcallbackuserdata function. + The parameter `s` is a placeholder for the EPANET-generated string + that was passed into ::EN_writeline. Setting the callback function to + NULL reverts to having ::EN_writeline use the project's report file. + */ + int DLLEXPORT EN_setreportcallback(EN_Project ph, void(*callback)(void *userData, void *EN_projectHandle, const char*)); + + /** + @brief Sets a pointer to a client-side data object + @param ph an EPANET project handle. + @param userData a pointer to a client-side data object. + @return an error code. + + The data pointer supplied by this function is passed into the callback + function declared in ::EN_setreportcallback that replaces a project's + report file as the destination for output written with ::EN_writeline. + */ int DLLEXPORT EN_setreportcallbackuserdata(EN_Project ph, void *userData); /** @@ -573,6 +593,9 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param line a text string to write. @return an error code. + + ::EN_setreportcallback can be used to assign an alternative destination + to write `line` to in place of the project's report file. */ int DLLEXPORT EN_writeline(EN_Project ph, const char *line); @@ -647,15 +670,15 @@ typedef struct Project *EN_Project; Status reporting writes changes in the hydraulics status of network elements to a project's report file as a hydraulic simulation unfolds. There are three levels - of reporting: \b EN_NO_REPORT (no status reporting), \b EN_NORMAL_REPORT (normal - reporting) \b EN_FULL_REPORT (full status reporting). + of reporting: `EN_NO_REPORT` (no status reporting), `EN_NORMAL_REPORT` (normal + reporting) `EN_FULL_REPORT` (full status reporting). The full status report contains information at each trial of the solution to the system hydraulic equations at each time step of a simulation. It is useful mainly for debugging purposes. If many hydraulic analyses will be run in the application it is recommended that - status reporting be turned off (level = EN_NO_REPORT). + status reporting be turned off (`level` = `EN_NO_REPORT`). */ int DLLEXPORT EN_setstatusreport(EN_Project ph, int level); @@ -796,7 +819,7 @@ typedef struct Project *EN_Project; @brief Retrieves the type of water quality analysis to be run. @param ph an EPANET project handle. @param[out] out_qualType the type of analysis to run (see @ref EN_QualityType). - @param[out] out_traceNode the index of node being traced, if qualType = EN_TRACE. + @param[out] out_traceNode the index of node being traced if `out_qualType` = `EN_TRACE`. @return an error code. */ int DLLEXPORT EN_getqualtype(EN_Project ph, int *out_qualType, int *out_traceNode); @@ -807,7 +830,7 @@ typedef struct Project *EN_Project; @param qualType the type of analysis to run (see @ref EN_QualityType). @param chemName the name of the quality constituent. @param chemUnits the concentration units of the constituent. - @param traceNode the ID name of the node being traced if qualType = EN_TRACE. + @param traceNode the ID name of the node being traced if `qualType` = `EN_TRACE`. @return an error code. Chemical name and units can be an empty string if the analysis is not for a chemical. @@ -843,9 +866,9 @@ typedef struct Project *EN_Project; @param actionCode the action taken if any control contains the node and its links. @return an error code. - If \b actionCode is \b EN_UNCONDITIONAL then the node, its incident links and all + If `actionCode` is `EN_UNCONDITIONAL` then the node, its incident links and all simple and rule-based controls that contain them are deleted. If set to - \b EN_CONDITIONAL then the node is not deleted if it or its incident links appear + `EN_CONDITIONAL` then the node is not deleted if it or its incident links appear in any controls and error code 261 is returned. */ @@ -997,7 +1020,7 @@ typedef struct Project *EN_Project; @param[out] out_pexp Pressure exponent in demand function. @return an error code. - Parameters pmin, preq, and \b pexp are only used when the demand model is \b EN_PDA. + Parameters `pmin`, `preq`, and `pexp` are only used when the demand model is `EN_PDA`. */ int DLLEXPORT EN_getdemandmodel(EN_Project ph, int *out_type, double *out_pmin, double *out_preq, double *out_pexp); @@ -1011,15 +1034,13 @@ typedef struct Project *EN_Project; @param pexp Pressure exponent in demand function. @return an error code. - Set \b type to \b EN_DDA for a traditional demand driven analysis (in which case the - remaining three parameter values are ignored) or to \b EN_PDA for a pressure driven - analysis. In the latter case a node's demand is computed as: - > `Dfull * [ (P - pmin) / (preq - pmin) ] ^ pexp` + Set `type` to `EN_DDA` for a traditional demand driven analysis (in which case the + remaining three parameter values are ignored) or to `EN_PDA` for a pressure driven + analysis. In the latter case a node's demand is computed as:\n + `Dfull * [ (P - pmin) / (preq - pmin) ] ^ pexp`\n where `Dfull` is the full demand and `P` is the current pressure. - Setting \b preq equal to \b pmin will result in a solution with the smallest amount of - demand reductions needed to insure that no node delivers positive demand at a pressure - below \b pmin. + A valid value for `preq` must be at least 0.1 pressure units larger than `pmin`. */ int DLLEXPORT EN_setdemandmodel(EN_Project ph, int type, double pmin, double preq, double pexp); @@ -1126,7 +1147,7 @@ typedef struct Project *EN_Project; @param[out] out_demandName The name of the selected category. @return an error code. - \b demandName must be sized to contain at least @ref EN_SizeLimits "EN_MAXID+1" characters. + `demandName` must be sized to contain at least @ref EN_SizeLimits "EN_MAXID+1" characters. */ int DLLEXPORT EN_getdemandname(EN_Project ph, int nodeIndex, int demandIndex, char *out_demandName); @@ -1136,7 +1157,7 @@ typedef struct Project *EN_Project; @param nodeIndex a node's index (starting from 1). @param demandIdx the index of one of the node's demand categories (starting from 1). @param demandName the new name assigned to the category. - @return Error code. + @return an error code. The category name must contain no more than @ref EN_SizeLimits "EN_MAXID" characters. */ @@ -1167,7 +1188,7 @@ typedef struct Project *EN_Project; All other pipe properties are set to 0. - A new pump has a status of \b EN_OPEN, a speed setting of 1, and has no pump + A new pump has a status of `EN_OPEN`, a speed setting of 1, and has no pump curve or power rating assigned to it. A new valve has a diameter of 10 inches (254 mm) and all other properties set to 0. @@ -1184,8 +1205,8 @@ typedef struct Project *EN_Project; @param actionCode The action taken if any control contains the link. @return an error code. - If \b actionCode is \b EN_UNCONDITIONAL then the link and all simple and rule-based - controls that contain it are deleted. If set to \b EN_CONDITIONAL then the link + If `actionCode` is `EN_UNCONDITIONAL` then the link and all simple and rule-based + controls that contain it are deleted. If set to `EN_CONDITIONAL` then the link is not deleted if it appears in any control and error 261 is returned. */ int DLLEXPORT EN_deletelink(EN_Project ph, int index, int actionCode); @@ -1215,7 +1236,7 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param index a link's index (starting from 1). @param newid the new ID name for the link. - @return Error code. + @return an error code. The ID name must not be longer than @ref EN_SizeLimits "EN_MAXID" characters. */ @@ -1238,9 +1259,9 @@ typedef struct Project *EN_Project; @param actionCode the action taken if any controls contain the link. @return an error code. - If \b actionCode is \b EN_UNCONDITIONAL then all simple and rule-based controls that + If `actionCode` is `EN_UNCONDITIONAL` then all simple and rule-based controls that contain the link are deleted when the link's type is changed. If set to - \b EN_CONDITIONAL then the type change is cancelled if the link appears in any + `EN_CONDITIONAL` then the type change is cancelled if the link appears in any control and error 261 is returned. */ int DLLEXPORT EN_setlinktype(EN_Project ph, int *inout_index, int linkType, int actionCode); @@ -1493,7 +1514,7 @@ typedef struct Project *EN_Project; @param len the number of factor values supplied. @return an error code. - \b values is a zero-based array that contains \b len elements. + `values` is a zero-based array that contains `len` elements. Use this function to redefine (and resize) a time pattern all at once; use @ref EN_setpatternvalue to revise pattern factors one at a time. @@ -1641,7 +1662,7 @@ typedef struct Project *EN_Project; @param nPoints the new number of data points for the curve. @return an error code. - \b xValues and \b yValues are zero-based arrays that contains \b nPoints elements. + `xValues` and `yValues` are zero-based arrays that contains `nPoints` elements. Use this function to redefine (and resize) a curve all at once; use @ref EN_setcurvevalue to revise a curve's data points one at a time. @@ -1662,7 +1683,7 @@ typedef struct Project *EN_Project; @param linkIndex the index of a link to control (starting from 1). @param setting control setting applied to the link. @param nodeIndex index of the node used to control the link - (0 for \b EN_TIMER and \b EN_TIMEOFDAY controls). + (0 for `EN_TIMER` and `EN_TIMEOFDAY` controls). @param level action level (tank level, junction pressure, or time in seconds) that triggers the control. @param[out] out_index index of the new control. @@ -1687,7 +1708,7 @@ typedef struct Project *EN_Project; @param[out] out_linkIndex the index of the link being controlled. @param[out] out_setting the control setting applied to the link. @param[out] out_nodeIndex the index of the node used to trigger the control - (0 for \b EN_TIMER and \b EN_TIMEOFDAY controls). + (0 for `EN_TIMER` and `EN_TIMEOFDAY` controls). @param[out] out_level the action level (tank level, junction pressure, or time in seconds) that triggers the control. @return an error code. @@ -1703,7 +1724,7 @@ typedef struct Project *EN_Project; @param linkIndex the index of the link being controlled. @param setting the control setting applied to the link. @param nodeIndex the index of the node used to trigger the control - (0 for \b EN_TIMER and \b EN_TIMEOFDAY controls). + (0 for `EN_TIMER` and `EN_TIMEOFDAY` controls). @param level the action level (tank level, junction pressure, or time in seconds) that triggers the control. @return an error code. @@ -1772,7 +1793,7 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param index the rule's index (starting from 1). @param[out] out_id the rule's ID name. - @return Error code. + @return an error code. The ID name must be sized to hold at least @ref EN_SizeLimits "EN_MAXID+1" characters. */ @@ -1784,7 +1805,7 @@ typedef struct Project *EN_Project; @param ruleIndex the rule's index (starting from 1). @param premiseIndex the position of the premise in the rule's list of premises (starting from 1). - @param[out] out_logop the premise's logical operator ( \b IF = 1, \b AND = 2, \b OR = 3 ). + @param[out] out_logop the premise's logical operator (`IF` = 1, `AND` = 2, `OR` = 3` ). @param[out] out_object the type of object the premise refers to (see @ref EN_RuleObject). @param[out] out_objIndex the index of the object (e.g. the index of a tank). @param[out] out_variable the object's variable being compared (see @ref EN_RuleVariable). @@ -1803,7 +1824,7 @@ typedef struct Project *EN_Project; @param ph an EPANET project handle. @param ruleIndex the rule's index (starting from 1). @param premiseIndex the position of the premise in the rule's list of premises. - @param logop the premise's logical operator ( \b IF = 1, \b AND = 2, \b OR = 3 ). + @param logop the premise's logical operator (`IF` = 1, `AND` = 2, `OR` = 3 ). @param object the type of object the premise refers to (see @ref EN_RuleObject). @param objIndex the index of the object (e.g. the index of a tank). @param variable the object's variable being compared (see @ref EN_RuleVariable). diff --git a/include/epanet2_enums.h b/include/epanet2_enums.h index 68a619c..f0c8864 100644 --- a/include/epanet2_enums.h +++ b/include/epanet2_enums.h @@ -217,7 +217,7 @@ typedef enum { /// Link status /** One of these values is returned when @ref EN_getlinkvalue is used to retrieve a link's -initial status ( \b EN_INITSTATUS ) or its current status ( \b EN_STATUS ). These options are +initial status (`EN_INITSTATUS`) or its current status (`EN_STATUS`). These options are also used with @ref EN_setlinkvalue to set values for these same properties. */ typedef enum { @@ -228,8 +228,8 @@ typedef enum { /// Pump states /** One of these codes is returned when @ref EN_getlinkvalue is used to retrieve a pump's -current operating state ( \b EN_PUMP_STATE ). \b EN_PUMP_XHEAD indicates that the pump has been -shut down because it is being asked to deliver more than its shutoff head. \b EN_PUMP_XFLOW +current operating state (`EN_PUMP_STATE`). `EN_PUMP_XHEAD` indicates that the pump has been +shut down because it is being asked to deliver more than its shutoff head. `EN_PUMP_XFLOW` indicates that the pump is being asked to deliver more than its maximum flow. */ typedef enum { @@ -254,7 +254,7 @@ typedef enum { /// Water quality source types /** These are the different types of external water quality sources that can be assigned -to a node's \b EN_SOURCETYPE property as used by @ref EN_getnodevalue and @ref EN_setnodevalue. +to a node's `EN_SOURCETYPE` property as used by @ref EN_getnodevalue and @ref EN_setnodevalue. */ typedef enum { EN_CONCEN = 0, //!< Sets the concentration of external inflow entering a node @@ -265,9 +265,9 @@ typedef enum { /// Head loss formulas /** -The available choices for the \b EN_HEADLOSSFORM option in @ref EN_getoption and +The available choices for the `EN_HEADLOSSFORM` option in @ref EN_getoption and @ref EN_setoption. They are also used for the head loss type argument in @ref EN_init. -Each head loss formula uses a different type of roughness coefficient ( \b EN_ROUGHNESS ) +Each head loss formula uses a different type of roughness coefficient (`EN_ROUGHNESS`) that can be set with @ref EN_setlinkvalue. */ typedef enum { @@ -280,7 +280,7 @@ typedef enum { /** These choices for flow units are used with @ref EN_getflowunits and @ref EN_setflowunits. They are also used for the flow units type argument in @ref EN_init. If flow units are -expressed in US Customary units ( \b EN_CFS through \b EN_AFD ) then all other quantities are +expressed in US Customary units (`EN_CFS` through `EN_AFD`) then all other quantities are in US Customary units. Otherwise they are in metric units. */ typedef enum { @@ -299,10 +299,10 @@ typedef enum { /// Pressure units /** -The available choices for pressure units for the \b EN_PRESS_UNITS option in @ref EN_getoption -and @ref EN_setoption. For networks using US Customary units for flow ( \b EN_CFS through -\b EN_AFD ) pressure units can only be set as PSI. For network using metric units, you can -select either \b EN_METERS or \b EN_KPA. +The available choices for pressure units for the `EN_PRESS_UNITS` option in @ref EN_getoption +and @ref EN_setoption. For networks using US Customary units for flow (`EN_CFS` through +`EN_AFD`) pressure units can only be set as PSI. For network using metric units, you can +select either `EN_METERS` or `EN_KPA`. */ typedef enum { EN_PSI = 0, //!< Pounds per square inch @@ -377,9 +377,10 @@ typedef enum { /// Reporting statistic choices /** These options determine what kind of statistical post-processing should be done on -the time series of simulation results generated before they are reported using -@ref EN_report. An option can be chosen by using \b STATISTIC _option_ as the argument -to @ref EN_setreport. +the time series of simulation results before they are reported using @ref EN_report +or saved to the project's binary output file. These options are used in the +@ref EN_gettimeparam and @ref EN_settimeparam functions when `EN_STATISTIC` is the +time parameter being set or retrieved. */ typedef enum { EN_SERIES = 0, //!< Report all time series points @@ -392,7 +393,7 @@ typedef enum { /// Tank mixing models /** These are the different types of models that describe water quality mixing in storage tanks. -The choice of model is accessed with the \b EN_MIXMODEL property of a Tank node using +The choice of model is accessed with the `EN_MIXMODEL` property of a Tank node using @ref EN_getnodevalue and @ref EN_setnodevalue. */ typedef enum { diff --git a/src/epanet.c b/src/epanet.c index 9d9e4ea..56635dd 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -851,13 +851,28 @@ int DLLEXPORT EN_closeQ(EN_Project p) int DLLEXPORT EN_setreportcallback(EN_Project p, void (*callback)(void*,void*,const char*)) - { + /*---------------------------------------------------------------- +** Input: callback = a pointer to a reporting function +** Output: none +** Returns: error code +** Purpose: replaces EPANET's normal use of a designated report file +**---------------------------------------------------------------- +*/ +{ p->report.reportCallback = callback; return 0; } int DLLEXPORT EN_setreportcallbackuserdata(EN_Project p, void *userData) - { +/*---------------------------------------------------------------- +** Input: userData = a pointer to a client-side data object +** Output: none +** Returns: error code +** Purpose: sets the client-side data object used in conjunction with +** the callback function in EN_setreportcallback +**---------------------------------------------------------------- +*/ +{ p->report.reportCallbackUserData = userData; return 0; } From 50f79c6ce833322424d25007ac0e9dcf3a081636 Mon Sep 17 00:00:00 2001 From: Lew Rossman Date: Thu, 3 Apr 2025 11:31:43 -0400 Subject: [PATCH 197/233] CHM help build instructions deleted --- doc/Doxyfile-chm | 2978 ---------------------------------------------- doc/readme.md | 7 - 2 files changed, 2985 deletions(-) delete mode 100644 doc/Doxyfile-chm diff --git a/doc/Doxyfile-chm b/doc/Doxyfile-chm deleted file mode 100644 index e8f9afc..0000000 --- a/doc/Doxyfile-chm +++ /dev/null @@ -1,2978 +0,0 @@ -# Doxyfile 1.13.2 - -# This file describes the settings to be used by the documentation system -# Doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). -# -# Note: -# -# Use Doxygen to compare the used configuration file with the template -# configuration file: -# doxygen -x [configFile] -# Use Doxygen to compare the used configuration file with the template -# configuration file without replacing the environment variables or CMake type -# replacement variables: -# doxygen -x_noenv [configFile] - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the configuration -# file that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# https://www.gnu.org/software/libiconv/ for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = "OWA-EPANET Toolkit 2.3" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewers a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = - -# With the PROJECT_ICON tag one can specify an icon that is included in the tabs -# when the HTML document is shown. Doxygen will copy the logo to the output -# directory. - -PROJECT_ICON = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where Doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# If the CREATE_SUBDIRS tag is set to YES then Doxygen will create up to 4096 -# sub-directories (in 2 levels) under the output directory of each output format -# and will distribute the generated files over these directories. Enabling this -# option can be useful when feeding Doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise cause -# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to -# control the number of sub-directories. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# Controls the number of sub-directories that will be created when -# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every -# level increment doubles the number of directories, resulting in 4096 -# directories at level 8 which is the default and also the maximum value. The -# sub-directories are organized in 2 levels, the first level always has a fixed -# number of 16 directories. -# Minimum value: 0, maximum value: 8, default value: 8. -# This tag requires that the tag CREATE_SUBDIRS is set to YES. - -CREATE_SUBDIRS_LEVEL = 8 - -# If the ALLOW_UNICODE_NAMES tag is set to YES, Doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by Doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, -# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English -# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, -# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with -# English messages), Korean, Korean-en (Korean with English messages), Latvian, -# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, -# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, -# Swedish, Turkish, Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, Doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, Doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, Doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, Doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which Doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where Doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, Doxygen will generate much shorter (but -# less readable) file names. This can be useful if your file system doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen will interpret the -# first line (until the first dot, question mark or exclamation mark) of a -# Javadoc-style comment as the brief description. If set to NO, the Javadoc- -# style will behave just like regular Qt-style comments (thus requiring an -# explicit @brief command for a brief description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the JAVADOC_BANNER tag is set to YES then Doxygen will interpret a line -# such as -# /*************** -# as being the beginning of a Javadoc-style comment "banner". If set to NO, the -# Javadoc-style will behave just like regular comments and it will not be -# interpreted by Doxygen. -# The default value is: NO. - -JAVADOC_BANNER = NO - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will interpret the first -# line (until the first dot, question mark or exclamation mark) of a Qt-style -# comment as the brief description. If set to NO, the Qt-style will behave just -# like regular Qt-style comments (thus requiring an explicit \brief command for -# a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# By default Python docstrings are displayed as preformatted text and Doxygen's -# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the -# Doxygen's special commands can be used and the contents of the docstring -# documentation blocks is shown as Doxygen documentation. -# The default value is: YES. - -PYTHON_DOCSTRING = YES - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then Doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:^^" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". Note that you cannot put \n's in the value part of an alias -# to insert newlines (in the resulting output). You can put ^^ in the value part -# of an alias to insert a newline as if a physical newline was in the original -# file. When you need a literal { or } or , in the value part of an alias you -# have to escape them by means of a backslash (\), this can lead to conflicts -# with the commands \{ and \} for these it is advised to use the version @{ and -# @} or use a double escape (\\{ and \\}) - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice -# sources only. Doxygen will then generate output that is more tailored for that -# language. For instance, namespaces will be presented as modules, types will be -# separated into more groups, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_SLICE = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by Doxygen: IDL, Java, JavaScript, -# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, -# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: -# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser -# tries to guess whether the code is fixed or free formatted code, this is the -# default for Fortran type files). For instance to make Doxygen treat .inc files -# as Fortran files (default is PHP), and .f files as C (default is Fortran), -# use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by Doxygen. When specifying no_extension you should add -# * to the FILE_PATTERNS. -# -# Note see also the list of default file extension mappings. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then Doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See https://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by Doxygen, so you can -# mix Doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up -# to that level are automatically included in the table of contents, even if -# they do not have an id attribute. -# Note: This feature currently applies only to Markdown headings. -# Minimum value: 0, maximum value: 99, default value: 6. -# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. - -TOC_INCLUDE_HEADINGS = 6 - -# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to -# generate identifiers for the Markdown headings. Note: Every identifier is -# unique. -# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a -# sequence number starting at 0 and GITHUB use the lower case version of title -# with any whitespace replaced by '-' and punctuation characters removed. -# The default value is: DOXYGEN. -# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. - -MARKDOWN_ID_STYLE = DOXYGEN - -# When enabled Doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. Words listed in the -# AUTOLINK_IGNORE_WORDS tag are excluded from automatic linking. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# This tag specifies a list of words that, when matching the start of a word in -# the documentation, will suppress auto links generation, if it is enabled via -# AUTOLINK_SUPPORT. This list does not affect affect links explicitly created -# using \# or the \link or commands. -# This tag requires that the tag AUTOLINK_SUPPORT is set to YES. - -AUTOLINK_IGNORE_WORDS = - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let Doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also makes the inheritance and -# collaboration diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# https://www.riverbankcomputing.com/software) sources only. Doxygen will parse -# them like normal C++ but will assume all classes use public instead of private -# inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# Doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then Doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# If one adds a struct or class to a group and this option is enabled, then also -# any nested class or struct is added to the same group. By default this option -# is disabled and one has to add nested compounds explicitly via \ingroup. -# The default value is: NO. - -GROUP_NESTED_COMPOUNDS = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, Doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# Doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run Doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -# The NUM_PROC_THREADS specifies the number of threads Doxygen is allowed to use -# during processing. When set to 0 Doxygen will based this on the number of -# cores available in the system. You can set it explicitly to a value larger -# than 0 to get more control over the balance between CPU load and processing -# speed. At this moment only the input processing can be done using multiple -# threads. Since this is still an experimental feature the default is set to 1, -# which effectively disables parallel processing. Please report any issues you -# encounter. Generating dot graphs in parallel is controlled by the -# DOT_NUM_THREADS setting. -# Minimum value: 0, maximum value: 32, default value: 1. - -NUM_PROC_THREADS = 1 - -# If the TIMESTAMP tag is set different from NO then each generated page will -# contain the date or date and time when the page was generated. Setting this to -# NO can help when comparing the output of multiple runs. -# Possible values are: YES, NO, DATETIME and DATE. -# The default value is: NO. - -TIMESTAMP = NO - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, Doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual -# methods of a class will be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIV_VIRTUAL = NO - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If this flag is set to YES, the name of an unnamed parameter in a declaration -# will be determined by the corresponding definition. By default unnamed -# parameters remain unnamed in the output. -# The default value is: YES. - -RESOLVE_UNNAMED_PARAMS = YES - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# will also hide undocumented C++ concepts if enabled. This option has no effect -# if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_UNDOC_NAMESPACES tag is set to YES, Doxygen will hide all -# undocumented namespaces that are normally visible in the namespace hierarchy. -# If set to NO, these namespaces will be included in the various overviews. This -# option has no effect if EXTRACT_ALL is enabled. -# The default value is: YES. - -HIDE_UNDOC_NAMESPACES = YES - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all friend -# declarations. If set to NO, these declarations will be included in the -# documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# With the correct setting of option CASE_SENSE_NAMES Doxygen will better be -# able to match the capabilities of the underlying filesystem. In case the -# filesystem is case sensitive (i.e. it supports files in the same directory -# whose names only differ in casing), the option must be set to YES to properly -# deal with such files in case they appear in the input. For filesystems that -# are not case sensitive the option should be set to NO to properly deal with -# output files written for symbols that only differ in casing, such as for two -# classes, one named CLASS and the other named Class, and to also support -# references to files without having to specify the exact matching casing. On -# Windows (including Cygwin) and macOS, users should typically set this option -# to NO, whereas on Linux or other Unix flavors it should typically be set to -# YES. -# Possible values are: SYSTEM, NO and YES. -# The default value is: SYSTEM. - -CASE_SENSE_NAMES = SYSTEM - -# If the HIDE_SCOPE_NAMES tag is set to NO then Doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then Doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class -# will show which file needs to be included to use the class. -# The default value is: YES. - -SHOW_HEADERFILE = YES - -# If the SHOW_INCLUDE_FILES tag is set to YES then Doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then Doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then Doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then Doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then Doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and Doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING Doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# Doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by Doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by Doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents Doxygen's defaults, run Doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. See also section "Changing the -# layout of pages" for information. -# -# Note that if you run Doxygen from a directory containing a file called -# DoxygenLayout.xml, Doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -# The EXTERNAL_TOOL_PATH tag can be used to extend the search path (PATH -# environment variable) so that external tools such as latex and gs can be -# found. -# Note: Directories specified with EXTERNAL_TOOL_PATH are added in front of the -# path already specified by the PATH variable, and are added in the order -# specified. -# Note: This option is particularly useful for macOS version 14 (Sonoma) and -# higher, when running Doxygen from Doxywizard, because in this case any user- -# defined changes to the PATH are ignored. A typical example on macOS is to set -# EXTERNAL_TOOL_PATH = /Library/TeX/texbin /usr/local/bin -# together with the standard path, the full search path used by doxygen when -# launching external tools will then become -# PATH=/Library/TeX/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin - -EXTERNAL_TOOL_PATH = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by Doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by Doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then Doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, Doxygen will generate warnings for -# potential errors in the documentation, such as documenting some parameters in -# a documented function twice, or documenting parameters that don't exist or -# using markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# If WARN_IF_INCOMPLETE_DOC is set to YES, Doxygen will warn about incomplete -# function parameter documentation. If set to NO, Doxygen will accept that some -# parameters have no documentation without warning. -# The default value is: YES. - -WARN_IF_INCOMPLETE_DOC = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, Doxygen will only warn about wrong parameter -# documentation, but not about the absence of documentation. If EXTRACT_ALL is -# set to YES then this flag will automatically be disabled. See also -# WARN_IF_INCOMPLETE_DOC -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, Doxygen will warn about -# undocumented enumeration values. If set to NO, Doxygen will accept -# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: NO. - -WARN_IF_UNDOC_ENUM_VAL = NO - -# If WARN_LAYOUT_FILE option is set to YES, Doxygen will warn about issues found -# while parsing the user defined layout file, such as missing or wrong elements. -# See also LAYOUT_FILE for details. If set to NO, problems with the layout file -# will be suppressed. -# The default value is: YES. - -WARN_LAYOUT_FILE = YES - -# If the WARN_AS_ERROR tag is set to YES then Doxygen will immediately stop when -# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS -# then Doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but -# at the end of the Doxygen process Doxygen will return with a non-zero status. -# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then Doxygen behaves -# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined Doxygen will not -# write the warning messages in between other messages but write them at the end -# of a run, in case a WARN_LOGFILE is defined the warning messages will be -# besides being in the defined file also be shown at the end of a run, unless -# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case -# the behavior will remain as with the setting FAIL_ON_WARNINGS. -# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT. -# The default value is: NO. - -WARN_AS_ERROR = NO - -# The WARN_FORMAT tag determines the format of the warning messages that Doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# See also: WARN_LINE_FORMAT -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# In the $text part of the WARN_FORMAT command it is possible that a reference -# to a more specific place is given. To make it easier to jump to this place -# (outside of Doxygen) the user can define a custom "cut" / "paste" string. -# Example: -# WARN_LINE_FORMAT = "'vi $file +$line'" -# See also: WARN_FORMAT -# The default value is: at line $line of file $file. - -WARN_LINE_FORMAT = "at line $line of file $file" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). In case the file specified cannot be opened for writing the -# warning and error messages are written to standard error. When as file - is -# specified the warning and error messages are written to standard output -# (stdout). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -# Note: If this tag is empty the current directory is searched. - -INPUT = main.dox \ - toolkit-usage.dox \ - toolkit-examples.dox \ - toolkit-files.dox \ - toolkit-input.dox \ - toolkit-units.dox \ - toolkit-topics.dox \ - ../include/epanet2_enums.h \ - ../include/epanet2_2.h - -# This tag can be used to specify the character encoding of the source files -# that Doxygen parses. Internally Doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: -# https://www.gnu.org/software/libiconv/) for the list of possible encodings. -# See also: INPUT_FILE_ENCODING -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# This tag can be used to specify the character encoding of the source files -# that Doxygen parses. The INPUT_FILE_ENCODING tag can be used to specify -# character encoding on a per file pattern basis. Doxygen will compare the file -# name with each pattern and apply the encoding instead of the default -# INPUT_ENCODING if there is a match. The character encodings are a list of the -# form: pattern=encoding (like *.php=ISO-8859-1). -# See also: INPUT_ENCODING for further information on supported encodings. - -INPUT_FILE_ENCODING = - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by Doxygen. -# -# Note the list of default checked file patterns might differ from the list of -# default file extension mappings. -# -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm, -# *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, -# *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d, -# *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to -# be provided as Doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, -# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. - -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cxxm \ - *.cpp \ - *.cppm \ - *.ccm \ - *.c++ \ - *.c++m \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.idl \ - *.ddl \ - *.odl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.ixx \ - *.l \ - *.cs \ - *.d \ - *.php \ - *.php4 \ - *.php5 \ - *.phtml \ - *.inc \ - *.m \ - *.markdown \ - *.md \ - *.mm \ - *.dox \ - *.py \ - *.pyw \ - *.f90 \ - *.f95 \ - *.f03 \ - *.f08 \ - *.f18 \ - *.f \ - *.for \ - *.vhd \ - *.vhdl \ - *.ucf \ - *.qsf \ - *.ice - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which Doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# ANamespace::AClass, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = ./ - -# The INPUT_FILTER tag can be used to specify a program that Doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. -# -# Note that Doxygen will use the data processed and written to standard output -# for further processing, therefore nothing else, like debug statements or used -# commands (so in case of a Windows batch file always use @echo OFF), should be -# written to standard output. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by Doxygen. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by Doxygen. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the Doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -# If the IMPLICIT_DIR_DOCS tag is set to YES, any README.md file found in sub- -# directories of the project's root, is used as the documentation for that sub- -# directory, except when the README.md starts with a \dir, \page or \mainpage -# command. If set to NO, the README.md file needs to start with an explicit \dir -# command in order to be used as directory documentation. -# The default value is: YES. - -IMPLICIT_DIR_DOCS = YES - -# The Fortran standard specifies that for fixed formatted Fortran code all -# characters from position 72 are to be considered as comment. A common -# extension is to allow longer lines before the automatic comment starts. The -# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can -# be processed before the automatic comment starts. -# Minimum value: 7, maximum value: 10000, default value: 72. - -FORTRAN_COMMENT_AFTER = 72 - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# multi-line macros, enums or list initialized variables directly into the -# documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct Doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# entity all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of Doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see https://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by Doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then Doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -# If the CLANG_ASSISTED_PARSING tag is set to YES then Doxygen will use the -# clang parser (see: -# http://clang.llvm.org/) for more accurate parsing at the cost of reduced -# performance. This can be particularly helpful with template rich C++ code for -# which Doxygen's built-in parser lacks the necessary type information. -# Note: The availability of this option depends on whether or not Doxygen was -# generated with the -Duse_libclang=ON option for CMake. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS -# tag is set to YES then Doxygen will add the directory of each input to the -# include path. -# The default value is: YES. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_ADD_INC_PATHS = YES - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by Doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -# If clang assisted parsing is enabled you can provide the clang parser with the -# path to the directory containing a file called compile_commands.json. This -# file is the compilation database (see: -# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the -# options used when the source files were built. This is equivalent to -# specifying the -p option to a clang tool, such as clang-check. These options -# will then be passed to the parser. Any options specified with CLANG_OPTIONS -# will be added as well. -# Note: The availability of this option depends on whether or not Doxygen was -# generated with the -Duse_libclang=ON option for CMake. - -CLANG_DATABASE_PATH = - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) -# that should be ignored while generating the index headers. The IGNORE_PREFIX -# tag works for classes, function and member names. The entity will be placed in -# the alphabetical list under the first letter of the entity name that remains -# after removing the prefix. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, Doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank Doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that Doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that Doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of Doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank Doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that Doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = newfooter.html - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank Doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that Doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by Doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). -# Note: Since the styling of scrollbars can currently not be overruled in -# Webkit/Chromium, the styling will be left out of the default doxygen.css if -# one or more extra stylesheets have been specified. So if scrollbar -# customization is desired it has to be added explicitly. For an example see the -# documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output -# should be rendered with a dark or light theme. -# Possible values are: LIGHT always generates light mode output, DARK always -# generates dark mode output, AUTO_LIGHT automatically sets the mode according -# to the user preference, uses light mode if no preference is set (the default), -# AUTO_DARK automatically sets the mode according to the user preference, uses -# dark mode if no preference is set and TOGGLE allows a user to switch between -# light and dark mode via a button. -# The default value is: AUTO_LIGHT. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE = LIGHT - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a color-wheel, see -# https://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use gray-scales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML -# documentation will contain a main index with vertical navigation menus that -# are dynamically created via JavaScript. If disabled, the navigation index will -# consists of multiple levels of tabs that are statically embedded in every HTML -# page. Disable this option to support browsers that do not have JavaScript, -# like the Qt help browser. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_MENUS = NO - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be -# dynamically folded and expanded in the generated HTML source code. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_CODE_FOLDING = YES - -# If the HTML_COPY_CLIPBOARD tag is set to YES then Doxygen will show an icon in -# the top right corner of code and text fragments that allows the user to copy -# its content to the clipboard. Note this only works if supported by the browser -# and the web page is served via a secure context (see: -# https://www.w3.org/TR/secure-contexts/), i.e. using the https: or file: -# protocol. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COPY_CLIPBOARD = NO - -# Doxygen stores a couple of settings persistently in the browser (via e.g. -# cookies). By default these settings apply to all HTML pages generated by -# Doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store -# the settings under a project specific key, such that the user preferences will -# be stored separately. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_PROJECT_COOKIE = - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: -# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To -# create a documentation set, Doxygen will generate a Makefile in the HTML -# output directory. Running make will produce the docset in that directory and -# running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy -# genXcode/_index.html for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag determines the URL of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDURL = - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then Doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# on Windows. In the beginning of 2021 Microsoft took the original page, with -# a.o. the download links, offline (the HTML help workshop was already many -# years in maintenance mode). You can download the HTML help workshop from the -# web archives at Installation executable (see: -# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo -# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by Doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = YES - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = ../owa_epanet.chm - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# Doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = "c:\Program Files (x86)\HTML Help Workshop\hhc.exe" - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the main .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# The SITEMAP_URL tag is used to specify the full URL of the place where the -# generated documentation will be placed on the server by the user during the -# deployment of the documentation. The generated sitemap is called sitemap.xml -# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL -# is specified no sitemap is generated. For information about the sitemap -# protocol see https://www.sitemaps.org -# This tag requires that the tag GENERATE_HTML is set to YES. - -SITEMAP_URL = - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location (absolute path -# including file name) of Qt's qhelpgenerator. If non-empty Doxygen will try to -# run qhelpgenerator on the generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = YES - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine tune the look of the index (see "Fine-tuning the output"). As an -# example, the default style sheet generated by Doxygen has an example that -# shows how to put an image at the root of the tree instead of the PROJECT_NAME. -# Since the tree basically has the same information as the tab index, you could -# consider setting DISABLE_INDEX to YES when enabling this option. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = NO - -# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the -# FULL_SIDEBAR option determines if the side bar is limited to only the treeview -# area (value NO) or if it should extend to the full height of the window (value -# YES). Setting this to YES gives a layout similar to -# https://docs.readthedocs.io with more room for contents, but less room for the -# project logo, title, and description. If either GENERATE_TREEVIEW or -# DISABLE_INDEX is set to NO, this option has no effect. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FULL_SIDEBAR = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# Doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 0 - -# When the SHOW_ENUM_VALUES tag is set doxygen will show the specified -# enumeration values besides the enumeration mnemonics. -# The default value is: NO. - -SHOW_ENUM_VALUES = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, Doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# If the OBFUSCATE_EMAILS tag is set to YES, Doxygen will obfuscate email -# addresses. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -OBFUSCATE_EMAILS = YES - -# If the HTML_FORMULA_FORMAT option is set to svg, Doxygen will use the pdf2svg -# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see -# https://inkscape.org) to generate formulas as SVG images instead of PNGs for -# the HTML output. These images will generally look nicer at scaled resolutions. -# Possible values are: png (the default) and svg (looks nicer but requires the -# pdf2svg or inkscape tool). -# The default value is: png. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FORMULA_FORMAT = png - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# Doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands -# to create new LaTeX commands to be used in formulas as building blocks. See -# the section "Including formulas" for details. - -FORMULA_MACROFILE = - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# https://www.mathjax.org) which uses client side JavaScript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. -# Note that the different versions of MathJax have different requirements with -# regards to the different settings, so it is possible that also other MathJax -# settings have to be changed when switching between the different MathJax -# versions. -# Possible values are: MathJax_2 and MathJax_3. -# The default value is: MathJax_2. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_VERSION = MathJax_2 - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. For more details about the output format see MathJax -# version 2 (see: -# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 -# (see: -# http://docs.mathjax.org/en/latest/web/components/output.html). -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility. This is the name for Mathjax version 2, for MathJax version 3 -# this will be translated into chtml), NativeMML (i.e. MathML. Only supported -# for MathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This -# is the name for Mathjax version 3, for MathJax version 2 this will be -# translated into HTML-CSS) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from https://www.mathjax.org before deployment. The default value is: -# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 -# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# for MathJax version 2 (see -# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# For example for MathJax version 3 (see -# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): -# MATHJAX_EXTENSIONS = ams -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with JavaScript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: -# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled Doxygen will generate a search box for -# the HTML output. The underlying search engine uses JavaScript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the JavaScript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /
- + @@ -342,9 +342,9 @@ __Definitions:__ - \b CMH = cubic meters per hour - \b CMD = cubic meters per day -For CFS, GPM, MGD, IMGD, and AFD other input quantities are expressed in US Customary Units. If flow units are in liters or cubic meters then Metric Units must be used for all other input quantities as well. (See the @ref Units topic). The default flow units are \b GPM. +For CFS, GPM, MGD, IMGD, and AFD other input quantities are expressed in US Customary Units. If flow units are in liters or cubic meters then Metric Units must be used for all other input quantities as well. (See the @ref Units topic). An exception is pressure which can use either US or SI units. The default flow units are \b GPM. -\b PRESSURE sets the units in which pressure is expressed, for networks using metric units, as determined by the \b UNITS option, the choices are: \b KPA, or \b METERS. For networks using US Customary Units, you can only use \b PSI. +\b PRESSURE sets the units in which pressure is expressed, regardless of which unit system is in use. The default pressure unit is \b PSI for US Customary Units and \b METERS for SI Metric Units. \b HEADLOSS selects a formula to use for computing head loss for flow through a pipe. The choices are the Hazen-Williams (\b H-W ), Darcy-Weisbach (\b D-W ), or Chezy-Manning (\b C-M ) formulas. The default is \b H-W. @@ -374,7 +374,7 @@ The \b HYDRAULICS option allows you to either SAVE the current hydraulics \b MINIMUM PRESSURE is the pressure below which no demand can be delivered under a pressure driven analysis. It has no effect on a demand driven analysis. Its default value is 0. -\b REQUIRED PRESSURE is the pressure required to supply a node's full demand under a pressure driven analysis. It has no effect on a demand driven analysis. It must be at least 0.1 psi or m higher than the MINIMUM PRESSURE, which is also its default value. +\b REQUIRED PRESSURE is the pressure required to supply a node's full demand under a pressure driven analysis. It has no effect on a demand driven analysis. It must be at least 0.1 pressure units higher than the MINIMUM PRESSURE, which is also its default value. \b PRESSURE EXPONENT is the power to which pressure is raised when computing the demand delivered to a node under a pressure driven analysis. It has no effect on a demand driven analysis. Its default value is 0.5. diff --git a/doc/toolkit-units.dox b/doc/toolkit-units.dox index db30aa2..e5ee997 100644 --- a/doc/toolkit-units.dox +++ b/doc/toolkit-units.dox @@ -2,7 +2,7 @@ /** @page Units Measurement Units -The toolkit can use data expressed in either US Customary of SI Metric units. A project's unit system depends on the unit system used for its choice of flow units. If the @ref EN_open function is used to supply data to a project from an Input File then its flow units are set in the @ref OptionsPage section of the file. If the @ref EN_init function is used to initialize a project then the choice of flow units is the fourth argument to the function. The following table lists the units used to express the various parameters in an EPANET model. +The toolkit can use data expressed in either US Customary of SI Metric units. A project's unit system depends on the unit system used for its choice of flow units. If the @ref EN_open function is used to supply data to a project from an Input File then its flow units are set in the @ref OptionsPage section of the file. If the @ref EN_init function is used to initialize a project then the choice of flow units is the fourth argument to the function. An exception to this convention is pressure whose units can be expressed in either US or SI units. The following table lists the units used to express the various parameters in an EPANET model. | Parameter | US Customary | SI Metric | |----------------|-------------------------|---------------------------| @@ -25,7 +25,9 @@ The toolkit can use data expressed in either US Customary of SI Metric units. A |Length | feet | meters | |Minor Loss Coeff. | unitless | unitless | |Power | horsepower | kwatts | -|Pressure | psi | meters or kPa | +|Pressure | psi (pounds / sq. in.)| meters | +| | feet | kPa (kiloPascal) | +| | | bar | |Reaction Coeff. (Bulk) | 1/day (1st-order)| 1/day (1st-order) | |Reaction Coeff. (Wall) | mass/sq-ft/day (0-order) | mass/sq-m/day (0-order) | | | ft/day (1st-order) | meters/day (1st-order) | diff --git a/src/input1.c b/src/input1.c index 5918c4f..a990856 100644 --- a/src/input1.c +++ b/src/input1.c @@ -432,7 +432,6 @@ void initunits(Project *pr) strcpy(rpt->Field[DEMAND].Units, RptFlowUnitsTxt[parser->Flowflag]); strcpy(rpt->Field[ELEV].Units, u_FEET); strcpy(rpt->Field[HEAD].Units, u_FEET); - strcpy(rpt->Field[PRESSURE].Units, u_PSI); strcpy(rpt->Field[LENGTH].Units, u_FEET); strcpy(rpt->Field[DIAM].Units, u_INCHES); strcpy(rpt->Field[FLOW].Units, RptFlowUnitsTxt[parser->Flowflag]); diff --git a/src/input3.c b/src/input3.c index 305bf46..ac98d7a 100644 --- a/src/input3.c +++ b/src/input3.c @@ -1884,8 +1884,8 @@ int optionchoice(Project *pr, int n) ** those listed below, or -1 otherwise ** Purpose: processes fixed choice [OPTIONS] data ** Formats: -** UNITS CFS/GPM/MGD/IMGD/AFD/LPS/LPM/MLD/CMH/CMD/CMS/SI -** PRESSURE PSI/KPA/M +** UNITS CFS/GPM/MGD/IMGD/AFD/LPS/LPM/MLD/CMH/CMD/CMS +** PRESSURE PSI/KPA/METERS/BAR/FEET ** HEADLOSS H-W/D-W/C-M ** HYDRAULICS USE/SAVE filename ** QUALITY NONE/AGE/TRACE/CHEMICAL (TraceNode)
UNITSCFS / GPM / MGD / IMGD / AFD /
LPS / LPM / MLD / CMS / CMH / CMD
PRESSUREPSI / KPA / METERS
PRESSUREPSI / KPA / METERS / FEET / BAR
HEADLOSSH-W / D-W / C-M
HYDRAULICSUSE / SAVE  filename
VISCOSITYvalue