commit c0f47b6ee9a03b96f327dbc0d98c223353f638ce Author: jdg Date: Wed Sep 1 17:28:46 2021 +0200 first commit (2007-05-21) diff --git a/bin/bg/Code128B.ttf b/bin/bg/Code128B.ttf new file mode 100644 index 0000000..dee734e Binary files /dev/null and b/bin/bg/Code128B.ttf differ diff --git a/bin/bg/Thumbs.db b/bin/bg/Thumbs.db new file mode 100644 index 0000000..3a8e623 Binary files /dev/null and b/bin/bg/Thumbs.db differ diff --git a/bin/bg/bg01.jpg b/bin/bg/bg01.jpg new file mode 100644 index 0000000..0a05adf Binary files /dev/null and b/bin/bg/bg01.jpg differ diff --git a/bin/bg/bg02.jpg b/bin/bg/bg02.jpg new file mode 100644 index 0000000..a32d315 Binary files /dev/null and b/bin/bg/bg02.jpg differ diff --git a/bin/bg/bg03.jpg b/bin/bg/bg03.jpg new file mode 100644 index 0000000..06079d1 Binary files /dev/null and b/bin/bg/bg03.jpg differ diff --git a/bin/bg/bg04.jpg b/bin/bg/bg04.jpg new file mode 100644 index 0000000..0e75ce3 Binary files /dev/null and b/bin/bg/bg04.jpg differ diff --git a/bin/bg/bg05.jpg b/bin/bg/bg05.jpg new file mode 100644 index 0000000..db7b927 Binary files /dev/null and b/bin/bg/bg05.jpg differ diff --git a/bin/bg/bg06.jpg b/bin/bg/bg06.jpg new file mode 100644 index 0000000..69df4e2 Binary files /dev/null and b/bin/bg/bg06.jpg differ diff --git a/bin/bg/bg07.jpg b/bin/bg/bg07.jpg new file mode 100644 index 0000000..0e75ce3 Binary files /dev/null and b/bin/bg/bg07.jpg differ diff --git a/bin/controlHorario.exe b/bin/controlHorario.exe new file mode 100644 index 0000000..94bcd50 Binary files /dev/null and b/bin/controlHorario.exe differ diff --git a/bin/controlHorario.ini b/bin/controlHorario.ini new file mode 100644 index 0000000..732ffea --- /dev/null +++ b/bin/controlHorario.ini @@ -0,0 +1,7 @@ +[DB] +Host=192.168.0.1 +DB=sgi +Login=SGIuser +Password=SGIpass +Port=3306 +protocol=mysql-4.1 \ No newline at end of file diff --git a/bin/controlHorario.rar b/bin/controlHorario.rar new file mode 100644 index 0000000..400c710 Binary files /dev/null and b/bin/controlHorario.rar differ diff --git a/bin/controlHorario.tds b/bin/controlHorario.tds new file mode 100644 index 0000000..d03b731 Binary files /dev/null and b/bin/controlHorario.tds differ diff --git a/bin/libmysql41.dll b/bin/libmysql41.dll new file mode 100644 index 0000000..620ced3 Binary files /dev/null and b/bin/libmysql41.dll differ diff --git a/controlHorario.bpr b/controlHorario.bpr new file mode 100644 index 0000000..89b03ab --- /dev/null +++ b/controlHorario.bpr @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=1 +MajorVer=1 +MinorVer=0 +Release=0 +Build=36 +Debug=0 +PreRelease=1 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 + +[Version Info Keys] +CompanyName=www.infdj.com +FileDescription= +FileVersion=1.0.0.36 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Excluded Packages] +c:\archivos de programa\borland\cbuilder6\Bin\dclqrt60.bpl=QuickReport Components +c:\archivos de programa\borland\cbuilder6\Bin\dcltqr60.bpl=TeeChart for QuickReport Components +c:\archivos de programa\borland\cbuilder6\Bin\dclite60.bpl=Borland Integrated Translation Environment + +[HistoryLists\hlIncludePath] +Count=27 +Item0=src;C:\programacion\VCLs\TVidGrab;C:\Archivos de programa\Borland\CBuilder6\Projects;..\TPV_VENTAS win9x;..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\include;$(BCB)\include\vcl;C:\programacion\VCLs\zeos_mySQL\src\core;C:\programacion\VCLs\zeos_mySQL\src\dbc;C:\programacion\VCLs\zeos_mySQL\src\parsesql;C:\programacion\VCLs\zeos_mySQL\src\plain;C:\programacion\VCLs\zeos_mySQL\src\external;C:\programacion\VCLs\include;C:\Archivos de programa\Borland\CBuilder6\quickrpt +Item1=src;C:\programacion\VCLs\TVidGrab;C:\Archivos de programa\Borland\CBuilder6\Projects;C:\Documents and Settings\jd\Mis documentos\CBuilder\controlHorario\src;..\TPV_VENTAS win9x;..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\include;$(BCB)\include\vcl;C:\programacion\VCLs\zeos_mySQL\src\core;C:\programacion\VCLs\zeos_mySQL\src\dbc;C:\programacion\VCLs\zeos_mySQL\src\parsesql;C:\programacion\VCLs\zeos_mySQL\src\plain;C:\programacion\VCLs\zeos_mySQL\src\external;C:\programacion\VCLs\include;C:\Archivos de programa\Borland\CBuilder6\quickrpt +Item2=..\TPV_VENTAS win9x;..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\include;$(BCB)\include\vcl;C:\programacion\VCLs\zeos_mySQL\src\core;C:\programacion\VCLs\zeos_mySQL\src\dbc;C:\programacion\VCLs\zeos_mySQL\src\parsesql;C:\programacion\VCLs\zeos_mySQL\src\plain;C:\programacion\VCLs\zeos_mySQL\src\external;C:\programacion\VCLs\include;C:\Archivos de programa\Borland\CBuilder6\quickrpt +Item3=..\TPV_VENTAS win9x;..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\include;$(BCB)\include\vcl;C:\programacion\VCLs\zeos_mySQL\src\core;C:\programacion\VCLs\zeos_mySQL\src\dbc;C:\programacion\VCLs\zeos_mySQL\src\parsesql;C:\programacion\VCLs\zeos_mySQL\src\plain;C:\programacion\VCLs\zeos_mySQL\src\external;C:\programacion\VCLs\include +Item4=..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\include;$(BCB)\include\vcl;C:\programacion\VCLs\zeos_mySQL\src\core;C:\programacion\VCLs\zeos_mySQL\src\dbc;C:\programacion\VCLs\zeos_mySQL\src\parsesql;C:\programacion\VCLs\zeos_mySQL\src\plain;C:\programacion\VCLs\zeos_mySQL\src\external;C:\programacion\VCLs\include +Item5=C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\include;$(BCB)\include\vcl;C:\programacion\VCLs\zeos_mySQL\src\core;C:\programacion\VCLs\zeos_mySQL\src\dbc;C:\programacion\VCLs\zeos_mySQL\src\parsesql;C:\programacion\VCLs\zeos_mySQL\src\plain;C:\programacion\VCLs\zeos_mySQL\src\external;C:\programacion\VCLs\include +Item6=C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\include;$(BCB)\include\vcl;C:\programacion\VCLs\zeos_mySQL\src\core;C:\programacion\VCLs\zeos_mySQL\src\dbc;C:\programacion\VCLs\zeos_mySQL\src\parsesql;C:\programacion\VCLs\zeos_mySQL\src\plain;C:\programacion\VCLs\zeos_mySQL\src\external +Item7=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\..\..\TPV win9x;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\core;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\dbc;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\parsesql;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\plain;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\external +Item8=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..;..\TVP1.1_to_myTPV;..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;$(BCB)\include;$(BCB)\include\vcl;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\zeos_mySQL\src\component;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\zeos_mySQL\src\core;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\zeos_mySQL\src\dbc;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\zeos_mySQL\src\parsesql;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\zeos_mySQL\src\plain;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\zeos_mySQL\src\external +Item9=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..;..\TVP1.1_to_myTPV;..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item10=..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\..\..\TPV win9x;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item11=..\common;..\;..\TVP1.1_to_myTPV;..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item12=..\TVP1.1_to_myTPV;..\..\..\TPV win9x;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item13=..\TVP1.1_to_myTPV;..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item14=..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item15=..\..\..\TPV win9x;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item16=..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item17=..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item18=..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item19=..\..\..\..\C++ Builder\VCLs\include;..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item20=..\..\..\..\C++ Builder\VCLs\include;..\..;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item21=..\..;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item22=..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item23=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item24=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\zeos_mySQL\common +Item25=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl +Item26=$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlLibraryPath] +Count=29 +Item0=src;C:\programacion\VCLs\TVidGrab;C:\Archivos de programa\Borland\CBuilder6\Projects;..\TPV_VENTAS win9x;..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\Projects\Lib;C:\programacion\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\obj;C:\programacion\VCLs\zeos_mySQL\packages\cbuilder6\build;C:\Archivos de programa\Borland\CBuilder6\quickrpt +Item1=src;C:\programacion\VCLs\TVidGrab;C:\Archivos de programa\Borland\CBuilder6\Projects;C:\Documents and Settings\jd\Mis documentos\CBuilder\controlHorario\src;..\TPV_VENTAS win9x;..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\Projects\Lib;C:\programacion\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\obj;C:\programacion\VCLs\zeos_mySQL\packages\cbuilder6\build;C:\Archivos de programa\Borland\CBuilder6\quickrpt +Item2=..\TPV_VENTAS win9x;..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\Projects\Lib;C:\programacion\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\obj;C:\programacion\VCLs\zeos_mySQL\packages\cbuilder6\build;C:\Archivos de programa\Borland\CBuilder6\quickrpt +Item3=..\TPV_VENTAS win9x;..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\Projects\Lib;C:\programacion\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\obj;C:\programacion\VCLs\zeos_mySQL\packages\cbuilder6\build +Item4=..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\Projects\Lib;C:\programacion\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\obj;C:\programacion\VCLs\zeos_mySQL\packages\cbuilder6\build +Item5=..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\Projects\Lib;C:\programacion\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\obj;C:\programacion\VCLs\zeos_mySQL\packages\cbuilder6 +Item6=..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\Projects\Lib;C:\programacion\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\obj +Item7=C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\Projects\Lib;C:\programacion\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\obj +Item8=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\..\..\TPV win9x;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item9=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..;..\TVP1.1_to_myTPV;..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item10=..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\..\..\TPV win9x;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item11=..\common;..\;..\TVP1.1_to_myTPV;..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item12=..\TVP1.1_to_myTPV;..\..\..\TPV win9x;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item13=..\TVP1.1_to_myTPV;..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item14=..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item15=..\..\..\TPV win9x;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item16=..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item17=..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item18=..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item19=..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item20=..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item21=..\..\..\..\C++ Builder\VCLs\include;..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item22=..\..\..\..\C++ Builder\VCLs\include;..\..;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item23=..\..;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item24=..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item25=..\..;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib +Item26=..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib +Item27=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib +Item28=$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=2 +Item0=$(BCB)\source\vcl +Item1=$(BCB)\source\vcl;..\..\bin\ + +[HistoryLists\hlConditionals] +Count=1 +Item0=_DEBUG + +[HistoryLists\hlIntOutputDir] +Count=6 +Item0=obj +Item1=obj\ +Item2=..\obj +Item3=..\..\obj +Item4=C:\Mis documentos\Fuentes de Programacion\TPVweb!\TPV win9x\obj +Item5=..\..\obj\ + +[HistoryLists\hlFinalOutputDir] +Count=4 +Item0=bin\ +Item1=..\bin\ +Item2=..\..\bin\ +Item3=..\..\bin + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +Launcher= +UseLauncher=0 +DebugCWD= +HostApplication= +RemoteHost= +RemotePath= +RemoteLauncher= +RemoteCWD= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=1 +LinkCGLIB=0 + +[CORBA] +AddServerUnit=1 +AddClientUnit=1 +PrecompiledHeaders=1 + + \ No newline at end of file diff --git a/controlHorario.cpp b/controlHorario.cpp new file mode 100644 index 0000000..49739c9 --- /dev/null +++ b/controlHorario.cpp @@ -0,0 +1,33 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "splash.h" +//--------------------------------------------------------------------------- +USEFORM("src\main.cpp", Form1); +USEFORM("src\splash.cpp", splashScreen); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + + /***********************/ + splashScreen = new TsplashScreen(Application); + splashScreen->Show(); + splashScreen->Update(); + /***********************/ + + Application->CreateForm(__classid(TForm1), &Form1); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + + return 0; +} +//--------------------------------------------------------------------------- + diff --git a/controlHorario.res b/controlHorario.res new file mode 100644 index 0000000..cdc58c8 Binary files /dev/null and b/controlHorario.res differ diff --git a/controlHorario.~bpr b/controlHorario.~bpr new file mode 100644 index 0000000..89b03ab --- /dev/null +++ b/controlHorario.~bpr @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=1 +MajorVer=1 +MinorVer=0 +Release=0 +Build=36 +Debug=0 +PreRelease=1 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 + +[Version Info Keys] +CompanyName=www.infdj.com +FileDescription= +FileVersion=1.0.0.36 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Excluded Packages] +c:\archivos de programa\borland\cbuilder6\Bin\dclqrt60.bpl=QuickReport Components +c:\archivos de programa\borland\cbuilder6\Bin\dcltqr60.bpl=TeeChart for QuickReport Components +c:\archivos de programa\borland\cbuilder6\Bin\dclite60.bpl=Borland Integrated Translation Environment + +[HistoryLists\hlIncludePath] +Count=27 +Item0=src;C:\programacion\VCLs\TVidGrab;C:\Archivos de programa\Borland\CBuilder6\Projects;..\TPV_VENTAS win9x;..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\include;$(BCB)\include\vcl;C:\programacion\VCLs\zeos_mySQL\src\core;C:\programacion\VCLs\zeos_mySQL\src\dbc;C:\programacion\VCLs\zeos_mySQL\src\parsesql;C:\programacion\VCLs\zeos_mySQL\src\plain;C:\programacion\VCLs\zeos_mySQL\src\external;C:\programacion\VCLs\include;C:\Archivos de programa\Borland\CBuilder6\quickrpt +Item1=src;C:\programacion\VCLs\TVidGrab;C:\Archivos de programa\Borland\CBuilder6\Projects;C:\Documents and Settings\jd\Mis documentos\CBuilder\controlHorario\src;..\TPV_VENTAS win9x;..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\include;$(BCB)\include\vcl;C:\programacion\VCLs\zeos_mySQL\src\core;C:\programacion\VCLs\zeos_mySQL\src\dbc;C:\programacion\VCLs\zeos_mySQL\src\parsesql;C:\programacion\VCLs\zeos_mySQL\src\plain;C:\programacion\VCLs\zeos_mySQL\src\external;C:\programacion\VCLs\include;C:\Archivos de programa\Borland\CBuilder6\quickrpt +Item2=..\TPV_VENTAS win9x;..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\include;$(BCB)\include\vcl;C:\programacion\VCLs\zeos_mySQL\src\core;C:\programacion\VCLs\zeos_mySQL\src\dbc;C:\programacion\VCLs\zeos_mySQL\src\parsesql;C:\programacion\VCLs\zeos_mySQL\src\plain;C:\programacion\VCLs\zeos_mySQL\src\external;C:\programacion\VCLs\include;C:\Archivos de programa\Borland\CBuilder6\quickrpt +Item3=..\TPV_VENTAS win9x;..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\include;$(BCB)\include\vcl;C:\programacion\VCLs\zeos_mySQL\src\core;C:\programacion\VCLs\zeos_mySQL\src\dbc;C:\programacion\VCLs\zeos_mySQL\src\parsesql;C:\programacion\VCLs\zeos_mySQL\src\plain;C:\programacion\VCLs\zeos_mySQL\src\external;C:\programacion\VCLs\include +Item4=..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\include;$(BCB)\include\vcl;C:\programacion\VCLs\zeos_mySQL\src\core;C:\programacion\VCLs\zeos_mySQL\src\dbc;C:\programacion\VCLs\zeos_mySQL\src\parsesql;C:\programacion\VCLs\zeos_mySQL\src\plain;C:\programacion\VCLs\zeos_mySQL\src\external;C:\programacion\VCLs\include +Item5=C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\include;$(BCB)\include\vcl;C:\programacion\VCLs\zeos_mySQL\src\core;C:\programacion\VCLs\zeos_mySQL\src\dbc;C:\programacion\VCLs\zeos_mySQL\src\parsesql;C:\programacion\VCLs\zeos_mySQL\src\plain;C:\programacion\VCLs\zeos_mySQL\src\external;C:\programacion\VCLs\include +Item6=C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\include;$(BCB)\include\vcl;C:\programacion\VCLs\zeos_mySQL\src\core;C:\programacion\VCLs\zeos_mySQL\src\dbc;C:\programacion\VCLs\zeos_mySQL\src\parsesql;C:\programacion\VCLs\zeos_mySQL\src\plain;C:\programacion\VCLs\zeos_mySQL\src\external +Item7=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\..\..\TPV win9x;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\core;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\dbc;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\parsesql;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\plain;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\external +Item8=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..;..\TVP1.1_to_myTPV;..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;$(BCB)\include;$(BCB)\include\vcl;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\zeos_mySQL\src\component;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\zeos_mySQL\src\core;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\zeos_mySQL\src\dbc;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\zeos_mySQL\src\parsesql;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\zeos_mySQL\src\plain;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\zeos_mySQL\src\external +Item9=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..;..\TVP1.1_to_myTPV;..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item10=..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\..\..\TPV win9x;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item11=..\common;..\;..\TVP1.1_to_myTPV;..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item12=..\TVP1.1_to_myTPV;..\..\..\TPV win9x;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item13=..\TVP1.1_to_myTPV;..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item14=..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item15=..\..\..\TPV win9x;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item16=..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item17=..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item18=..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item19=..\..\..\..\C++ Builder\VCLs\include;..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item20=..\..\..\..\C++ Builder\VCLs\include;..\..;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item21=..\..;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item22=..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item23=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item24=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\zeos_mySQL\common +Item25=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\include;$(BCB)\include\vcl +Item26=$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlLibraryPath] +Count=29 +Item0=src;C:\programacion\VCLs\TVidGrab;C:\Archivos de programa\Borland\CBuilder6\Projects;..\TPV_VENTAS win9x;..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\Projects\Lib;C:\programacion\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\obj;C:\programacion\VCLs\zeos_mySQL\packages\cbuilder6\build;C:\Archivos de programa\Borland\CBuilder6\quickrpt +Item1=src;C:\programacion\VCLs\TVidGrab;C:\Archivos de programa\Borland\CBuilder6\Projects;C:\Documents and Settings\jd\Mis documentos\CBuilder\controlHorario\src;..\TPV_VENTAS win9x;..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\Projects\Lib;C:\programacion\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\obj;C:\programacion\VCLs\zeos_mySQL\packages\cbuilder6\build;C:\Archivos de programa\Borland\CBuilder6\quickrpt +Item2=..\TPV_VENTAS win9x;..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\Projects\Lib;C:\programacion\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\obj;C:\programacion\VCLs\zeos_mySQL\packages\cbuilder6\build;C:\Archivos de programa\Borland\CBuilder6\quickrpt +Item3=..\TPV_VENTAS win9x;..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\Projects\Lib;C:\programacion\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\obj;C:\programacion\VCLs\zeos_mySQL\packages\cbuilder6\build +Item4=..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\Projects\Lib;C:\programacion\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\obj;C:\programacion\VCLs\zeos_mySQL\packages\cbuilder6\build +Item5=..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\Projects\Lib;C:\programacion\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\obj;C:\programacion\VCLs\zeos_mySQL\packages\cbuilder6 +Item6=..\..;C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\Projects\Lib;C:\programacion\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\obj +Item7=C:\programacion\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\QR_Facturas;$(BCB)\Projects\Lib;C:\programacion\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\obj +Item8=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\..\..\TPV win9x;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item9=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\src\component;..\QR_Designer;..\common;..;..\TVP1.1_to_myTPV;..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item10=..\QR_Designer;..\common;..\..\src;..\TVP1.1_to_myTPV;..\..\..\TPV win9x;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item11=..\common;..\;..\TVP1.1_to_myTPV;..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item12=..\TVP1.1_to_myTPV;..\..\..\TPV win9x;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item13=..\TVP1.1_to_myTPV;..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item14=..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item15=..\..\..\TPV win9x;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item16=..\..;..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item17=..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item18=..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common;..\..\obj +Item19=..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item20=..\QR_Facturas;..\..\..\..\C++ Builder\VCLs\include;..\..;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item21=..\..\..\..\C++ Builder\VCLs\include;..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item22=..\..\..\..\C++ Builder\VCLs\include;..\..;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item23=..\..;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item24=..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\common +Item25=..\..;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib +Item26=..\..\..\TPV win9x;..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib +Item27=..\..\..\..\C++ Builder\VCLs\zeos_mySQL\dbase;$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib +Item28=$(BCB)\Projects\Lib;..\..\..\..\C++ Builder\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=2 +Item0=$(BCB)\source\vcl +Item1=$(BCB)\source\vcl;..\..\bin\ + +[HistoryLists\hlConditionals] +Count=1 +Item0=_DEBUG + +[HistoryLists\hlIntOutputDir] +Count=6 +Item0=obj +Item1=obj\ +Item2=..\obj +Item3=..\..\obj +Item4=C:\Mis documentos\Fuentes de Programacion\TPVweb!\TPV win9x\obj +Item5=..\..\obj\ + +[HistoryLists\hlFinalOutputDir] +Count=4 +Item0=bin\ +Item1=..\bin\ +Item2=..\..\bin\ +Item3=..\..\bin + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +Launcher= +UseLauncher=0 +DebugCWD= +HostApplication= +RemoteHost= +RemotePath= +RemoteLauncher= +RemoteCWD= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=1 +LinkCGLIB=0 + +[CORBA] +AddServerUnit=1 +AddClientUnit=1 +PrecompiledHeaders=1 + + \ No newline at end of file diff --git a/controlHorario.~cpp b/controlHorario.~cpp new file mode 100644 index 0000000..49739c9 --- /dev/null +++ b/controlHorario.~cpp @@ -0,0 +1,33 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "splash.h" +//--------------------------------------------------------------------------- +USEFORM("src\main.cpp", Form1); +USEFORM("src\splash.cpp", splashScreen); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + + /***********************/ + splashScreen = new TsplashScreen(Application); + splashScreen->Show(); + splashScreen->Update(); + /***********************/ + + Application->CreateForm(__classid(TForm1), &Form1); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + + return 0; +} +//--------------------------------------------------------------------------- + diff --git a/obj/controlHorario.obj b/obj/controlHorario.obj new file mode 100644 index 0000000..3791428 Binary files /dev/null and b/obj/controlHorario.obj differ diff --git a/obj/main.obj b/obj/main.obj new file mode 100644 index 0000000..70ad806 Binary files /dev/null and b/obj/main.obj differ diff --git a/obj/splash.obj b/obj/splash.obj new file mode 100644 index 0000000..1491816 Binary files /dev/null and b/obj/splash.obj differ diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..5df87e7 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,534 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include +#include + +#include "main.h" +#include "splash.h" + +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma link "VidGrab" +#pragma link "ZAbstractDataset" +#pragma link "ZAbstractRODataset" +#pragma link "ZConnection" +#pragma link "ZDataset" +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ + currentUID = 0; + txt0->Caption = ""; + + camPreviewStarted = false; + pFondoAPP = new TPicture(); + + AnsiString filename; + + Randomize(); + filename = ExtractFileDir( Application->ExeName )+"\\bg\\bg0"+AnsiString(RandomRange(1,7))+".jpg"; + if ( FileExists(filename) ) + pFondoAPP->LoadFromFile(filename); + + Color = clBlack; + if ( pFondoAPP->Graphic && !pFondoAPP->Graphic->Empty ) + { + Image1->Picture->Assign(pFondoAPP); + Image1->Top = (this->Width-pFondoAPP->Width)/2; + Image1->Left = (this->Height-pFondoAPP->Height)/2; + Image1->Width = pFondoAPP->Width;//Min(this->Width,pFondoAPP->Width); + Image1->Height = pFondoAPP->Height;//Min(this->Height,pFondoAPP->Height); + +// Canvas->Draw( (this->Width-pFondoAPP->Width)/2,(this->Height-pFondoAPP->Height)/2,pFondoAPP->Graphic); + } + + + + VideoGrabber1->Visible = false; +// VideoGrabber1->StartPreview(); + if ( splashScreen ) + { + splashScreen->loaded_main = true; + if ( splashScreen->timeOut ) splashScreen->Close(); + } + + initDB(); + +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::initDB(void) +{ + TIniFile *ini; + ini = new TIniFile( ExtractFileDir( Application->ExeName ) + "\\controlHorario.INI" ); + + + ZConnection1->HostName = ini->ReadString( "DB", "Host", "localhost" ); + ZConnection1->Database = ini->ReadString( "DB", "DB", "controlHorario" ); + ZConnection1->LoginPrompt = ini->ReadBool( "DB", "LoginPrompt", false ); + ZConnection1->User = ini->ReadString( "DB", "Login", "controlHorario_user" ); + ZConnection1->Password = ini->ReadString( "DB", "Password", "controlHorario_pass" ); + ZConnection1->Port = ini->ReadInteger( "DB", "Port", 3306 ); + ZConnection1->Protocol = ini->ReadString( "DB", "protocol", "mysql-4.1" ); + + try { + ZConnection1->Connect(); + } catch(...) { + // nothing + ZConnection1AfterDisconnect(NULL); + } + + delete ini; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormPaint(TObject *Sender) +{ +/* + Color = clBlack; + if ( pFondoAPP->Graphic && !pFondoAPP->Graphic->Empty ) + Canvas->Draw( (this->Width-pFondoAPP->Width)/2,(this->Height-pFondoAPP->Height)/2,pFondoAPP->Graphic); +*/ +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::FormResize(TObject *Sender) +{ + + /* Recorrer todos los elementos y reubicarlos... + */ + int i,offsetX, offsetY; + if ( this->Width > 792 ) offsetX = (this->Width-792)/2; else offsetX = 0; + if ( this->Width > 566 ) offsetY = (this->Height-566)/2; else offsetY = 0; + Left = 0; + Top = 0; + + TComponent *Temp; + for ( i=this->ComponentCount-1; i>=0; i-- ) + { + Temp = this->Components[i]; + // only move components that are not controls + if (dynamic_cast(Temp) != NULL) + { + if ( Temp!=clock ) + { + ((TControl *)Temp)->Left += offsetX; + ((TControl *)Temp)->Top += offsetY; + } + } + } + + + +} +//--------------------------------------------------------------------------- +/* + if ( camPreviewStarted ) + VideoGrabber1->CaptureFrameTo (fc_TBitmap, ""); +*/ +//--------------------------------------------------------------------------- + +void __fastcall TForm1::VideoGrabber1FrameCaptureCompleted(TObject *Sender, + const TFrameData &FrameData, TFrameCaptureDest DestType, + AnsiString FileName, bool Success) +{ +// Graphics::TBitmap *Frame_Bitmap; + + + switch (DestType) { + case fc_BmpFile: +// Memo1->Lines->Add (FileName + " created"); + break; + + case fc_JpegFile: +// Memo1->Lines->Add (FileName + " created"); + break; + + case fc_TBitmap: +// Frame_Bitmap = (Graphics::TBitmap*) FrameData; + + //Requires "jpeg.hpp" to be included in the source file + TJPEGImage *jp = new TJPEGImage(); + try + { + jp->Assign(FrameData.Bitmap); + jp->SaveToFile("cam_"+AnsiString(FrameData.FrameNumber)+".jpg"); + } + __finally + { + delete jp; + } + + + break; + } + +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose) +{ + VideoGrabber1->StopPreview(); + if ( VideoGrabber1->Busy ) CanClose = false; +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::VideoGrabber1PreviewStarted(TObject *Sender) +{ + camPreviewStarted = true; + VideoGrabber1->Visible = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::Timer1Timer(TObject *Sender) +{ + clock->Caption = (TDateTime::CurrentTime()).TimeString(); + if ( !ZConnection1->Connected && nextTry>=0 ) + { + if ( nextTry==0 ) + { + try { + nextTry = -1; + ZConnection1->Connect(); + } catch(...) { + // nothing + ZConnection1AfterDisconnect(NULL); + } + } else { + txt0->Caption = "ERROR CONECTANDO DB ("+AnsiString(nextTry)+" sg.)"; + nextTry--; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key) +{ + if ( !ZConnection1->Connected ) return; + + if ( Key==VK_RETURN ) + { + if ( barCode01->Caption.Length() != 12 ) + { + showText("Error, código no válido","VUELVA A PASAR TARJETAS"); + currentUID = 0; + } else { + int prefijo = barCode01->Caption.SubString(1,2).ToIntDef(0); + int codigo = barCode01->Caption.SubString(3,10).ToIntDef(0); + switch ( prefijo ) + { + // Códigos de tarjetas + case 05: + if ( existeUsuario( codigo, &ultimoEstado, ¤tUser ) ) + { + if ( ultimoEstado=='E' ) + { + showText(currentUser,"Pase orden de Trabajo ó Tarjeta de Salida"); + currentUID = codigo; + } else { + if ( currentUID == codigo ) + { + picarEntradaUsuario( codigo ); + showText("ENTRADA CORRECTA", "ENTRADA CORRECTA"); + currentUID = 0; + } else { + showText(currentUser, "Vuelva a pasar Tarjeta de USUARIO"); + currentUID = codigo; + } + } + } else { + showText("Usuario inactivo","TARJETA NO VÁLIDA"); + currentUID = 0; + } + break; + // Orden de trabajo + case 50: + if ( currentUID > 0 && ultimoEstado=='E' ) + { + // Comprobamos que el operario no tenga abierta ninguna orden de trabajo + int oT = tieneOrdenTrabajoAbierta( currentUID ); + if ( oT>0 && oT!=codigo ) + { + showText("ERROR ORDEN de trabajo en curso","CIERRE LA ORDEN de trabajo número "+AnsiString(oT)); + currentUID = 0; + } else { + AnsiString estado; + + if ( existeOrdenTrabajo( codigo, currentUID, &estado ) ) + { + if ( estado=="A" ) + { + cierraTrabajo( currentUID, codigo ); + showText(currentUser,"CERRADA ORDEN de trabajo"); + } else { + iniciaTrabajo( currentUID, codigo ); + showText(currentUser,"INICIADA ORDEN de trabajo"); + } + } else { + showText("ORDEN de trabajo no activa","ó ASIGNADA A OTRO EMPLEADO"); + } + currentUID = 0; + } + } + break; + + // Comandos para el sistema + case 99: + switch( codigo ) + { + // Salida de usuario + case 1: + if ( currentUID>0 && ultimoEstado=='E' ) + { + cierraTrabajos( currentUID ); + picarSalidaUsuario( currentUID ); + showText(currentUser,"SALIDA CORRECTA"); + } else + showText("Pase primero tarjeta de usuario","USUARIO SIN IDENTIFICAR"); + break; + + + // Shutdown (Apagar el sistema) + case 1010: + break; + // Cerrar el programa + case 1005: + Close(); + break; + // Minimizar el programa + case 2: + Application->Minimize(); + break; + default: + showText("Error, código no válido","VUELVA A PASAR TARJETAS"); + } + currentUID = 0; + break; + case 0: + default: + showText("Error, código no válido","VUELVA A PASAR TARJETAS"); + currentUID = 0; + break; + } + } + + barCode01->Caption = ""; + barCode02->Caption = ""; + } else { + if ( barCode01->Caption.Length() > 12 ) + { + barCode01->Caption = ""; + barCode02->Caption = ""; + } + barCode01->Caption = barCode01->Caption + AnsiString(Key); + barCode02->Caption = barCode01->Caption; + } + +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::showText(AnsiString txt,AnsiString txtAux) +{ + Timer2->Enabled = false; + + txt0->Caption = txt; + txt1->Caption = txtAux; + Timer2->Enabled = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::Timer2Timer(TObject *Sender) +{ + txt0->Caption = ""; + txt1->Caption = ""; + Timer2->Enabled = false; +} +//--------------------------------------------------------------------------- +bool __fastcall TForm1::existeUsuario( int uid, char *ultimoEstado, AnsiString *user ) +{ + bool dev; + + // Comprobamos que exista el usuario + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("SELECT CONCAT_WS(' ',Nombre,Apellidos) operario FROM personas WHERE id="+AnsiString(uid)); + ZQuery1->Active = ZQuery1->Connection->Connected; + if ( ZQuery1->RecordCount>0 ) + { + *user = ZQuery1->FieldByName("operario")->AsString; + showText( ZQuery1->FieldByName("operario")->AsString,"" ); + + // Rescatamos el último estado de este usuario + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("SELECT flag FROM controlHorario_accesos WHERE idp="+AnsiString(uid)+" AND modid=0 ORDER BY id DESC LIMIT 0,1"); + ZQuery1->Active = ZQuery1->Connection->Connected; + if ( ZQuery1->RecordCount>0 && ZQuery1->FieldByName("flag")->AsString != "S" ) + *ultimoEstado = 'E'; + else + *ultimoEstado = 'S'; + + dev = true; + } else + dev = false; + + return dev; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::picarEntradaUsuario( int uid ) +{ + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("INSERT INTO controlHorario_accesos (timestamp,idp,evento,flag,modid,modlnk) VALUES (UNIX_TIMESTAMP(),"+AnsiString(uid)+",0,'E',0,0)"); + ZQuery1->ExecSQL(); +} +//--------------------------------------------------------------------------- +int __fastcall TForm1::tieneOrdenTrabajoAbierta( int uid ) +{ + int oT = 0; + + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("SELECT idpp FROM controlHorario_pProduccionPer WHERE estado='A' AND idp="+AnsiString(uid)); + ZQuery1->Active = ZQuery1->Connection->Connected; + + if ( ZQuery1->RecordCount> 0 ) + oT = ZQuery1->FieldByName("idpp")->AsInteger; + + return oT; +} +//--------------------------------------------------------------------------- +bool __fastcall TForm1::existeOrdenTrabajo( int orden, int uid, AnsiString *estado ) +{ + bool dev; + + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("SELECT estado FROM controlHorario_pProduccionPer WHERE idpp="+AnsiString(orden)+" AND idp="+AnsiString(uid)); + ZQuery1->Active = ZQuery1->Connection->Connected; + + if ( ZQuery1->RecordCount>0 ) + { + *estado = ZQuery1->FieldByName("estado")->AsString; + dev = true; + } else { + dev = false; + } + + return dev; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::cierraTrabajo( int uid, int orden ) +{ + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("UPDATE controlHorario_pProduccionPer SET estado='C' WHERE idpp="+AnsiString(orden)+" AND idp="+AnsiString(uid)); + ZQuery1->ExecSQL(); + + // Si no hay mas operarios trabajando en el parte + ZQuery2->SQL->Clear(); + ZQuery2->SQL->Add("SELECT COUNT(*) c FROM controlHorario_pProduccionPer WHERE estado='A' AND idpp="+AnsiString(orden)); + ZQuery2->Active = ZQuery2->Connection->Connected; + + // ...lo damos por concluido + if ( ZQuery2->FieldByName("c")->AsInteger<=0 ) + { + ZQuery2->SQL->Clear(); + ZQuery2->SQL->Add("UPDATE controlHorario_pProduccionCab SET estado='P' WHERE id="+AnsiString(orden) ); + ZQuery2->ExecSQL(); + } + + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("INSERT INTO controlHorario_accesos (timestamp,idp,evento,flag,modid,modlnk) VALUES (UNIX_TIMESTAMP(),"+AnsiString(uid)+",0,'S',36,"+AnsiString(orden)+")"); + ZQuery1->ExecSQL(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::iniciaTrabajo( int uid, int orden ) +{ + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("UPDATE controlHorario_pProduccionCab SET estado='A' WHERE id="+AnsiString(orden)); + ZQuery1->ExecSQL(); + + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("INSERT INTO controlHorario_pProduccionPer (idpp,idp,estado) VALUE ("+AnsiString(orden)+","+AnsiString(uid)+",'A') ON DUPLICATE KEY UPDATE estado='A'"); + ZQuery1->ExecSQL(); + + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("INSERT INTO controlHorario_accesos (timestamp,idp,evento,flag,modid,modlnk) VALUES (UNIX_TIMESTAMP(),"+AnsiString(uid)+",0,'E',36,"+AnsiString(orden)+")"); + ZQuery1->ExecSQL(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::cierraTrabajos( int uid ) +{ + int idpp; + + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("INSERT INTO controlHorario_accesos (timestamp,idp,evento,flag,modid,modlnk) "); + ZQuery1->SQL->Add(" SELECT UNIX_TIMESTAMP(),"+AnsiString(uid)+",0,'S',36,p.idpp "); + ZQuery1->SQL->Add(" FROM controlHorario_pProduccionPer p WHERE p.estado='A' AND p.idp="+AnsiString(uid)); + ZQuery1->ExecSQL(); + + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("SELECT idpp FROM controlHorario_pProduccionPer WHERE estado='A' AND idp="+AnsiString(uid)); + ZQuery1->Active = ZQuery1->Connection->Connected; + + ZQuery1->First(); + while( !ZQuery1->Eof ) + { + idpp = ZQuery1->FieldByName("idpp")->AsInteger; + + // Fijamos el estado del operario en este parte a cerrado + ZQuery2->SQL->Clear(); + ZQuery2->SQL->Add("UPDATE controlHorario_pProduccionPer SET estado='C' WHERE idpp="+AnsiString(idpp)+" AND idp="+AnsiString(uid)); + ZQuery2->ExecSQL(); + + // Si no hay mas operarios trabajando en el parte + ZQuery2->SQL->Clear(); + ZQuery2->SQL->Add("SELECT COUNT(*) c FROM controlHorario_pProduccionPer WHERE estado='A' AND idpp="+AnsiString(idpp)); + ZQuery2->Active = ZQuery2->Connection->Connected; + + // ...lo damos por concluido + if ( ZQuery2->FieldByName("c")->AsInteger<=0 ) + { + ZQuery2->SQL->Clear(); + ZQuery2->SQL->Add("UPDATE controlHorario_pProduccionCab SET estado='P' WHERE id="+AnsiString(idpp) ); + ZQuery2->ExecSQL(); + } + + ZQuery1->Next(); + } + + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("UPDATE controlHorario_pProduccionPer SET estado='C' WHERE estado='A' AND idp="+AnsiString(uid)); + ZQuery1->ExecSQL(); + + + + +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::picarSalidaUsuario( int uid ) +{ + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("INSERT INTO controlHorario_accesos (timestamp,idp,evento,flag,modid,modlnk) VALUES (UNIX_TIMESTAMP(),"+AnsiString(uid)+",0,'S',0,0)"); + ZQuery1->ExecSQL(); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::ZConnection1AfterDisconnect(TObject *Sender) +{ + // Reintentar conexión en 20sg + nextTry = 20; +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::ZConnection1BeforeConnect(TObject *Sender) +{ + txt0->Caption = "CONECTANDO A RED. Por favor, espere..."; + txt0->Caption = ";-)"; +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::ZConnection1AfterConnect(TObject *Sender) +{ + txt0->Caption = ""; + txt1->Caption = ""; +} +//--------------------------------------------------------------------------- + diff --git a/src/main.ddp b/src/main.ddp new file mode 100644 index 0000000..cdc0ee8 Binary files /dev/null and b/src/main.ddp differ diff --git a/src/main.dfm b/src/main.dfm new file mode 100644 index 0000000..a2f2292 --- /dev/null +++ b/src/main.dfm @@ -0,0 +1,214 @@ +object Form1: TForm1 + Left = 190 + Top = 109 + BorderStyle = bsNone + Caption = 'Form1' + ClientHeight = 566 + ClientWidth = 792 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + KeyPreview = True + OldCreateOrder = False + Position = poScreenCenter + WindowState = wsMaximized + OnCloseQuery = FormCloseQuery + OnKeyPress = FormKeyPress + OnPaint = FormPaint + OnResize = FormResize + PixelsPerInch = 96 + TextHeight = 13 + object Image1: TImage + Left = 80 + Top = 136 + Width = 105 + Height = 105 + end + object clock: TLabel + Left = 8 + Top = -24 + Width = 448 + Height = 113 + AutoSize = False + Caption = '00:00:00' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWhite + Font.Height = -96 + Font.Name = 'Arial Black' + Font.Style = [] + ParentFont = False + Transparent = True + end + object txt0: TLabel + Left = 0 + Top = 328 + Width = 793 + Height = 45 + Alignment = taCenter + AutoSize = False + Caption = 'control Horario v1.0a' + Font.Charset = DEFAULT_CHARSET + Font.Color = clMaroon + Font.Height = -32 + Font.Name = 'Arial Black' + Font.Style = [] + ParentFont = False + Transparent = True + end + object barCode01: TLabel + Left = 200 + Top = 424 + Width = 393 + Height = 61 + Alignment = taCenter + AutoSize = False + Caption = '0123456789012' + Font.Charset = DEFAULT_CHARSET + Font.Color = clOlive + Font.Height = -48 + Font.Name = 'Code128B' + Font.Style = [] + ParentFont = False + Transparent = True + end + object barCode02: TLabel + Left = 200 + Top = 464 + Width = 393 + Height = 61 + Alignment = taCenter + AutoSize = False + Caption = '0123456789012' + Font.Charset = DEFAULT_CHARSET + Font.Color = clOlive + Font.Height = -40 + Font.Name = 'Arial Black' + Font.Style = [] + ParentFont = False + Transparent = True + end + object txt1: TLabel + Left = 0 + Top = 368 + Width = 793 + Height = 45 + Alignment = taCenter + AutoSize = False + Caption = ';-)' + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -32 + Font.Name = 'Arial Black' + Font.Style = [] + ParentFont = False + Transparent = True + end + object VideoGrabber1: TVideoGrabber + Left = 464 + Top = 16 + Width = 320 + Height = 240 + Caption = 'VideoGrabber1' + Color = clNone + AutoStartPreview = True + AudioDevice = 0 + AudioFormat = af_default + AudioRendering = False + AutoConnectRelatedPins = True + AutoFileName = fn_Sequential + AutoFilePrefix = 'vg' + AutoRefreshPreview = False + AutoSize = True + AutoStartPlayer = True + AVICaptureCanPause = False + AVIFormatOpenDML = True + BurstCount = 3 + BorderStyle = bsNone + BurstInterval = 0 + BurstMode = False + BurstType = fc_TBitmap + BusyCursor = crHourGlass + AudioCapture = False + CaptureFileExt = 'avi' + ColorKeyEnabled = False + CompressionMode = cm_NoCompression + CompressionType = ct_Video + DVNativeInterleavedToAVI = False + DVRgb219 = False + DVReduceFrameRate = False + DVUseExternalAudio = False + FrameBuffers = 5 + FrameCaptureBeforeDrawing = False + FrameCaptureZoomSize = 100 + FrameGrabber = fg_BothStreams + FullScreenPreview = False + InvertedColors = False + JPEGPerformance = jpBestQuality + JPEGProgressiveDisplay = False + JPEGQuality = 100 + NormalCursor = crDefault + VideoPortEnabled = False + PlayerFastSeekSpeedRatio = 4 + PlayerSpeedRatio = 1 + PreallocCapFileEnabled = False + PreallocCapFileSizeInMB = 100 + PreallocCapFileRecreate = False + PreviewZoomSize = 100 + PlayerRefreshPausedDisplay = True + ReducePreviewCPULoad = False + StoreDeviceSettingsInRegistry = True + ShapeOnFrameEnabled = False + TextOnFrameEnabled = False + TextOnFrame_Left = 0 + TextOnFrame_Top = 0 + TextOnFrame_Right = 320 + TextOnFrameBkColor = clWhite + TextOnFrameAlign = tf_Left + TextOnFrameFont.Charset = DEFAULT_CHARSET + TextOnFrameFont.Color = clAqua + TextOnFrameFont.Height = -11 + TextOnFrameFont.Name = 'MS Sans Serif' + TextOnFrameFont.Style = [] + TextOnFrameString = 'this text can be written over video frames' + TextOnFrameTransparent = True + TVAutoTuneWeakChannels = False + TranslateMouseCoordinates = True + Version = 'v6.7 (build 6.7.7), February 12, 2004' + VideoDevice = 0 + Visible = True + OnFrameCaptureCompleted = VideoGrabber1FrameCaptureCompleted + OnPreviewStarted = VideoGrabber1PreviewStarted + end + object Timer1: TTimer + OnTimer = Timer1Timer + end + object Timer2: TTimer + Enabled = False + Interval = 5000 + OnTimer = Timer2Timer + Top = 32 + end + object ZConnection1: TZConnection + Protocol = 'mysql-4.1' + BeforeConnect = ZConnection1BeforeConnect + AfterConnect = ZConnection1AfterConnect + AfterDisconnect = ZConnection1AfterDisconnect + Left = 232 + Top = 184 + end + object ZQuery1: TZQuery + Connection = ZConnection1 + Params = <> + Left = 232 + Top = 216 + end + object ZQuery2: TZQuery + Connection = ZConnection1 + Params = <> + Left = 232 + Top = 248 + end +end diff --git a/src/main.h b/src/main.h new file mode 100644 index 0000000..ec14b33 --- /dev/null +++ b/src/main.h @@ -0,0 +1,73 @@ +//--------------------------------------------------------------------------- + +#ifndef mainH +#define mainH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include "VidGrab.hpp" +#include +#include "ZAbstractDataset.hpp" +#include "ZAbstractRODataset.hpp" +#include "ZConnection.hpp" +#include "ZDataset.hpp" +#include +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TVideoGrabber *VideoGrabber1; + TTimer *Timer1; + TLabel *clock; + TLabel *txt0; + TTimer *Timer2; + TImage *Image1; + TLabel *barCode01; + TLabel *barCode02; + TZConnection *ZConnection1; + TZQuery *ZQuery1; + TZQuery *ZQuery2; + TLabel *txt1; + void __fastcall FormPaint(TObject *Sender); + void __fastcall FormResize(TObject *Sender); + void __fastcall VideoGrabber1FrameCaptureCompleted(TObject *Sender, + const TFrameData &FrameData, TFrameCaptureDest DestType, + AnsiString FileName, bool Success); + void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose); + void __fastcall VideoGrabber1PreviewStarted(TObject *Sender); + void __fastcall Timer1Timer(TObject *Sender); + void __fastcall FormKeyPress(TObject *Sender, char &Key); + void __fastcall Timer2Timer(TObject *Sender); + void __fastcall ZConnection1AfterDisconnect(TObject *Sender); + void __fastcall ZConnection1BeforeConnect(TObject *Sender); + void __fastcall ZConnection1AfterConnect(TObject *Sender); +private: // User declarations + TPicture *pFondoAPP; + bool camPreviewStarted; + void __fastcall showText(AnsiString txt, AnsiString txtAux); + + bool __fastcall existeUsuario( int uid, char *ultimoEstado, AnsiString *user ); + void __fastcall picarEntradaUsuario( int uid ); + int __fastcall tieneOrdenTrabajoAbierta( int uid ); + bool __fastcall existeOrdenTrabajo( int orden, int uid, AnsiString *estado ); + void __fastcall cierraTrabajo( int uid, int orden ); + void __fastcall iniciaTrabajo( int uid, int orden ); + void __fastcall cierraTrabajos( int uid ); + void __fastcall picarSalidaUsuario( int uid ); + + void __fastcall initDB(void); + + char ultimoEstado; + AnsiString currentUser; + int currentUID; + int nextTry; + +public: // User declarations + __fastcall TForm1(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif diff --git a/src/main.~cpp b/src/main.~cpp new file mode 100644 index 0000000..6e0c57e --- /dev/null +++ b/src/main.~cpp @@ -0,0 +1,534 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include +#include + +#include "main.h" +#include "splash.h" + +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma link "VidGrab" +#pragma link "ZAbstractDataset" +#pragma link "ZAbstractRODataset" +#pragma link "ZConnection" +#pragma link "ZDataset" +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ + currentUID = 0; + txt0->Caption = ""; + + camPreviewStarted = false; + pFondoAPP = new TPicture(); + + AnsiString filename; + + Randomize(); + filename = ExtractFileDir( Application->ExeName )+"\\bg\\bg0"+AnsiString(RandomRange(1,7))+".jpg"; + if ( FileExists(filename) ) + pFondoAPP->LoadFromFile(filename); + + Color = clBlack; + if ( pFondoAPP->Graphic && !pFondoAPP->Graphic->Empty ) + { + Image1->Picture->Assign(pFondoAPP); + Image1->Top = (this->Width-pFondoAPP->Width)/2; + Image1->Left = (this->Height-pFondoAPP->Height)/2; + Image1->Width = pFondoAPP->Width;//Min(this->Width,pFondoAPP->Width); + Image1->Height = pFondoAPP->Height;//Min(this->Height,pFondoAPP->Height); + +// Canvas->Draw( (this->Width-pFondoAPP->Width)/2,(this->Height-pFondoAPP->Height)/2,pFondoAPP->Graphic); + } + + + + VideoGrabber1->Visible = false; +// VideoGrabber1->StartPreview(); + if ( splashScreen ) + { + splashScreen->loaded_main = true; + if ( splashScreen->timeOut ) splashScreen->Close(); + } + + initDB(); + +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::initDB(void) +{ + TIniFile *ini; + ini = new TIniFile( ExtractFileDir( Application->ExeName ) + "\\controlHorario.INI" ); + + + ZConnection1->HostName = ini->ReadString( "DB", "Host", "localhost" ); + ZConnection1->Database = ini->ReadString( "DB", "DB", "controlHorario" ); + ZConnection1->LoginPrompt = ini->ReadBool( "DB", "LoginPrompt", false ); + ZConnection1->User = ini->ReadString( "DB", "Login", "controlHorario_user" ); + ZConnection1->Password = ini->ReadString( "DB", "Password", "controlHorario_pass" ); + ZConnection1->Port = ini->ReadInteger( "DB", "Port", 3306 ); + ZConnection1->Protocol = ini->ReadString( "DB", "protocol", "mysql-4.1" ); + + try { + ZConnection1->Connect(); + } catch(...) { + // nothing + ZConnection1AfterDisconnect(NULL); + } + + delete ini; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormPaint(TObject *Sender) +{ +/* + Color = clBlack; + if ( pFondoAPP->Graphic && !pFondoAPP->Graphic->Empty ) + Canvas->Draw( (this->Width-pFondoAPP->Width)/2,(this->Height-pFondoAPP->Height)/2,pFondoAPP->Graphic); +*/ +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::FormResize(TObject *Sender) +{ + + /* Recorrer todos los elementos y reubicarlos... + */ + int i,offsetX, offsetY; + if ( this->Width > 792 ) offsetX = (this->Width-792)/2; else offsetX = 0; + if ( this->Width > 566 ) offsetY = (this->Height-566)/2; else offsetY = 0; + Left = 0; + Top = 0; + + TComponent *Temp; + for ( i=this->ComponentCount-1; i>=0; i-- ) + { + Temp = this->Components[i]; + // only move components that are not controls + if (dynamic_cast(Temp) != NULL) + { + if ( Temp!=clock ) + { + ((TControl *)Temp)->Left += offsetX; + ((TControl *)Temp)->Top += offsetY; + } + } + } + + + +} +//--------------------------------------------------------------------------- +/* + if ( camPreviewStarted ) + VideoGrabber1->CaptureFrameTo (fc_TBitmap, ""); +*/ +//--------------------------------------------------------------------------- + +void __fastcall TForm1::VideoGrabber1FrameCaptureCompleted(TObject *Sender, + const TFrameData &FrameData, TFrameCaptureDest DestType, + AnsiString FileName, bool Success) +{ +// Graphics::TBitmap *Frame_Bitmap; + + + switch (DestType) { + case fc_BmpFile: +// Memo1->Lines->Add (FileName + " created"); + break; + + case fc_JpegFile: +// Memo1->Lines->Add (FileName + " created"); + break; + + case fc_TBitmap: +// Frame_Bitmap = (Graphics::TBitmap*) FrameData; + + //Requires "jpeg.hpp" to be included in the source file + TJPEGImage *jp = new TJPEGImage(); + try + { + jp->Assign(FrameData.Bitmap); + jp->SaveToFile("cam_"+AnsiString(FrameData.FrameNumber)+".jpg"); + } + __finally + { + delete jp; + } + + + break; + } + +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose) +{ + VideoGrabber1->StopPreview(); + if ( VideoGrabber1->Busy ) CanClose = false; +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::VideoGrabber1PreviewStarted(TObject *Sender) +{ + camPreviewStarted = true; + VideoGrabber1->Visible = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::Timer1Timer(TObject *Sender) +{ + clock->Caption = (TDateTime::CurrentTime()).TimeString(); + if ( !ZConnection1->Connected && nextTry>=0 ) + { + if ( nextTry==0 ) + { + try { + nextTry = -1; + ZConnection1->Connect(); + } catch(...) { + // nothing + ZConnection1AfterDisconnect(NULL); + } + } else { + txt0->Caption = "ERROR CONECTANDO DB ("+AnsiString(nextTry)+" sg.)"; + nextTry--; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key) +{ + if ( !ZConnection1->Connected ) return; + + if ( Key==VK_RETURN ) + { + if ( barCode01->Caption.Length() != 12 ) + { + showText("Error, código no válido","VUELVA A PASAR TARJETAS"); + currentUID = 0; + } else { + int prefijo = barCode01->Caption.SubString(1,2).ToIntDef(0); + int codigo = barCode01->Caption.SubString(3,10).ToIntDef(0); + switch ( prefijo ) + { + // Códigos de tarjetas + case 05: + if ( existeUsuario( codigo, &ultimoEstado, ¤tUser ) ) + { + if ( ultimoEstado=='E' ) + { + showText(currentUser,"Pase orden de Trabajo ó Tarjeta de Salida"); + currentUID = codigo; + } else { + if ( currentUID == codigo ) + { + picarEntradaUsuario( codigo ); + showText("ENTRADA CORRECTA", "ENTRADA CORRECTA"); + currentUID = 0; + } else { + showText(currentUser, "Vuelva a pasar Tarjeta de USUARIO"); + currentUID = codigo; + } + } + } else { + showText("Usuario inactivo","TARJETA NO VÁLIDA"); + currentUID = 0; + } + break; + // Orden de trabajo + case 50: + if ( currentUID > 0 && ultimoEstado=='E' ) + { + // Comprobamos que el operario no tenga abierta ninguna orden de trabajo + int oT = tieneOrdenTrabajoAbierta( currentUID ); + if ( oT>0 ) + { + showText("ERROR ORDEN de trabajo en curso","CIERRE LA ORDEN de trabajo número "+AnsiString(oT)); + currentUID = 0; + } else { + AnsiString estado; + + if ( existeOrdenTrabajo( codigo, currentUID, &estado ) ) + { + if ( estado=="A" ) + { + cierraTrabajo( currentUID, codigo ); + showText(currentUser,"CERRADA ORDEN de trabajo"); + } else { + iniciaTrabajo( currentUID, codigo ); + showText(currentUser,"INICIADA ORDEN de trabajo"); + } + } else { + showText("ORDEN de trabajo no activa","ó ASIGNADA A OTRO EMPLEADO"); + } + currentUID = 0; + } + } + break; + + // Comandos para el sistema + case 99: + switch( codigo ) + { + // Salida de usuario + case 1: + if ( currentUID>0 && ultimoEstado=='E' ) + { + cierraTrabajos( currentUID ); + picarSalidaUsuario( currentUID ); + showText(currentUser,"SALIDA CORRECTA"); + } else + showText("Pase primero tarjeta de usuario","USUARIO SIN IDENTIFICAR"); + break; + + + // Shutdown (Apagar el sistema) + case 1010: + break; + // Cerrar el programa + case 1005: + Close(); + break; + // Minimizar el programa + case 2: + Application->Minimize(); + break; + default: + showText("Error, código no válido","VUELVA A PASAR TARJETAS"); + } + currentUID = 0; + break; + case 0: + default: + showText("Error, código no válido","VUELVA A PASAR TARJETAS"); + currentUID = 0; + break; + } + } + + barCode01->Caption = ""; + barCode02->Caption = ""; + } else { + if ( barCode01->Caption.Length() > 12 ) + { + barCode01->Caption = ""; + barCode02->Caption = ""; + } + barCode01->Caption = barCode01->Caption + AnsiString(Key); + barCode02->Caption = barCode01->Caption; + } + +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::showText(AnsiString txt,AnsiString txtAux) +{ + Timer2->Enabled = false; + + txt0->Caption = txt; + txt1->Caption = txtAux; + Timer2->Enabled = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::Timer2Timer(TObject *Sender) +{ + txt0->Caption = ""; + txt1->Caption = ""; + Timer2->Enabled = false; +} +//--------------------------------------------------------------------------- +bool __fastcall TForm1::existeUsuario( int uid, char *ultimoEstado, AnsiString *user ) +{ + bool dev; + + // Comprobamos que exista el usuario + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("SELECT CONCAT_WS(' ',Nombre,Apellidos) operario FROM personas WHERE id="+AnsiString(uid)); + ZQuery1->Active = ZQuery1->Connection->Connected; + if ( ZQuery1->RecordCount>0 ) + { + *user = ZQuery1->FieldByName("operario")->AsString; + showText( ZQuery1->FieldByName("operario")->AsString,"" ); + + // Rescatamos el último estado de este usuario + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("SELECT flag FROM controlHorario_accesos WHERE idp="+AnsiString(uid)+" AND modid=0 ORDER BY id DESC LIMIT 0,1"); + ZQuery1->Active = ZQuery1->Connection->Connected; + if ( ZQuery1->RecordCount>0 && ZQuery1->FieldByName("flag")->AsString != "S" ) + *ultimoEstado = 'E'; + else + *ultimoEstado = 'S'; + + dev = true; + } else + dev = false; + + return dev; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::picarEntradaUsuario( int uid ) +{ + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("INSERT INTO controlHorario_accesos (timestamp,idp,evento,flag,modid,modlnk) VALUES (UNIX_TIMESTAMP(),"+AnsiString(uid)+",0,'E',0,0)"); + ZQuery1->ExecSQL(); +} +//--------------------------------------------------------------------------- +int __fastcall TForm1::tieneOrdenTrabajoAbierta( int uid ) +{ + int oT = 0; + + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("SELECT idpp FROM controlHorario_pProduccionPer WHERE estado='A' AND idp="+AnsiString(uid)); + ZQuery1->Active = ZQuery1->Connection->Connected; + + if ( ZQuery1->RecordCount> 0 ) + oT = ZQuery1->FieldByName("idpp")->AsInteger; + + return oT; +} +//--------------------------------------------------------------------------- +bool __fastcall TForm1::existeOrdenTrabajo( int orden, int uid, AnsiString *estado ) +{ + bool dev; + + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("SELECT estado FROM controlHorario_pProduccionPer WHERE idpp="+AnsiString(orden)+" AND idp="+AnsiString(uid)); + ZQuery1->Active = ZQuery1->Connection->Connected; + + if ( ZQuery1->RecordCount>0 ) + { + *estado = ZQuery1->FieldByName("estado")->AsString; + dev = true; + } else { + dev = false; + } + + return dev; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::cierraTrabajo( int uid, int orden ) +{ + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("UPDATE controlHorario_pProduccionPer SET estado='C' WHERE idpp="+AnsiString(orden)+" AND idp="+AnsiString(uid)); + ZQuery1->ExecSQL(); + + // Si no hay mas operarios trabajando en el parte + ZQuery2->SQL->Clear(); + ZQuery2->SQL->Add("SELECT COUNT(*) c FROM controlHorario_pProduccionPer WHERE estado='A' AND idpp="+AnsiString(orden)); + ZQuery2->Active = ZQuery2->Connection->Connected; + + // ...lo damos por concluido + if ( ZQuery2->FieldByName("c")->AsInteger<=0 ) + { + ZQuery2->SQL->Clear(); + ZQuery2->SQL->Add("UPDATE controlHorario_pProduccionCab SET estado='P' WHERE id="+AnsiString(orden) ); + ZQuery2->ExecSQL(); + } + + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("INSERT INTO controlHorario_accesos (timestamp,idp,evento,flag,modid,modlnk) VALUES (UNIX_TIMESTAMP(),"+AnsiString(uid)+",0,'S',36,"+AnsiString(orden)+")"); + ZQuery1->ExecSQL(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::iniciaTrabajo( int uid, int orden ) +{ + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("UPDATE controlHorario_pProduccionCab SET estado='A' WHERE id="+AnsiString(orden)); + ZQuery1->ExecSQL(); + + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("INSERT INTO controlHorario_pProduccionPer (idpp,idp,estado) VALUE ("+AnsiString(orden)+","+AnsiString(uid)+",'A') ON DUPLICATE KEY UPDATE estado='A'"); + ZQuery1->ExecSQL(); + + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("INSERT INTO controlHorario_accesos (timestamp,idp,evento,flag,modid,modlnk) VALUES (UNIX_TIMESTAMP(),"+AnsiString(uid)+",0,'E',36,"+AnsiString(orden)+")"); + ZQuery1->ExecSQL(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::cierraTrabajos( int uid ) +{ + int idpp; + + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("INSERT INTO controlHorario_accesos (timestamp,idp,evento,flag,modid,modlnk) "); + ZQuery1->SQL->Add(" SELECT UNIX_TIMESTAMP(),"+AnsiString(uid)+",0,'S',36,p.idpp "); + ZQuery1->SQL->Add(" FROM controlHorario_pProduccionPer p WHERE p.estado='A' AND p.idp="+AnsiString(uid)); + ZQuery1->ExecSQL(); + + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("SELECT idpp FROM controlHorario_pProduccionPer WHERE estado='A' AND idp="+AnsiString(uid)); + ZQuery1->Active = ZQuery1->Connection->Connected; + + ZQuery1->First(); + while( !ZQuery1->Eof ) + { + idpp = ZQuery1->FieldByName("idpp")->AsInteger; + + // Fijamos el estado del operario en este parte a cerrado + ZQuery2->SQL->Clear(); + ZQuery2->SQL->Add("UPDATE controlHorario_pProduccionPer SET estado='C' WHERE idpp="+AnsiString(idpp)+" AND idp="+AnsiString(uid)); + ZQuery2->ExecSQL(); + + // Si no hay mas operarios trabajando en el parte + ZQuery2->SQL->Clear(); + ZQuery2->SQL->Add("SELECT COUNT(*) c FROM controlHorario_pProduccionPer WHERE estado='A' AND idpp="+AnsiString(idpp)); + ZQuery2->Active = ZQuery2->Connection->Connected; + + // ...lo damos por concluido + if ( ZQuery2->FieldByName("c")->AsInteger<=0 ) + { + ZQuery2->SQL->Clear(); + ZQuery2->SQL->Add("UPDATE controlHorario_pProduccionCab SET estado='P' WHERE id="+AnsiString(idpp) ); + ZQuery2->ExecSQL(); + } + + ZQuery1->Next(); + } + + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("UPDATE controlHorario_pProduccionPer SET estado='C' WHERE estado='A' AND idp="+AnsiString(uid)); + ZQuery1->ExecSQL(); + + + + +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::picarSalidaUsuario( int uid ) +{ + ZQuery1->SQL->Clear(); + ZQuery1->SQL->Add("INSERT INTO controlHorario_accesos (timestamp,idp,evento,flag,modid,modlnk) VALUES (UNIX_TIMESTAMP(),"+AnsiString(uid)+",0,'S',0,0)"); + ZQuery1->ExecSQL(); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::ZConnection1AfterDisconnect(TObject *Sender) +{ + // Reintentar conexión en 20sg + nextTry = 20; +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::ZConnection1BeforeConnect(TObject *Sender) +{ + txt0->Caption = "CONECTANDO A RED. Por favor, espere..."; + txt0->Caption = ";-)"; +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::ZConnection1AfterConnect(TObject *Sender) +{ + txt0->Caption = ""; + txt1->Caption = ""; +} +//--------------------------------------------------------------------------- + diff --git a/src/main.~ddp b/src/main.~ddp new file mode 100644 index 0000000..cdc0ee8 Binary files /dev/null and b/src/main.~ddp differ diff --git a/src/main.~dfm b/src/main.~dfm new file mode 100644 index 0000000..a2f2292 --- /dev/null +++ b/src/main.~dfm @@ -0,0 +1,214 @@ +object Form1: TForm1 + Left = 190 + Top = 109 + BorderStyle = bsNone + Caption = 'Form1' + ClientHeight = 566 + ClientWidth = 792 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + KeyPreview = True + OldCreateOrder = False + Position = poScreenCenter + WindowState = wsMaximized + OnCloseQuery = FormCloseQuery + OnKeyPress = FormKeyPress + OnPaint = FormPaint + OnResize = FormResize + PixelsPerInch = 96 + TextHeight = 13 + object Image1: TImage + Left = 80 + Top = 136 + Width = 105 + Height = 105 + end + object clock: TLabel + Left = 8 + Top = -24 + Width = 448 + Height = 113 + AutoSize = False + Caption = '00:00:00' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWhite + Font.Height = -96 + Font.Name = 'Arial Black' + Font.Style = [] + ParentFont = False + Transparent = True + end + object txt0: TLabel + Left = 0 + Top = 328 + Width = 793 + Height = 45 + Alignment = taCenter + AutoSize = False + Caption = 'control Horario v1.0a' + Font.Charset = DEFAULT_CHARSET + Font.Color = clMaroon + Font.Height = -32 + Font.Name = 'Arial Black' + Font.Style = [] + ParentFont = False + Transparent = True + end + object barCode01: TLabel + Left = 200 + Top = 424 + Width = 393 + Height = 61 + Alignment = taCenter + AutoSize = False + Caption = '0123456789012' + Font.Charset = DEFAULT_CHARSET + Font.Color = clOlive + Font.Height = -48 + Font.Name = 'Code128B' + Font.Style = [] + ParentFont = False + Transparent = True + end + object barCode02: TLabel + Left = 200 + Top = 464 + Width = 393 + Height = 61 + Alignment = taCenter + AutoSize = False + Caption = '0123456789012' + Font.Charset = DEFAULT_CHARSET + Font.Color = clOlive + Font.Height = -40 + Font.Name = 'Arial Black' + Font.Style = [] + ParentFont = False + Transparent = True + end + object txt1: TLabel + Left = 0 + Top = 368 + Width = 793 + Height = 45 + Alignment = taCenter + AutoSize = False + Caption = ';-)' + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -32 + Font.Name = 'Arial Black' + Font.Style = [] + ParentFont = False + Transparent = True + end + object VideoGrabber1: TVideoGrabber + Left = 464 + Top = 16 + Width = 320 + Height = 240 + Caption = 'VideoGrabber1' + Color = clNone + AutoStartPreview = True + AudioDevice = 0 + AudioFormat = af_default + AudioRendering = False + AutoConnectRelatedPins = True + AutoFileName = fn_Sequential + AutoFilePrefix = 'vg' + AutoRefreshPreview = False + AutoSize = True + AutoStartPlayer = True + AVICaptureCanPause = False + AVIFormatOpenDML = True + BurstCount = 3 + BorderStyle = bsNone + BurstInterval = 0 + BurstMode = False + BurstType = fc_TBitmap + BusyCursor = crHourGlass + AudioCapture = False + CaptureFileExt = 'avi' + ColorKeyEnabled = False + CompressionMode = cm_NoCompression + CompressionType = ct_Video + DVNativeInterleavedToAVI = False + DVRgb219 = False + DVReduceFrameRate = False + DVUseExternalAudio = False + FrameBuffers = 5 + FrameCaptureBeforeDrawing = False + FrameCaptureZoomSize = 100 + FrameGrabber = fg_BothStreams + FullScreenPreview = False + InvertedColors = False + JPEGPerformance = jpBestQuality + JPEGProgressiveDisplay = False + JPEGQuality = 100 + NormalCursor = crDefault + VideoPortEnabled = False + PlayerFastSeekSpeedRatio = 4 + PlayerSpeedRatio = 1 + PreallocCapFileEnabled = False + PreallocCapFileSizeInMB = 100 + PreallocCapFileRecreate = False + PreviewZoomSize = 100 + PlayerRefreshPausedDisplay = True + ReducePreviewCPULoad = False + StoreDeviceSettingsInRegistry = True + ShapeOnFrameEnabled = False + TextOnFrameEnabled = False + TextOnFrame_Left = 0 + TextOnFrame_Top = 0 + TextOnFrame_Right = 320 + TextOnFrameBkColor = clWhite + TextOnFrameAlign = tf_Left + TextOnFrameFont.Charset = DEFAULT_CHARSET + TextOnFrameFont.Color = clAqua + TextOnFrameFont.Height = -11 + TextOnFrameFont.Name = 'MS Sans Serif' + TextOnFrameFont.Style = [] + TextOnFrameString = 'this text can be written over video frames' + TextOnFrameTransparent = True + TVAutoTuneWeakChannels = False + TranslateMouseCoordinates = True + Version = 'v6.7 (build 6.7.7), February 12, 2004' + VideoDevice = 0 + Visible = True + OnFrameCaptureCompleted = VideoGrabber1FrameCaptureCompleted + OnPreviewStarted = VideoGrabber1PreviewStarted + end + object Timer1: TTimer + OnTimer = Timer1Timer + end + object Timer2: TTimer + Enabled = False + Interval = 5000 + OnTimer = Timer2Timer + Top = 32 + end + object ZConnection1: TZConnection + Protocol = 'mysql-4.1' + BeforeConnect = ZConnection1BeforeConnect + AfterConnect = ZConnection1AfterConnect + AfterDisconnect = ZConnection1AfterDisconnect + Left = 232 + Top = 184 + end + object ZQuery1: TZQuery + Connection = ZConnection1 + Params = <> + Left = 232 + Top = 216 + end + object ZQuery2: TZQuery + Connection = ZConnection1 + Params = <> + Left = 232 + Top = 248 + end +end diff --git a/src/main.~h b/src/main.~h new file mode 100644 index 0000000..ec14b33 --- /dev/null +++ b/src/main.~h @@ -0,0 +1,73 @@ +//--------------------------------------------------------------------------- + +#ifndef mainH +#define mainH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include "VidGrab.hpp" +#include +#include "ZAbstractDataset.hpp" +#include "ZAbstractRODataset.hpp" +#include "ZConnection.hpp" +#include "ZDataset.hpp" +#include +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TVideoGrabber *VideoGrabber1; + TTimer *Timer1; + TLabel *clock; + TLabel *txt0; + TTimer *Timer2; + TImage *Image1; + TLabel *barCode01; + TLabel *barCode02; + TZConnection *ZConnection1; + TZQuery *ZQuery1; + TZQuery *ZQuery2; + TLabel *txt1; + void __fastcall FormPaint(TObject *Sender); + void __fastcall FormResize(TObject *Sender); + void __fastcall VideoGrabber1FrameCaptureCompleted(TObject *Sender, + const TFrameData &FrameData, TFrameCaptureDest DestType, + AnsiString FileName, bool Success); + void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose); + void __fastcall VideoGrabber1PreviewStarted(TObject *Sender); + void __fastcall Timer1Timer(TObject *Sender); + void __fastcall FormKeyPress(TObject *Sender, char &Key); + void __fastcall Timer2Timer(TObject *Sender); + void __fastcall ZConnection1AfterDisconnect(TObject *Sender); + void __fastcall ZConnection1BeforeConnect(TObject *Sender); + void __fastcall ZConnection1AfterConnect(TObject *Sender); +private: // User declarations + TPicture *pFondoAPP; + bool camPreviewStarted; + void __fastcall showText(AnsiString txt, AnsiString txtAux); + + bool __fastcall existeUsuario( int uid, char *ultimoEstado, AnsiString *user ); + void __fastcall picarEntradaUsuario( int uid ); + int __fastcall tieneOrdenTrabajoAbierta( int uid ); + bool __fastcall existeOrdenTrabajo( int orden, int uid, AnsiString *estado ); + void __fastcall cierraTrabajo( int uid, int orden ); + void __fastcall iniciaTrabajo( int uid, int orden ); + void __fastcall cierraTrabajos( int uid ); + void __fastcall picarSalidaUsuario( int uid ); + + void __fastcall initDB(void); + + char ultimoEstado; + AnsiString currentUser; + int currentUID; + int nextTry; + +public: // User declarations + __fastcall TForm1(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif diff --git a/src/splash.cpp b/src/splash.cpp new file mode 100644 index 0000000..812d94b --- /dev/null +++ b/src/splash.cpp @@ -0,0 +1,24 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include "splash.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TsplashScreen *splashScreen; +//--------------------------------------------------------------------------- +__fastcall TsplashScreen::TsplashScreen(TComponent* Owner) + : TForm(Owner) +{ + timeOut = false; + +} +//--------------------------------------------------------------------------- +void __fastcall TsplashScreen::Timer1Timer(TObject *Sender) +{ + timeOut = true; + if ( loaded_main ) Close(); +} +//--------------------------------------------------------------------------- diff --git a/src/splash.dfm b/src/splash.dfm new file mode 100644 index 0000000..f311057 --- /dev/null +++ b/src/splash.dfm @@ -0,0 +1,581 @@ +object splashScreen: TsplashScreen + Left = 510 + Top = 284 + BorderStyle = bsNone + Caption = 'splashScreen' + ClientHeight = 135 + ClientWidth = 385 + Color = clWhite + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object Image1: TImage + Left = 328 + Top = 40 + Width = 58 + Height = 92 + AutoSize = True + Picture.Data = { + 07544269746D6170763F0000424D763F00000000000036000000280000003A00 + 00005C0000000100180000000000403F0000C40E0000C40E0000000000000000 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFF2FFFFF1FFFFF8FFFEFCFFFC + FFFFFCFFFFFEFEFFFFFBFFFFF5F9FDF7F7FCFFF3FAFFEDF1FFE8E9FFDEDAFFC5 + C2FFB5BAFFABB3FF989EFF989EFF9BA0FF9FA5FFBBC1FFC9CFFFDDE5FFDFE8FF + E1ECFFE8F5FFEFFCFFF3FFFFF4FFF7E8F6E4FBFFF9FDFFFBFDFFFCFDFFFEFFFF + FFFFFEFFFFFDFFFFFDFFFFFCFFFFFCFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFBFFFFF4FFFFF2FFFFF8FFFFFBFFFEFEFFFDFFFFFEFFFFFEFFFFFEFFFBFCFF + F4F8FFE6EAFFCACDFFA4A5FF7874E5504ED02B2FBE2429C1161AAF191DB11B1F + AE1C22AB3539BD3E43BE6064D4989EFDD4DAFFE6EEFFE7F0FFE3F1FFEFFEFFF4 + FFFEFAFFFEFBFFFCFBFFFEFDFFFEFFFFFFFFFEFFFFFDFFFFFDFFFFFDFFFFFDFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFF8FFFFF7FFFFF7FFFFF8FFFF + FBFFFEFEFFFDFFFFFAFFF5F0FFF4F2FFDBDAFF9D9EEF5353BD22219F10119F11 + 10AE0807B50808BA0000AD0407AF0608AC0104A31213B11514B01411AA1F1BAA + 3B37B87171DDBCC0FFE6EEFFE8F4FFE6F2FFF4FDFFF8FFFFFAFFFFFBFFFEFDFF + FEFFFFFEFFFFFFFFFEFFFFFDFFFFFDFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFEFFFFFCFFFFFBFFFFF9FFFFF9FFFFFBFFFEFFFDFAFFF8F5FFF3EDFFB5AEFF + 5F59C4231F9D0E0D9F1212B21010BA0405BB0501C40906CD0303C10D0FC70D0F + C10205B40C0BBF0B07BE0700B8130ABF170EB91811A8322FAD6F73D9B6C0FFE4 + F0FFEFF7FFF4FCFFF6FEFFF8FFFFFBFFFFFFFFFCFFFFFCFFFFFEFFFEFFFFFDFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFDFEFFFDFEFFFDFFFEF8FEF9F4FB + F8F6FDFFF3F6FFE7E7FF8781E04941BE180DA91208B8110CC60100C20000C006 + 09D00100CF0400D00402CA0505C70507C30406C30403C70400CB0E05D80300C8 + 0600C6150AC50D08AB0E0D994A4EC49BA3FCE8F0FFEDF7FFF1FAFFF3FBFFF8FF + FFFCFFFDFEFEF8FFFFFBFFFFFCFFFEFE0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD + FEFFFAFBFFFAFCFFF8FFFFF4FFFFF0FAFFEDF8FFCAD1FF7D7ED82E29AA130AAE + 0500B80700CE0A03DA0000D50000CA0000CB0100D50300D40403CF0205CB0207 + C80206C90102CE0100D40600DE0100D80700D81207D9110AC70A08AE1618AC30 + 36AD7076C9D0D9FFEAF3FFECF4FFF4FCFFFAFFFFF9FBF5FFFFF9FFFFFBFFFFFB + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFFF7F9FFF6FCFFF3FBFFEEFAFFEAF7 + FFCDD9FF7279CE22259F0F0AAB0C03C50900D70700E10400E20300E00103DA00 + 03D70000D10000D00104CB0005C80006C70005C80003CC0000D30100DD0300DE + 0300DC0300D30603CA0A0BC10508B00006951A1F926A6FCAC9D1FFEAF1FFEBF4 + FFF6FDFFFDFFFEFAFBF2FFFFF9FFFFF90000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD + FFFFF9FBFFF6FCFFE7F0FFE6EFFFE4EFFF848EE21A20971014A90B09C00903D2 + 0600DE0200DE0000D70000D20000D10303D30000D10000D00001CC0003CA0003 + CA0003C90001CD0000D10000D40000DE0100DD0000D10000C80507CA0C10C70C + 11BA1213A91416985F64CBC4CAFFECF2FFF0F7FFF9FEFFFFFFF9FFFFFBFFFFFB + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFEF8FEFFF3F7FFE8ECFFA7A8 + FF3739B501019B1212C40202C40000C80000CE0603D50703D10000C70500C50B + 05D00300D50000D90000D70002D60002D60002D30002D50000D60000D10000D7 + 0000DB0002D90001D20000CB0003C80205C50B07C4110EB80C0D995E61CAE0E6 + FFEFF5FFE3E6F4FFFFFFFFFFFEFFFFFC0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFCFFFFF7EDF1F2F4F4FFE1DDFF5049C20D06A31611CA0000C40709D30001C6 + 0000BF0508C10B0BC30D08BF1308C2170DD20C03E00701E80502E80504E80504 + E60204E40005E40004E20207E50000DA0000D60001DA0005DC0002D70000D000 + 00CE0000CF120CD70603AC2020A28D90E5E6E9FFF6F8FFFDFCFFFFFEFFFFFEFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFFF0F8FAF4F6F2FFAEA4FF2515 + A80700B21E14E30000CA0206D0040EC60712BA0813B11215B31C15B91F12BC17 + 06C71205EB0B00F70A01F80A02F90A03F80703F60404F20206EF090FF20108E7 + 0000DF0000DD0003E20406E60204E50000E60000E70000D6130ECF1716AC2E30 + 96A4A6E6F4F6FFF2F2FFFFFBFFFFFDFF0000FFFEFFFFFFFFFFFFFFFFFFFEFFFF + FCFFFFFCFFFFFCFDFFFCFDFFFEFDFFFFFDFFFFFDFFFFFDFFFFFDFEFFFDFEFFFF + FFFCFFFFF1FDFFFFD1CFFF6862D71A10BE0600C90A00DA0D05D40707B1252CB7 + 3D4AB8434DB2494CB9514BC04237B32116A81C13CE120AE51102F70D00FE0A00 + FF0601FE0302F80204F60000E9060BF40C11F6050AEF0004ED0105EE0002EB00 + 00E50600F50000DB0702D30909B5070D8C5D62BDD0D2FFF4F4FFFDFBFFFFFFFF + 0000FFFCFFFFFDFFFFFFFEFFFFFBFFFFF8FFFFF7FDFFF7FBFFF8FAFFFBFAFFFE + F8FFFFF8FEFFF8FEFFF8FDFFFAFCFFFBFEFFFFFFFBF5F8FF9BA3FD1E27BE0000 + BF0000DF0C02DE1A0DC35950BFBFBCF4D7DEEFCFD6DFD9D9FDD0CEFCACA9D697 + 98D4353C99090C9D2818F21200FB0500F80200FA090AFF0001F40001F60002F7 + 0305F70406F80205FA0005F60005ED0003EA0000EA0603ED0000D50001C00512 + B41925AD6F74E7E6E9FFF1F7FFF7FFF40000FFFEFEFFFEFEFFFFFCFFFFFBFFFF + F9FFFFF9FFFFF9FDFFF9F7FEF7F7FEFBF8FEFDFAFFFFFAFFFFFAFEFFFAFEFFFB + FEFFFDFCFFEEEDFF6D73EA0814C60005E10007EE0701D63028C9D4CDFFEEEEFF + FDFFFBFBFFFCF7F5FFF6F3FFF8F9FFF1F9FF98A8D62932991307CB1100F41309 + FF0000F60002F50109FD0104FF0102FE0001FA0000F90000FB0002F9000AF100 + 0CEF0103F10402EE0000DE0007D5000BC50008AE4044D9B7BAFFEFF7FFF6FFF9 + 0000FFFFF5FFFFF7FFFFFBFFFFFEFFFDFFFFFCFFFFFCFFFFFDFFFFFEFFFFFFFE + FFFFFBFFFFF9FEFFF8FCFFF6FAFDF4F9FAF8FBF7FFE6E2FF3C3BC70000C40109 + F00008EF0B0ED4585CF0DFE8FFE0EBFFEAF4FFDADFFF847FDB8780DBE0E1FFE0 + EAFFE2F4FF515CB60D06BB0D01E71513FF0001F00000EE000CFE0003FB0000FD + 0000FA0000F90000FA0001F80008F10009F10607F90301F40000E8050EE7000C + D20000A9191ABE7B7BF1EAF0FFF4FFFF0000FFFFF2FFFFF5FFFFFBFFFEFFFFFB + FFFFF9FFFFF9FFFFFAFFFFFCFFFFFFFCFFFFF9FFFFF7FFFFF7FFFFF7FFFFF8FF + FFFFF4F2FFCAC7FF1E18B30704D60507F50000EA0B12DB5863FFD1E1FFD1E2FF + CFDEFF878DFF150FA42E26A9CFD1FFEAF5FFE4F7FF7481CF201DC60E06E1090C + F10005F10004F20006F80000F80000FC0000FE0202FF0002FF0003FC0006F400 + 05F10605FD0400F90002F1070DF2030EE10000BE0E0BBF4B48CDD4D7FFF3FBFF + 0000FBFFF7FBFFF9FDFFFEFFFDFFFFFAFFFFF9FFFFF8FFFFFAFFFFFDFFFFFFFB + FFFFF7FFFEF5FFFCF4FEFBF7FEF9FAF8F6FFF6F7FFA6A6F2140FAE211AF10B0A + FA0000F10606E62026EB323FE14759F25A68FF4249FF1713D7241FC0B0B6FFD3 + E2FFDFF2FF8493D82928C4100ADD0308ED0006F60004F70002F80003FE0001FF + 0402FF0501FF0402FF0203FF0005FC0004F90401FE0401FE0000F90003F50209 + EC0509DD120DD42924BBAFB1F8F1F6FF0000FAFFFEFAFFFFFDFEFFFFFDFFFFFB + FFFFFBFFFFFBFFFFFDFFFFFDFFFFFEFEFFFEFFFFFCFFFFFAFFFDF8FFFBF5FFF6 + F3FFEDF1FF8A8DE81612B8201BF20906F60504FC0C09F90000E10311DC0416DF + 000BE40007E90C0BEB120FBFABB0FFECF8FFEAFBFF8D98D61C1AB0110BDA080C + F40004F80001F80006FE0007FE0504FA0701F40600F20400F20400F50201FB04 + 02FF0300FE0602FF0000FE0000F40002EF0C0EEF160EE41911B89090E4E9EFFF + 0000FAFAFFFAFCFFFDFCFFFFFEFFFFFFFEFFFFFBFFFFF9FFFFFBFDF8F9FFF9FF + FDF7FFF8F4FFF4EEFFEFE9FFE3DEFFD9D7FFB7BBFF5D61D81A19C71412E80400 + EE0905FE0F0BFF0001F50003EF000DF80008F6000CF81214FC0906B6A4A4F0F3 + F9FFF1FCFF969DD61813A4120BD80B0BF70003FE0000FA020BFF090AFA130DF4 + 1A12ED1D12EB1A0FEF1409F30C03FA0700FE0500FE0400FF0103FF0001FD0000 + F40707F5150DEE1A12C37E7FDAE8EDFF0000FBF8FFFBF9FFFDFCFFFFFFFEFFFF + F9FFFFF7FFFFF9FDFFFFFAFAFFF6F4FFE7E3FFCECAFFA8A7FF827FEC5E5DD148 + 48C44649CF2527C21D1DDF1412EE0905F10601F70400FA0101FF0000FB000AFF + 0003FC0000F10A0BF51910C4BCB6FFF5F3FFEAF0FB9FA4D5231CA7140AD30804 + F00304FF0005FA0A0EF61917EC2924E53A32E3433AE83F35ED3127F01D11F70F + 04FA0700FB0000FA0406FF0409FF0000FC0101F5140BF5231BD3797BDAE8EFFF + 0000FEF7FFFCF7FFFFFEFFFDFFFBFDFFF7F5FEF4F5FCFFF3F9FFECEFFFB1B2FF + 6E6CD63F3EBE2224B20F14AC0A12AC0D13B80A09BD0F0CD30F0DE90B0BF30909 + F10505F30702F80200FD0000F40007FF0007FF0003F80E0BF5190AC0C3B0FFFF + F4FFFAFEFF9DA2C92520A1140BCD0801EC0704FA0E11F62428F24344E86D6CF2 + 8785F68A88F28180F86260F6392FF41B10F30E08F90000F70000FC0002FF0000 + FB0405FA120BF61B16CD7276D5E8F2FF0000FFFCFFFDF9FEFEFFFDF9FFFAEFF7 + F6F3FDFFEDF6FFB7BFFA666BC84143BF1C1DB50C0CB60208B90003B80004B800 + 06C00000CC0604E00B09F5090AFA0609F40505F30601F70301FB0007FF0008FF + 0000F80000F31109F6220DC7C2ACFFFDEEFFECEFF7949BC227249F1E18D11710 + F50D09F51C1EEE4E51F97C80F6AFB3FFD2D4FFD7DBFFCAD0FFA1A4FF635DFF32 + 2AF9110EF40202F60103FC0003FF0000FC0505FD130CF71C17CE7378D3E8F3FF + 0000FFFFF7FEFFF5FDFFFCF8FEFFF1F9FFDBE2FF9BA0EF464ABA1C1CAE0A0AB6 + 0000BE0001CB0008D10007CD000AC7000CCB0000CB0204DF0609F8080AFF0407 + FC0201F70500F60803F90205FA0005FC0000FA0004FB1409F9230EC9B8A6FFF7 + EEFFF4FBFF9FA9D823279E1613C61510EF0E0AEB272BDE7278F9ACB2FBDDE2FF + FAFFFFFAFFFFEDFAFFC3CFFF777BFF3A38F01614F00605F50204FD0103FF0000 + FD0506FB140EF71C18CB747ED2E5F5FF0000FCFFE7FFFFF5FAFFFFF3F7FFDFE3 + FF8588E3282AA70305A00E0EC60303CD0000D10000D60001D40001CC0003C800 + 07CB0000C70003D80209F3050CFF0408FF0100FA0500F80A02FB0000F30103FB + 0004FF0206FF0A00F41D0DD0B4A6FFF3EEFFEAF1FF9EA9F3161DA20000B50C0C + E82121F74E53F5A4ACFFD9DEFFFAFCFFFFFFF4FCFFEBF4FFFBD5E5FF8A93FF48 + 4BFA1816EC0906F50403FD0103FF0000FC0405FA140EF51C1AC87C87D7E4F5FF + 0000FFFFEBFDFFF7F6F9FFDFDFFF8B87F0302AB70804B10C08CB0303D10000D4 + 0000D20000D00000CE0000CA0000CB0205CC0001C10004CB000AE8020FFB020C + FF0002FB0500FB0B00FE0A00FE0401FE0000FD0000FC0000EF130DDC918EFFD9 + DAFFDDE1FFBCC3FF404AEB111ADC0F14F3252AFB535BF4A3A9FFF1EEFFFFFAFF + FFFFF9FFFEF0F6FFFED8E9FF8D97FF4A4EFF1815ED0904F30201FB0001FF0000 + FB0504FA140FF41D1BC88A96E4E4F6FF0000FDFFF0F4FAF9F3F2FFAEA9FF2F25 + B50400AE150DDC0401D90000D30002D10008CE010ACC0508CE0805D10D01D70E + 02D60600C90002C90007DB0012EF0212F90007F80300F90B00FF0B00FF0700FD + 0001F6000BFD0003F80507E73D3EEC5354EC3B3CDA4748F60D16D80006DC0001 + E81720F3545CF5A1A5FFE4DAFFFFF1FFFFF6FFFFF8FFF4F9FFC4D1FF717AFF34 + 39F41611EE0902F30200FA0000FE0000FA0505F91510F51F1DCA9EA8F5E6F9FF + 0000F9FFF8F6FAFFC2BFFF5E53CD1000B20500CA0600E00000D30000CA0006C1 + 000CB9020CB80907BF0D00C91000D50E00D71100DB0100D10003D10014DE011B + EB0011EE0402F60A00FE0600FA0601F7000BED0115F60008FA0000F30002E600 + 00CE0500DD1915F70207F00812FF0006FA111BF5464DF08786FACAB6FFEECFFF + FFDBFFF8DDFFD8D2FF9A9FF44E54F32528F51511F30901F50400FA0301FF0000 + FB0707FB1A13F82221CBAEB9FFE8F9FF0000ECF8FAEFF5FF807CE1080098170B + CF140AE00000BD0B0FD20610C10816B60816AA0713A70B0EB01109C11500D314 + 00DC1400E00100D10000CC0013DA051FE50315EA0304F60900FE0900FD0904F9 + 0009E70008E50000EB0002FE070DFF0203FF0904FF0705FF0000E8010CFD0000 + F3040AE52B2FDC5A55E09B88FDBC9EFFC9A8FFBDA2FF958DF1585BDB2426E212 + 14F4100FF90503F60301FB0402FF0200FD0F09FA2118F12C27C6BDC5FFEAF9FF + 0000E9F7FFC6D1FF4947CF100CC30000C00B13CA0F1CAE091593181C991A1C99 + 1218950A16941020A2000EA0131AC80F0FD10C08D30B09D70000CE0F1BEB0005 + D0010EE61819FF0600FF0700FB0700F60306EB0107EC0004F80003FE0004FC00 + 05FD0005FF0002F6040FF30B17F3090EED0F10E42423DD332FD54C42E25A4CEA + 6A59FF5F54FE3F3DE32628E01515F10205F4030FFD0001F30309FF0200FE0400 + F72213FE1505C8665CE5E2E4FFEAF2FF0000EDF8FF9FA5EE1D18B90300C61416 + D8525CFD737FE56269B25F5AA96158AE5652B15356B84D5CB8394AAB303AAF0A + 119E0F10BE1514D80F0DE31416F10911E60E17F11213FF0904FF0A03FE0B04F9 + 0B08F20607F10202FA0000FC0001F90003F60007FB000CF40816EB000DD5080E + D30A0EC4171FB81822AC1721AA131AAF1F1FCF2527E41A1FE00F14E5090AF400 + 02F70003F6000BFE0000F70000F1271AFF2F1DF22919BE8D85F7E7E9FFEDF4FF + 0000F3EEFF8A82E12717C81F0FDF2920E28A84FFE5E1FFE3DCFFF1E0FFECD9FF + DCCDFFE7DFFFE4E4FFD9D9FFB7B0D3665DA02621AC150FCC1B11ED0F07EE1515 + F51216F70A0AF80907FB0C07FD0E08FB0D0AF30C09F30602FB0200FE0000FC00 + 03F6070DF4111AF31B26EC0914C91F29CD1D30B12D4B982B53842B5383163681 + 0E21A0151FC30F1BD30D16E20C11F6070BFE0B14FF0005FC0000EC0903EA241A + E90F05B34B43C5CCC9FFEBF0FFF1F9FF0000DDD9FF605BC8241AD22115E91007 + C9776FFCF4ECFFFFF9FFFFF9FFFFF5FFFAEBFFF3E8FFE3DCFFF7EEFFFFFAFFE4 + D4F35B56BF120BB21B0CE40F00EE130DF40D0EF20B0EF30A0BF50C09F90E0AF6 + 0F0DEF0E0DF10C09F90A07FD0708FD0809F90000E50B0CE61818E6080AC62328 + CA1D319E2E597A366E69346D65204F6E16309A1420C00C16D50A12E8060AF300 + 00EE0000F30000E81610F72823F01F19C42A27ACA8A7FFEBEEFFF2F7FFF6FDFF + 0000C7D2FF3640B50A13CE0C14E90108C96A6EFCEFEEFFF7F2FFF8EFFF9891C4 + 4C49B74B4BD56F6EEEC7BFFFFFF1FFF8E6FFAAA9F32422A41E0BD61C08F40F07 + EE0808E8131AF30D13EE0C0FF30E0FF31012EC1113EA1110F2110FF50D0EF80F + 0EF81E14FF2112FF2B19FF2314F12D27E02230A8325E763E7B612E6C4E2B5E6E + 2C43B1242ADB1A19F11C19FF1714FF0300F90C01FD2013FF2A20EF1C16C12D2F + AB7B80D5EAF1FFE9F0FFF6FCFFFAFFFF0000B9C1FF2C35B40C18DA0C17EF0E17 + DC747AFFF1EEFFFCF7FFBAB7CD515296171EB5040DC90E11CA5A57E3FBE9FFFF + F5FFE0E5FF474BB11908CB2009F80A00EC0000E60D16F0040EE80D12F70E11F6 + 1013F11113EE1111F1100FF30D0DF5100BF6160AF61100F11700F71C07F01407 + CD1D26A62954692967433D7E5136696B2D44A81D20C90C08D6110BEC1716F614 + 0EEF2112F62E1DF0160CBA2F2CB1888DE2C8D2FFEFFAFFF2FBFFFBFFFFFDFFFF + 0000A99FFF3029B41916E10707E71310DB736EFFF5E8FFFFFAFFBCB7D2363A8B + 0715CB0007EC000EF02F33E0DFD4FFFEF6FFE0EEFF6C77C71403C41600F60C01 + F80000F20005EF0004EE060AFD0809FE0B09FC0D0AF90D0BF70D0BF70D0AFA0F + 0BF71812F3160CEC1303F12716FA1409D14953D6517D9435744D367A45275E4D + 253E88262DB21817BA1111BD1A1DC52626CE2217C73A2BCD4E46C8A7A7FFEAF1 + FFEFFAFFEFF8FBFBFFFCFFFFFEFFFFFF0000B7A2FF412FC21D14E60300E31E17 + E48175FFF8E8FFFFFAFFC1BED72731850015D50005F9000DFE1620D8D7D2FFFB + FBFFCDE4E6879BD51206BC0E00F0150AFF0806FF0000EF0003F60001FA0000FE + 0301FE0605FD0A08FB0C0BFB0D0BFE100FF91415EF1313E90D06E9251CF90D09 + CD6673F76A97B23775513C804536704D57769D8693E9878DF66D74E36770D873 + 79E48781F8A7A1FFD5D3FFECF0FFE6EDFFF4FDFFFBFFFCFFFFF9FFFFFFFFFEFF + 0000C0A9FF321EB7150BE1150FF81209DB7369FCFDEDFFFFF4FEBFBED2283482 + 0013CB0016FF0008EE0E1CC8ECEDFFECF3F0DCFFED7EA0C40607AB0F02EC100B + FF0405FF0000F30002F60005FF0002FF0000FD0202FA0405F50508F30308F101 + 08EB010CE20611E50207E01316EA191FDC2438BB6A98BA36745635783A427C46 + 5E8381CCE2FEE6F6FFE3F2FFE8F5FFEAF3FFECF0FFEDF0FFEFF5FFF3F9FFF6FD + FFFBFFFFFFFFFEFFFFFFFFFDFFFFFBFF0000A798FF2C20B8140FE61010F81815 + E6736FFFF8EEFFFCF4FEBEBECE2D397B0F26C80010E00003CB2A39CBEEEFFFFA + FFF9D1F8E87DA4CB1C21C30B04E90000F00307FF0005FC0002F90003FE0001FF + 0102FE0303FB0406F80307F20007F00009ED000AE9000FEC0007E50B15EB121B + E01D31BE628DC0346F60377743427C425F866DD0EAE4EFFFFFF0FEFDF4FFFFF5 + FDFFF4FDFFF4FEFFF6FFFFF8FFFFFBFFFFFFFFFFFFFEFFFFFDFFFFFAFFFFFAFF + 00009EA2FF272CBD0B14E70006ED0A12E16D74FFE5E7FFFBFDFFC5CAD3333C6E + 1427A60013B31A2DC47F89F4E8E6FCFCFFF8D3F3FE6888CF1F25D20A05EA0000 + E90609FE0002F90001FA0000FB0100FC0301FB0501FA0201F70102F60005F400 + 08F60006F60007F90001F4060DF70C13EC1323C9547AC83769753A7352437748 + 5D8066CFE6D7F6FFF7F9FFF9FFFCFFFDFCFFFAFFF5F8FFF0FAFFF2FBFFF7FFFF + FCFFFEFFFFFCFFFFFBFFFFFAFFFFFAFF0000B6BEFF3039BF1118E40007EA0209 + D46E75FFE2E4FFFBFBFFD3D2DC5F6184353D9A3540B2717DE3DBE1FFFFFCFFFD + FCFFD0E4FF4357CE0F0ED20E07F20704F30C0AFD0000EF0503F70800F70A01F8 + 0B03F70A02F60500F80400F90506FB0409FF0003FE0002FF0000FC0207FC0A0D + F10B1ACA4B6CC93E6E863C725B4173495A7B60CEE3CDFAFFF2FDFFF6FFFBFFFF + FAFFFDFFF0FBFFE9FDFFEDFFFFF4FFFFFBFFFEFFFFFCFFFFFBFFFFFBFFFFFBFF + 0000D6D0FF4640BD2116DE1E14F4100AD57F7BFFF1EAFFFDF4FFFFF9FFE5D8F2 + B8B1EAB4B2F4C9CCFFF6F6FFFFFFFCFAF1FF9B9CFF2123DC0B00E30E01F70F09 + F6120DF80F05F1170BF71B0BF91C0AF71A0AF11508F20F01F90A00FE0702FF04 + 05FF0103FF0001FE0000FE0506FB090CF00B18C84668C54E7D983B745B3E7348 + 567B5BC9E2C8F7FFEFFBFFF3FFFDFFFFFAFFFFFFF5FDFFF0FDFFF2FFFFF5FFFF + F9FFFFFEFFFEFFFFFDFFFFFDFFFFFDFF0000EAE6FF645FC81F11CB2113ED130D + D87B77FFE8E5FFF6F0FFF5E6FFFFEEFFECDEFFEFE8FFECEDFFECEEFFF0EAFFD3 + CAFF413AE3140CE31A0DF5140BEE1B19E72726EA3733F63830F23F34F43E33EE + 392FE73027E9241BF41810F70A07F00002ED0709FB0102F70404FC0705F80F0E + F20C18CA4768C96291B038705D3D724B527960C6E1CDF5FFF1F9FFF5FFFDFFFF + FCFFFFFFFEFDFFFBFFFFF9FFFFF9FFFFF9FFFFF9FFFFFBFFFFFCFFFFFEFFFFFE + 0000EAF7FF919BE8201EC41613E40A10DB404BF9909EFF9EA6FFB0AAFFB7ABFF + A9A0FFA2A1FF97A0FF6B76FF5156F32C2CDE0F09D41D17E8332EFB3B3EF45562 + F45B6AE87A88FF7A84F6838BF68087EE7781E66D75EE5B5EFD4144FA222CE40E + 17DC0D12EB0606EE0A07F60A05F4140EF51119D14C69D175A2C8376B643B6D55 + 51766CC2DDD9F0FFFAF3FFF9FBFEFFFDFCFFFDF9FFFDFAFFFDFCFFFDFFFFFFFF + F8FFFFF5FFFFF4FFFFF5FFFFF8FDFFF90000E8FEFFBECFFF373DC62426E21017 + E2000CCE1022C3111FB3191DB81413B61717C10C11C0151DD4060FD50709E905 + 02E71A11EA342EF14D4DF3767FFFAABBFFA1B3F2C3D1FFC9D2FFD0DAFFCAD6FF + C1D0F7B3C1FB9DA6FF7A80FF5159E93037E21317E20507E80808F40A05F4170F + F6181AD3556CD284AED1356A61376D56507571C2DCE2F0FFFFF2FCFCF8FFFEFA + FFFFFDF9FFFDF8FFFDFBFFFDFFFFFFFFF9FFFFF5FFFFF4FFFFF5FDFFF8FDFFF9 + 0000ECFFFFE1F2FF757BDE1C1EB92522ED0708E60811EB0007DD0210DE0515DE + 0515DA030EDA0505E50903F00F02F81404F12A1BEF554DF89090FFBCC2FFDBE3 + FFEFF4FDFAF7FFFFF9FFFFFBFFF9F9FFF8FFFEF3FFFFD2DAFFBBBAFF9D92FF6A + 5FFC1C1FE6040DF00007F80000EA2117FE1D16CB9FADFF9BBED2356F56377351 + 406962C0D6E1F5F9FFFAFDFFF5FFF3F8FFF2FBFFFFFFFDFFFFFEFFFFFFFFFFFF + FEFFFFFCFFFFFBFFFFFCFFFFFCFFFFFE0000F1FFFCEDFBFFAFB4FF2926AB1A11 + D31E16FD0000ED040AFF0009F70008EB0009E6000BED0708FA0B03FC1001FC17 + 09F5291CEC5954F79CA0FFD2DCFFF2F8FFFDFFF9FFFCFDFFFDFFFFFDFFFFFDFC + FBFFF5F6FFF8EEF9FFE7E9FFC4B8FF7E74FD3A3CFF0A13F7040FFF0D10FE1B13 + EA221DBCB1BEFFAFD2D535724E3B795148716AC9DCEBF5F5FFFDFBFFF4FFF0F6 + FFEDFBFFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000F8FFF9F0F7FFEBEAFF8981F61C0EC01E10EA150BFF0502FF0206FF0000F2 + 0000F00007F50209F80104F20104EF090BEB1D1DEB484DF68A98FFC7D7FFE8F6 + FFEFF8FFF5F7FFFAF9FFF8F9FFF3FAFFEFFFFFECFFFFE7FDFFE3F4FFBEC4FF7E + 7EF23B3AFB0707EF0000EE1215F3211DD45555D1D0E2FFAFD3C53974483F7B52 + 527B73D1E4F3F5F2FFFDF7FFF5FFF4F6FFF1FBFFFBFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F8FCF0F7F9FFF4F1FFE7DDFF5747 + DB1807C82C1CFD1005FB0702FD0101FF0003FE0004FB0006F40007EF0009E800 + 0BE40E19ED2A35F1606EFC98A7FFB9CAFFC6D3FFD1D7FFDCE0FFD7DAFFD3DAFF + CFDCFFC6D7FFB9C9FFA6B5FA8891E86566E6251DDF2119F91113ED1318D82526 + B68087DCE8FDFFBFE5C73B76443F7A4E577F74D9EAF7F6F2FFFDF7FFF9FFFAF7 + FFF6FDFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FCFCECFFFFFEF0ECFFF1E9FFB0A2FF5140D7210ECF2412F30D00F61109FF + 0B0BFF0005FD0003F6000DF50014EC000FE7000CF40E16F32C38F25762F97783 + F3848FEB8992E98F94F18F91FD8887FF7E7EFF7A7AFF716EFF5755EB423BD83A + 30DE3220E93529F50B0DC51B22B7626BCCC8D5FFEDFFF9B9E0B33E77403D7649 + 5A8074DFF0F9FAF4FFFFF8FFFBFFFFF6FDF8FDFFFEFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF4FFFFF6FFFDFFF8F3FFE5DD + FFB4A9FF4738C92011C71A0BE3180CF80E09FE0001F90000F60009F60012EF00 + 0DEE0002F40208F5151CE82A35DD3E4DCC4857BD4555AE3F4EAB545BCE4B4ED8 + 3E3BDE4138ED493DFB3E2FEF2F1FDE3322DE1C07C22618C41B1EAF5663CDBFCA + FFEDFCFFF0FFEDB7DCAA4377413F7449628675E8F9FCFDF8FFFFF8FFFDFCFFF5 + F9FAFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFF5EEEDDFFFFFF8FDFFFFF7F9FFEFEFFFADA9FB5851CA3930D42117DC + 1107E70D07F60707FF0000F90002F40006F80000F60A0BF5141BE41925C52236 + A52C46922D4D8226467B132B7723339E1C20B5140CBD2011D12413D6220FCA2B + 17C42A15AE584BCB8F94FABECEFFE5F0FFEBF9F7F1FFE7D4F0C546764645774F + 6F937BF1FFFBFFFCFFFFF9FFFFFBFFF9F8FFFFFEFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF8FFFFF7FDFFF3F5FCEDFAFF + F9F2F9FFEFF5FFC7C7FF6360CE362EC11D13CB251CEE231CFF0805F40000EE08 + 09FB0603ED1A18EE2123DB1A24B11C328A2E4F7D3A647136646B3B637F6B88C5 + 717EEA5455E1534BE66255F16A5EEC796BE8B7A6FFC2B8FFE4ECFFE6F6FFF1FC + FFF8FFFCFBFFF1C0D7B748734E4C7A56799F81F3FFF4FFFEF9FFF9FCFFFBFFFD + F9FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FAFFFEFAFFFCFAFFF8FAFFF5FAFFF4F8FFF9F4FFFFF1F8FFECEEFFA5A3FD + 4A46C31F19B41A12CB1E14E21D12F01C12EE2C22EB2219CD221FB8686EDF8195 + CF3759664A7A5E3C72473B6E52A0CCCBCBE7FFDAEBFFE0E5FFD6D9FFEBEFFFF1 + F3FFF9F0FFF2EEFFEDF9FFEBFBFFF5FDFFF9FEFDFDFFFCB5C4B64D7159386445 + 9EC6A3F3FFEDFDFFECFFFFF9FFFBFFFFFBFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F4FFFFF6FFFFF6FFFEF8FFF9FAFF + F8FAFFF8F8FFFBF6FFFFF0F4FFEAEDFFDAD9FFADA9FF6A61E72F24C11D10C028 + 1BCB2215B13F35BD7870E5B7B8FFC7D6FD74918E406E434C824642784372A383 + D4F7FBE3FBFFEAF8FFE5EEFFF6FFFFFBFFF9FFFFFEF9FBFBF3FFFFECFCFBF7FB + FFFDFDFFFFFDFFB9C4C24E6F603C694EA6CFAAF3FFE9FFFFEAFFFFF7FFFCFFFF + FCFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000F3FEFFF3FEFFF4FDFFF6FEFFF8FEFFFAFFFFFBFFFFFBFFFFF9FDFFF2F7FF + F2F4FFEFEFFFD9D7FFB4AFFF958CFA8A7FEDA095F5BCB1FFF0E5FFF1ECFFF1F6 + FFADC2C03A5C3D4D794A4B794E4A7357BDDCD9EAFFFFF0FDFFF7FFFDFFFFEEFF + FFE7FFFFEBFFFFECF6FFF5F0FFF7FBFEFFFFFBFFFDFAFFADB7BE4B6D6345715A + B1D9B6F1FFEAFFFFECFFFFF5FFFDFEFFFCFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F4FDFFF4FDFFF6FCFFF8FBFFFAFA + FFFBFBFFFDFCFFFDFFFFFDFFFEFAFFFDF8FCFDF8FCFFF6F7FFF4F3FFF2EEFFF4 + EEFFF8F2FFF9F3FFFAF2FFFAF5FFF1F6FFD9E8E46380664B724C4D7853426B4F + 83A398ECFFFFE5F4F0FBFFF7FBFFE1FFFFE4FFFFE5FFFFE5F8FFF2F6FFF9FBFE + FFFDFBFFF3F1FD98A3A746695F4C7966BCE3C9F1FFEEFFFFF2FFFFF7FFFFFEFF + FCFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FAFCFFFAFCFFFBFBFFFBFAFFFDF8FFFFF9FFFFFBFFFFFDFFFFFFFFFFFFFB + FFFFF9FDFFFBF8FDFCF5F8FCFAFBFFFBFEFFFFFFF8FBFEEFF5F6F2FDFFFEF1F8 + F3F3FFF7A3C1A4446D4843724C467555507762C7E5DAF0FFF9FBFFF9FAFAEAFF + FFF0FFFFEDFFFFECFAFFF7F4FFF9FBFFFFFDFEFFEEF2F38D9C98406758548170 + C7ECDCEBFFF4FFFFF9FFFEFAFFFFFBFFFEFAFFFFFEFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFDFFFFFDFFFFFBFFFFFAFFFFFA + FFFFFAFFFFFBFFFFFDFFFFFFFFFAFAF4F5F6ECFBFDF1FFFFF7FFFFF8FFFFF8F8 + FBEBFFFFEDFFFFEBFFFFF4FFFFF8F7FFF6F3FFF7CBEBD256825E3A6D47427750 + 406E518EB29CEFFFF9F8FFFCFFFFFEFFFCF9FFFFF8FFFFF6FAFFFCEDFBF7FAFF + FEFBFFFBECF6E9879D8B3F69575E8D7DD4F6F0E8FAFBFFFDFFFFFBFDFFFFFBFF + FFF8FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFDFFFFFDFFFFFDFFFFFEFFFFFFFEFFFFFEFFFFFEFFFFFEFDFEFCFFFFFE + FFFFFEFFFFFCFDFCF8FBFBF5FFFFF8FFFFF9FEFCF2FFFCF7FFFBFDFBFBFFF6FD + FFECFFFBDDFFEC97C6A641794E3A76463D73485B8867D1ECDCEDF9F9FFFBFFFF + F8FFFFF9FFFFF9FFFAFEFFEFFBFBFAFFF9F9FFF0DCEED16F8C6B4474586B9C8C + E0FFFFE5F5FFFFF9FFFFF7FFFFFFFBFFFFF7FFFFFCFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFEFEFFFEFEFFFFFCFFFFFBFFFF + FBFFFFFBFFFFFBFFFFFCFDFEFCFFFFFFFFFEFFFFFEFEFFFFFFFFFFFEFFFFFCFF + FFFBFFFEFFFFFCFFFFFCFFF3F2FCF8FEFFF1FFFFE7FFF6D0F8DF5588633E7449 + 3A6E4646735295B5A4E8FBF8F0F9FFFDFAFFFFF4FFFFF5FFFDFCFFF6FFFFF8FF + F7EFFFE9C4DDBB4F704D4E795E7AA598E6FFFFEAF5FFFFF9FFFFF7FFFFFFF9FF + FFF6FFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFEFFFFFEFFFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFEFFFFFDFFFFFEFFFDFEFFFBFE + FFF8FFFFF4FFFCEFFFF8C6E2CF4C6D583A5E464E745E446857C5E8DADCFEF3F1 + FFFFFFFCFFFFF4FBFBF5F6FBFFFBE8FAE9EFFFF2B8D6BD486A52486A59BFDAD0 + EDFFFEEFF8FBFDFEFFFFFFFEFFFFF7FFFFF9FFFFFEFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFEFFFFFEFFFFFEFFFFFEFFFDFFFFFBFFFEFAFFFEF6FFFCE6F7EE879D91 + 546E60436455476D5B78A08EDDFFF5E0FDEEFDF8F7FFFCFFFFFFFBF5FDF2F1FF + F5EAFFF481A58F4568546A8477D4E9E1F6FFFEF6FCFBFDFFFEFEFFFBFFFFF7FF + FFFBFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFFFEFFFFFEFFFDFF + FFFBFFFEFAFFFEF6FFFCF4FFFBD3E9DD6E887A3B5A4B5E82713D6553AED8C6EA + FFF8FFFFFEFFFEFEFFFFFBEBFAECEFFFF4D9F9E1597D674A6A578AA296E6F6EF + F8FFFFF9FEFDFDFFFFFDFEFCFFFFFBFFFFFBFFFFFEFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFEFFFFFEFFFFFEFFFFFEFFFDFFFFFBFFFFFAFFFEF6FFFCF4FFFBF1FFFB + ACC4B85E7B6C4F7061466C5A5B8371D4F2E5F8FFFCEDF1ECF4FFF5F1FFF5E8FF + F0B0D2BA5779614F6D5AA3B9ADEAF8F2FAFFFFFAFCFDFFFEFFFCFCFCFFFFFCFF + FFFCFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFFFEFFFFFEFFFDFF + FFFBFFFFFAFFFEF8FFFCF1FEF6F2FFFAEFFFF9ABC5B74261525D7E6F4F74647C + 9D8FEEFFF9EFFFF7EFFFF8EAFFF4E1FFED90B59B5678604F6B58BDCEC3F2FBF8 + FDFFFFFEFDFFFFFDFFFDFCFEFDFFFEFDFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFEFFFFFEFFFFFEFFFFFEFFFDFFFFFDFFFFFBFFFEFAFFFEF4FFFAEFFEF6 + F1FFFBE5FDF198B2A55C7B6C4D6E5F507163A6C1B7EAFFF9E6FFF7E1FFF1DBFF + E97CA4884B6E545F7967D9E9DEFBFFFEFFFEFFFFFDFFFFFDFFFDFCFFFDFFFFF7 + FCFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFDFFFFFFFFFFFFFFFFFFFF + FFFDFFFFFDFFFEFBFFFEFAFFFCF6FFFBECFDF4EFFFFBECFFFA849E915B776A51 + 7264608476B1D8C8DFFFF5D1FEE4B9E7CA618A6E4B6E5490A896EEFCF1FDFFFE + FFFCFFFFFCFFFFFDFFFCFBFFFDFFFFF7FCFBFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFDFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFEFDFFFEFBFFFCF6FDF8 + F6FFFCF3FFFBE6F9F0CDE5DB94ACA246645742695A598675D0FFE8D2FFE790C0 + A3436F52587B61C0D8C6F7FFF8FDFFFEFDF7FCFFF9FFFFFAFFFAF9FDFDFEFFFA + FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFDFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFEFDFFFEFDFFFEFBFFFEF8FFFEF4FFFAF4FFFCF1FFFCCBDDD694 + AFA5466D5E315E4D8BBBA3B6E7CB47795B44725564896FDDF5E3F7FFF8FBFEFC + FFFDFFFFFCFFFDF6FDFFFDFFFDFEFFF8FCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFDFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFBFCFAFDFFFE + F8FFFCF3FCF9F6FFFEF4FFFCF0FFFBD4EBE388ACA03D695843725C6292784072 + 5449775A9FC4AAEDFFF5F2FFF5F8FBF9FFFBFFFFFBFFFDF6FDFFFBFFFDFFFFFD + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFDFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFDFDFFFFFFFBFDFDF6FBFAF6FCFBF8FFFEF6FFFFF1 + FFFED1EEE57EA29440685635614A46765A538164D2F9DFECFFF5F3FFF9F9FFFD + FFFEFFFFFDFFFFFDFFFFFCFFFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFDFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFFFEFFFFFFFF + FFFFFFFDFFFFF8FDFCF2F8F7F5FBFAF6FFFFEFFFFED0EBE18DAE9F4D745E4370 + 564F7C61CDF5DCE4FFF1F1FFF9F6FFFEFCFEFFFFFDFFFFFDFFFFFEFFFCFAF9FA + FBF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFEFDFFFEFFFFFFFFFFFFFFFF + FFFFFEFFFFFEFFFFFEFFFFFEFFFFFDFEFFFEFFFFFEFFFFFEFFFCFEFFF9FDFEFA + FFFFF6FFFFF3FFFCD1EBDE86A995476E583E684F89B39ACAEDD9E7FFF4F3FFFC + F5FBFAF5F7F8FFFEFFFFFFFFFEFDF9FFFFFCFFFFFEFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFDFFFEFDFFFEFFFFFFFFFFFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFDFE + FFFCFEFFFEFFFFFEFFFFFEFFFDFFFFFDFFFFFAFCFDF8FFFCF1FFFBCEEBDB7FA5 + 8F4B755C3C664F83AA95DCF8EBEFFFFCF6FFFFF3F8F7FFFFFFFFFFFEFFFDF8FF + FFFBFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFEFDFFFEFFFFFFFFFFFFFFFE + FFFFFEFFFFFEFFFFFEFFFFFDFFFFFDFFFFFCFEFCF9FBFDFAFCFEFDFFFEFDFFFB + FAFEFFFBFFFEFEFEF6FFFBEDFFF8CDF0DC83AD96346049466F5A9EBFB1E2F9F1 + F4FFFEF7FDFCFFFFFEFFFFFCFDFBF3FFFFFBFFFFFEFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFDFFFEFDFFFEFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFFFEFFFFFBFDFFFEFF + FFFEFFFFFDFFFFFEFFFFFEFFFFFEFFFFFBFFFFFBFFFFFFFFF7FDF8F2FFF7EDFF + F7BEDECB688F7A426856486B5DABC9BEE7FEF6EFFDF9FBFFFCFFFFFCFFFBF6FF + FFFBFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FEFFFEFDFFF9F9F9FFFFFEFBFFFCF3FCF2F0FFF4BDD6C85F8071436858567D6E + C1E3D8EAFFFBF4FFFCF0F3F1FFFEFEFFFAFAFFFEFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFCFBFDFFFFFFFFFFFEFBFC + F8FBFFF9EBFCF1AAC7B84D7262406C5B7FA899D9FBF0EDFFFAFAFFFEFFFEFFFF + FDFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFEFFFAF9FBFFFFFFFFFFFEF8F9F5FBFFF9F4FFF9E3FDEF7BA0903E6857 + 466F60A6C8BDE9FFF8F8FFFCFFFEFDFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFEFAF7F9FFFEFFFFFFFEFBFA + F6F9FFF9F4FFF9ECFFF7C1E5D5628979375E4F6C8F81D6EFE5F4FFFCFDFFFEFF + FDFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFEFFFFFCFFFFFEFFFFFFFEFFFFFBF9FDF7F4FFF7EDFFF7E6FFF99CC0B2 + 4064564B6E609CB7ADEBFEF5F8FFFCFBFFFEFDFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFDFFFFFCFDFFFDFEFFFE + FDFCFFFBF8FFFBF1FFF9EAFFF9CEEFE15E8173496C5E5A786DD6EEE4EDFFF7F6 + FFFCFBFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFAFDFFFDFFFFFCFDFEF8F9FFFDFCFEFFFBF9FFFBF4FFFBE9FFF7EAFFFB + A2C3B5537466456658A9C7BAE7FFF4F1FFFBFAFFFEFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FAFFFDFFFFFEFFFFFEFFFFFE + FFFFFFFEF6FDFAF6FFFCEDFDF6EDFFFBE8FFF75876695475677B9F8FE4FFF9E5 + FEF4F8FFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFDFFFFFDFFFFFDFFFFFEFFFFFFFFFDFFFEFBFFFEF8FFFCF6FFFCF3FFFB + EDFFF98CA89B4B6C5D597F6DB0DAC9E6FFF9F6FFFEFDFDFDFBFBFBFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFDFFFFFDFFFFFEFFFFFF + FFFDFFFFFBFFFFFAFFFEF5FCF9EEFAF4EEFFF6C7E1D34F7160446C5A608F79A6 + CBBBF6FFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFDFFFFFDFFFFFEFFFFFEFFFDFFFFFBFFFFFDFFFFFDFFFEFDFFFEF7FEF9 + F6FFFBEAFFF35D7F6E3F6A5533674F638D7BE9F7F1FFFFFFFFFFFFFFFFFFFEFE + FEFFFFFFFFFFFFFBFBFBFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFFFEFFFDFFFFFBFF + FFFBFFFFFDFFFFFFFFFFFFFFFEF7F8F4FAFFFBCFE1D45D7D6C4470593E755A48 + 7660DAE8E2F8F8F8FFFFFFFDFDFDFBFBFBFFFFFFFFFFFFFBFBFBFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFEFFFFFEFFFDFFFFFAFFFFFAFFFFFAFFFFFDFFFFFFFFFFFFFDFCFFFDF9 + FDFFFBD0DED25F7D6A46725B437D6156856FD9E9E2F8F8F8FFFFFFFDFDFDFBFB + FBFFFFFFFFFFFFFBFBFBFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFBFFFFF8FFFFF8FF + FFFAFFFFFDFFFFFFFEFFFFFCFDFFFFFCFFFFFBF5FFF56D89763D6A50205C3E5F + 9179E8F9F0FFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFBFBFBFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFEFFFDFFFFFAFFFFF8FFFFF6FFFFF8FFFFFDFEFFFFFEFFFFFBFCFCF4F4 + FCF9F4FAFFF89DB7A5558268336F5181B59DF3FFFBFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFDFFFFFAFFFFF6FFFFF6FF + FFF6FFFFFDFEFFFFFEFFFFFDFFFDF3F3FFFFFBFBFFF8EDFFF5A4D1B798D4B6D7 + FFF3F3FFFBFDFDFDFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000} + end + object Label1: TLabel + Left = 56 + Top = 8 + Width = 262 + Height = 45 + Caption = 'www.infdj.com' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -32 + Font.Name = 'Arial Black' + Font.Style = [] + ParentFont = False + end + object Label2: TLabel + Left = 32 + Top = 56 + Width = 166 + Height = 23 + Caption = 'Jos'#233' David Guill'#233'n' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Arial' + Font.Style = [fsItalic] + ParentFont = False + end + object Label3: TLabel + Left = 216 + Top = 58 + Width = 120 + Height = 19 + Caption = '' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Arial' + Font.Style = [fsItalic] + ParentFont = False + end + object Timer1: TTimer + Interval = 15000 + OnTimer = Timer1Timer + Left = 200 + Top = 96 + end +end diff --git a/src/splash.h b/src/splash.h new file mode 100644 index 0000000..adb61ae --- /dev/null +++ b/src/splash.h @@ -0,0 +1,31 @@ +//--------------------------------------------------------------------------- + +#ifndef splashH +#define splashH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TsplashScreen : public TForm +{ +__published: // IDE-managed Components + TImage *Image1; + TLabel *Label1; + TLabel *Label2; + TLabel *Label3; + TTimer *Timer1; + void __fastcall Timer1Timer(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TsplashScreen(TComponent* Owner); + + bool timeOut, loaded_main; +}; +//--------------------------------------------------------------------------- +extern PACKAGE TsplashScreen *splashScreen; +//--------------------------------------------------------------------------- +#endif diff --git a/src/splash.~cpp b/src/splash.~cpp new file mode 100644 index 0000000..2e268c3 --- /dev/null +++ b/src/splash.~cpp @@ -0,0 +1,24 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include "splash.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TsplashScreen *splashScreen; +//--------------------------------------------------------------------------- +__fastcall TsplashScreen::TsplashScreen(TComponent* Owner) + : TForm(Owner) +{ + timeOut = false; + +} +//--------------------------------------------------------------------------- +void __fastcall TsplashScreen::Timer1Timer(TObject *Sender) +{ + timeOut = true; + if ( +} +//--------------------------------------------------------------------------- diff --git a/src/splash.~dfm b/src/splash.~dfm new file mode 100644 index 0000000..f311057 --- /dev/null +++ b/src/splash.~dfm @@ -0,0 +1,581 @@ +object splashScreen: TsplashScreen + Left = 510 + Top = 284 + BorderStyle = bsNone + Caption = 'splashScreen' + ClientHeight = 135 + ClientWidth = 385 + Color = clWhite + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object Image1: TImage + Left = 328 + Top = 40 + Width = 58 + Height = 92 + AutoSize = True + Picture.Data = { + 07544269746D6170763F0000424D763F00000000000036000000280000003A00 + 00005C0000000100180000000000403F0000C40E0000C40E0000000000000000 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFF2FFFFF1FFFFF8FFFEFCFFFC + FFFFFCFFFFFEFEFFFFFBFFFFF5F9FDF7F7FCFFF3FAFFEDF1FFE8E9FFDEDAFFC5 + C2FFB5BAFFABB3FF989EFF989EFF9BA0FF9FA5FFBBC1FFC9CFFFDDE5FFDFE8FF + E1ECFFE8F5FFEFFCFFF3FFFFF4FFF7E8F6E4FBFFF9FDFFFBFDFFFCFDFFFEFFFF + FFFFFEFFFFFDFFFFFDFFFFFCFFFFFCFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFBFFFFF4FFFFF2FFFFF8FFFFFBFFFEFEFFFDFFFFFEFFFFFEFFFFFEFFFBFCFF + F4F8FFE6EAFFCACDFFA4A5FF7874E5504ED02B2FBE2429C1161AAF191DB11B1F + AE1C22AB3539BD3E43BE6064D4989EFDD4DAFFE6EEFFE7F0FFE3F1FFEFFEFFF4 + FFFEFAFFFEFBFFFCFBFFFEFDFFFEFFFFFFFFFEFFFFFDFFFFFDFFFFFDFFFFFDFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFF8FFFFF7FFFFF7FFFFF8FFFF + FBFFFEFEFFFDFFFFFAFFF5F0FFF4F2FFDBDAFF9D9EEF5353BD22219F10119F11 + 10AE0807B50808BA0000AD0407AF0608AC0104A31213B11514B01411AA1F1BAA + 3B37B87171DDBCC0FFE6EEFFE8F4FFE6F2FFF4FDFFF8FFFFFAFFFFFBFFFEFDFF + FEFFFFFEFFFFFFFFFEFFFFFDFFFFFDFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFEFFFFFCFFFFFBFFFFF9FFFFF9FFFFFBFFFEFFFDFAFFF8F5FFF3EDFFB5AEFF + 5F59C4231F9D0E0D9F1212B21010BA0405BB0501C40906CD0303C10D0FC70D0F + C10205B40C0BBF0B07BE0700B8130ABF170EB91811A8322FAD6F73D9B6C0FFE4 + F0FFEFF7FFF4FCFFF6FEFFF8FFFFFBFFFFFFFFFCFFFFFCFFFFFEFFFEFFFFFDFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFDFEFFFDFEFFFDFFFEF8FEF9F4FB + F8F6FDFFF3F6FFE7E7FF8781E04941BE180DA91208B8110CC60100C20000C006 + 09D00100CF0400D00402CA0505C70507C30406C30403C70400CB0E05D80300C8 + 0600C6150AC50D08AB0E0D994A4EC49BA3FCE8F0FFEDF7FFF1FAFFF3FBFFF8FF + FFFCFFFDFEFEF8FFFFFBFFFFFCFFFEFE0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD + FEFFFAFBFFFAFCFFF8FFFFF4FFFFF0FAFFEDF8FFCAD1FF7D7ED82E29AA130AAE + 0500B80700CE0A03DA0000D50000CA0000CB0100D50300D40403CF0205CB0207 + C80206C90102CE0100D40600DE0100D80700D81207D9110AC70A08AE1618AC30 + 36AD7076C9D0D9FFEAF3FFECF4FFF4FCFFFAFFFFF9FBF5FFFFF9FFFFFBFFFFFB + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFFF7F9FFF6FCFFF3FBFFEEFAFFEAF7 + FFCDD9FF7279CE22259F0F0AAB0C03C50900D70700E10400E20300E00103DA00 + 03D70000D10000D00104CB0005C80006C70005C80003CC0000D30100DD0300DE + 0300DC0300D30603CA0A0BC10508B00006951A1F926A6FCAC9D1FFEAF1FFEBF4 + FFF6FDFFFDFFFEFAFBF2FFFFF9FFFFF90000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD + FFFFF9FBFFF6FCFFE7F0FFE6EFFFE4EFFF848EE21A20971014A90B09C00903D2 + 0600DE0200DE0000D70000D20000D10303D30000D10000D00001CC0003CA0003 + CA0003C90001CD0000D10000D40000DE0100DD0000D10000C80507CA0C10C70C + 11BA1213A91416985F64CBC4CAFFECF2FFF0F7FFF9FEFFFFFFF9FFFFFBFFFFFB + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFEF8FEFFF3F7FFE8ECFFA7A8 + FF3739B501019B1212C40202C40000C80000CE0603D50703D10000C70500C50B + 05D00300D50000D90000D70002D60002D60002D30002D50000D60000D10000D7 + 0000DB0002D90001D20000CB0003C80205C50B07C4110EB80C0D995E61CAE0E6 + FFEFF5FFE3E6F4FFFFFFFFFFFEFFFFFC0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFCFFFFF7EDF1F2F4F4FFE1DDFF5049C20D06A31611CA0000C40709D30001C6 + 0000BF0508C10B0BC30D08BF1308C2170DD20C03E00701E80502E80504E80504 + E60204E40005E40004E20207E50000DA0000D60001DA0005DC0002D70000D000 + 00CE0000CF120CD70603AC2020A28D90E5E6E9FFF6F8FFFDFCFFFFFEFFFFFEFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFFF0F8FAF4F6F2FFAEA4FF2515 + A80700B21E14E30000CA0206D0040EC60712BA0813B11215B31C15B91F12BC17 + 06C71205EB0B00F70A01F80A02F90A03F80703F60404F20206EF090FF20108E7 + 0000DF0000DD0003E20406E60204E50000E60000E70000D6130ECF1716AC2E30 + 96A4A6E6F4F6FFF2F2FFFFFBFFFFFDFF0000FFFEFFFFFFFFFFFFFFFFFFFEFFFF + FCFFFFFCFFFFFCFDFFFCFDFFFEFDFFFFFDFFFFFDFFFFFDFFFFFDFEFFFDFEFFFF + FFFCFFFFF1FDFFFFD1CFFF6862D71A10BE0600C90A00DA0D05D40707B1252CB7 + 3D4AB8434DB2494CB9514BC04237B32116A81C13CE120AE51102F70D00FE0A00 + FF0601FE0302F80204F60000E9060BF40C11F6050AEF0004ED0105EE0002EB00 + 00E50600F50000DB0702D30909B5070D8C5D62BDD0D2FFF4F4FFFDFBFFFFFFFF + 0000FFFCFFFFFDFFFFFFFEFFFFFBFFFFF8FFFFF7FDFFF7FBFFF8FAFFFBFAFFFE + F8FFFFF8FEFFF8FEFFF8FDFFFAFCFFFBFEFFFFFFFBF5F8FF9BA3FD1E27BE0000 + BF0000DF0C02DE1A0DC35950BFBFBCF4D7DEEFCFD6DFD9D9FDD0CEFCACA9D697 + 98D4353C99090C9D2818F21200FB0500F80200FA090AFF0001F40001F60002F7 + 0305F70406F80205FA0005F60005ED0003EA0000EA0603ED0000D50001C00512 + B41925AD6F74E7E6E9FFF1F7FFF7FFF40000FFFEFEFFFEFEFFFFFCFFFFFBFFFF + F9FFFFF9FFFFF9FDFFF9F7FEF7F7FEFBF8FEFDFAFFFFFAFFFFFAFEFFFAFEFFFB + FEFFFDFCFFEEEDFF6D73EA0814C60005E10007EE0701D63028C9D4CDFFEEEEFF + FDFFFBFBFFFCF7F5FFF6F3FFF8F9FFF1F9FF98A8D62932991307CB1100F41309 + FF0000F60002F50109FD0104FF0102FE0001FA0000F90000FB0002F9000AF100 + 0CEF0103F10402EE0000DE0007D5000BC50008AE4044D9B7BAFFEFF7FFF6FFF9 + 0000FFFFF5FFFFF7FFFFFBFFFFFEFFFDFFFFFCFFFFFCFFFFFDFFFFFEFFFFFFFE + FFFFFBFFFFF9FEFFF8FCFFF6FAFDF4F9FAF8FBF7FFE6E2FF3C3BC70000C40109 + F00008EF0B0ED4585CF0DFE8FFE0EBFFEAF4FFDADFFF847FDB8780DBE0E1FFE0 + EAFFE2F4FF515CB60D06BB0D01E71513FF0001F00000EE000CFE0003FB0000FD + 0000FA0000F90000FA0001F80008F10009F10607F90301F40000E8050EE7000C + D20000A9191ABE7B7BF1EAF0FFF4FFFF0000FFFFF2FFFFF5FFFFFBFFFEFFFFFB + FFFFF9FFFFF9FFFFFAFFFFFCFFFFFFFCFFFFF9FFFFF7FFFFF7FFFFF7FFFFF8FF + FFFFF4F2FFCAC7FF1E18B30704D60507F50000EA0B12DB5863FFD1E1FFD1E2FF + CFDEFF878DFF150FA42E26A9CFD1FFEAF5FFE4F7FF7481CF201DC60E06E1090C + F10005F10004F20006F80000F80000FC0000FE0202FF0002FF0003FC0006F400 + 05F10605FD0400F90002F1070DF2030EE10000BE0E0BBF4B48CDD4D7FFF3FBFF + 0000FBFFF7FBFFF9FDFFFEFFFDFFFFFAFFFFF9FFFFF8FFFFFAFFFFFDFFFFFFFB + FFFFF7FFFEF5FFFCF4FEFBF7FEF9FAF8F6FFF6F7FFA6A6F2140FAE211AF10B0A + FA0000F10606E62026EB323FE14759F25A68FF4249FF1713D7241FC0B0B6FFD3 + E2FFDFF2FF8493D82928C4100ADD0308ED0006F60004F70002F80003FE0001FF + 0402FF0501FF0402FF0203FF0005FC0004F90401FE0401FE0000F90003F50209 + EC0509DD120DD42924BBAFB1F8F1F6FF0000FAFFFEFAFFFFFDFEFFFFFDFFFFFB + FFFFFBFFFFFBFFFFFDFFFFFDFFFFFEFEFFFEFFFFFCFFFFFAFFFDF8FFFBF5FFF6 + F3FFEDF1FF8A8DE81612B8201BF20906F60504FC0C09F90000E10311DC0416DF + 000BE40007E90C0BEB120FBFABB0FFECF8FFEAFBFF8D98D61C1AB0110BDA080C + F40004F80001F80006FE0007FE0504FA0701F40600F20400F20400F50201FB04 + 02FF0300FE0602FF0000FE0000F40002EF0C0EEF160EE41911B89090E4E9EFFF + 0000FAFAFFFAFCFFFDFCFFFFFEFFFFFFFEFFFFFBFFFFF9FFFFFBFDF8F9FFF9FF + FDF7FFF8F4FFF4EEFFEFE9FFE3DEFFD9D7FFB7BBFF5D61D81A19C71412E80400 + EE0905FE0F0BFF0001F50003EF000DF80008F6000CF81214FC0906B6A4A4F0F3 + F9FFF1FCFF969DD61813A4120BD80B0BF70003FE0000FA020BFF090AFA130DF4 + 1A12ED1D12EB1A0FEF1409F30C03FA0700FE0500FE0400FF0103FF0001FD0000 + F40707F5150DEE1A12C37E7FDAE8EDFF0000FBF8FFFBF9FFFDFCFFFFFFFEFFFF + F9FFFFF7FFFFF9FDFFFFFAFAFFF6F4FFE7E3FFCECAFFA8A7FF827FEC5E5DD148 + 48C44649CF2527C21D1DDF1412EE0905F10601F70400FA0101FF0000FB000AFF + 0003FC0000F10A0BF51910C4BCB6FFF5F3FFEAF0FB9FA4D5231CA7140AD30804 + F00304FF0005FA0A0EF61917EC2924E53A32E3433AE83F35ED3127F01D11F70F + 04FA0700FB0000FA0406FF0409FF0000FC0101F5140BF5231BD3797BDAE8EFFF + 0000FEF7FFFCF7FFFFFEFFFDFFFBFDFFF7F5FEF4F5FCFFF3F9FFECEFFFB1B2FF + 6E6CD63F3EBE2224B20F14AC0A12AC0D13B80A09BD0F0CD30F0DE90B0BF30909 + F10505F30702F80200FD0000F40007FF0007FF0003F80E0BF5190AC0C3B0FFFF + F4FFFAFEFF9DA2C92520A1140BCD0801EC0704FA0E11F62428F24344E86D6CF2 + 8785F68A88F28180F86260F6392FF41B10F30E08F90000F70000FC0002FF0000 + FB0405FA120BF61B16CD7276D5E8F2FF0000FFFCFFFDF9FEFEFFFDF9FFFAEFF7 + F6F3FDFFEDF6FFB7BFFA666BC84143BF1C1DB50C0CB60208B90003B80004B800 + 06C00000CC0604E00B09F5090AFA0609F40505F30601F70301FB0007FF0008FF + 0000F80000F31109F6220DC7C2ACFFFDEEFFECEFF7949BC227249F1E18D11710 + F50D09F51C1EEE4E51F97C80F6AFB3FFD2D4FFD7DBFFCAD0FFA1A4FF635DFF32 + 2AF9110EF40202F60103FC0003FF0000FC0505FD130CF71C17CE7378D3E8F3FF + 0000FFFFF7FEFFF5FDFFFCF8FEFFF1F9FFDBE2FF9BA0EF464ABA1C1CAE0A0AB6 + 0000BE0001CB0008D10007CD000AC7000CCB0000CB0204DF0609F8080AFF0407 + FC0201F70500F60803F90205FA0005FC0000FA0004FB1409F9230EC9B8A6FFF7 + EEFFF4FBFF9FA9D823279E1613C61510EF0E0AEB272BDE7278F9ACB2FBDDE2FF + FAFFFFFAFFFFEDFAFFC3CFFF777BFF3A38F01614F00605F50204FD0103FF0000 + FD0506FB140EF71C18CB747ED2E5F5FF0000FCFFE7FFFFF5FAFFFFF3F7FFDFE3 + FF8588E3282AA70305A00E0EC60303CD0000D10000D60001D40001CC0003C800 + 07CB0000C70003D80209F3050CFF0408FF0100FA0500F80A02FB0000F30103FB + 0004FF0206FF0A00F41D0DD0B4A6FFF3EEFFEAF1FF9EA9F3161DA20000B50C0C + E82121F74E53F5A4ACFFD9DEFFFAFCFFFFFFF4FCFFEBF4FFFBD5E5FF8A93FF48 + 4BFA1816EC0906F50403FD0103FF0000FC0405FA140EF51C1AC87C87D7E4F5FF + 0000FFFFEBFDFFF7F6F9FFDFDFFF8B87F0302AB70804B10C08CB0303D10000D4 + 0000D20000D00000CE0000CA0000CB0205CC0001C10004CB000AE8020FFB020C + FF0002FB0500FB0B00FE0A00FE0401FE0000FD0000FC0000EF130DDC918EFFD9 + DAFFDDE1FFBCC3FF404AEB111ADC0F14F3252AFB535BF4A3A9FFF1EEFFFFFAFF + FFFFF9FFFEF0F6FFFED8E9FF8D97FF4A4EFF1815ED0904F30201FB0001FF0000 + FB0504FA140FF41D1BC88A96E4E4F6FF0000FDFFF0F4FAF9F3F2FFAEA9FF2F25 + B50400AE150DDC0401D90000D30002D10008CE010ACC0508CE0805D10D01D70E + 02D60600C90002C90007DB0012EF0212F90007F80300F90B00FF0B00FF0700FD + 0001F6000BFD0003F80507E73D3EEC5354EC3B3CDA4748F60D16D80006DC0001 + E81720F3545CF5A1A5FFE4DAFFFFF1FFFFF6FFFFF8FFF4F9FFC4D1FF717AFF34 + 39F41611EE0902F30200FA0000FE0000FA0505F91510F51F1DCA9EA8F5E6F9FF + 0000F9FFF8F6FAFFC2BFFF5E53CD1000B20500CA0600E00000D30000CA0006C1 + 000CB9020CB80907BF0D00C91000D50E00D71100DB0100D10003D10014DE011B + EB0011EE0402F60A00FE0600FA0601F7000BED0115F60008FA0000F30002E600 + 00CE0500DD1915F70207F00812FF0006FA111BF5464DF08786FACAB6FFEECFFF + FFDBFFF8DDFFD8D2FF9A9FF44E54F32528F51511F30901F50400FA0301FF0000 + FB0707FB1A13F82221CBAEB9FFE8F9FF0000ECF8FAEFF5FF807CE1080098170B + CF140AE00000BD0B0FD20610C10816B60816AA0713A70B0EB01109C11500D314 + 00DC1400E00100D10000CC0013DA051FE50315EA0304F60900FE0900FD0904F9 + 0009E70008E50000EB0002FE070DFF0203FF0904FF0705FF0000E8010CFD0000 + F3040AE52B2FDC5A55E09B88FDBC9EFFC9A8FFBDA2FF958DF1585BDB2426E212 + 14F4100FF90503F60301FB0402FF0200FD0F09FA2118F12C27C6BDC5FFEAF9FF + 0000E9F7FFC6D1FF4947CF100CC30000C00B13CA0F1CAE091593181C991A1C99 + 1218950A16941020A2000EA0131AC80F0FD10C08D30B09D70000CE0F1BEB0005 + D0010EE61819FF0600FF0700FB0700F60306EB0107EC0004F80003FE0004FC00 + 05FD0005FF0002F6040FF30B17F3090EED0F10E42423DD332FD54C42E25A4CEA + 6A59FF5F54FE3F3DE32628E01515F10205F4030FFD0001F30309FF0200FE0400 + F72213FE1505C8665CE5E2E4FFEAF2FF0000EDF8FF9FA5EE1D18B90300C61416 + D8525CFD737FE56269B25F5AA96158AE5652B15356B84D5CB8394AAB303AAF0A + 119E0F10BE1514D80F0DE31416F10911E60E17F11213FF0904FF0A03FE0B04F9 + 0B08F20607F10202FA0000FC0001F90003F60007FB000CF40816EB000DD5080E + D30A0EC4171FB81822AC1721AA131AAF1F1FCF2527E41A1FE00F14E5090AF400 + 02F70003F6000BFE0000F70000F1271AFF2F1DF22919BE8D85F7E7E9FFEDF4FF + 0000F3EEFF8A82E12717C81F0FDF2920E28A84FFE5E1FFE3DCFFF1E0FFECD9FF + DCCDFFE7DFFFE4E4FFD9D9FFB7B0D3665DA02621AC150FCC1B11ED0F07EE1515 + F51216F70A0AF80907FB0C07FD0E08FB0D0AF30C09F30602FB0200FE0000FC00 + 03F6070DF4111AF31B26EC0914C91F29CD1D30B12D4B982B53842B5383163681 + 0E21A0151FC30F1BD30D16E20C11F6070BFE0B14FF0005FC0000EC0903EA241A + E90F05B34B43C5CCC9FFEBF0FFF1F9FF0000DDD9FF605BC8241AD22115E91007 + C9776FFCF4ECFFFFF9FFFFF9FFFFF5FFFAEBFFF3E8FFE3DCFFF7EEFFFFFAFFE4 + D4F35B56BF120BB21B0CE40F00EE130DF40D0EF20B0EF30A0BF50C09F90E0AF6 + 0F0DEF0E0DF10C09F90A07FD0708FD0809F90000E50B0CE61818E6080AC62328 + CA1D319E2E597A366E69346D65204F6E16309A1420C00C16D50A12E8060AF300 + 00EE0000F30000E81610F72823F01F19C42A27ACA8A7FFEBEEFFF2F7FFF6FDFF + 0000C7D2FF3640B50A13CE0C14E90108C96A6EFCEFEEFFF7F2FFF8EFFF9891C4 + 4C49B74B4BD56F6EEEC7BFFFFFF1FFF8E6FFAAA9F32422A41E0BD61C08F40F07 + EE0808E8131AF30D13EE0C0FF30E0FF31012EC1113EA1110F2110FF50D0EF80F + 0EF81E14FF2112FF2B19FF2314F12D27E02230A8325E763E7B612E6C4E2B5E6E + 2C43B1242ADB1A19F11C19FF1714FF0300F90C01FD2013FF2A20EF1C16C12D2F + AB7B80D5EAF1FFE9F0FFF6FCFFFAFFFF0000B9C1FF2C35B40C18DA0C17EF0E17 + DC747AFFF1EEFFFCF7FFBAB7CD515296171EB5040DC90E11CA5A57E3FBE9FFFF + F5FFE0E5FF474BB11908CB2009F80A00EC0000E60D16F0040EE80D12F70E11F6 + 1013F11113EE1111F1100FF30D0DF5100BF6160AF61100F11700F71C07F01407 + CD1D26A62954692967433D7E5136696B2D44A81D20C90C08D6110BEC1716F614 + 0EEF2112F62E1DF0160CBA2F2CB1888DE2C8D2FFEFFAFFF2FBFFFBFFFFFDFFFF + 0000A99FFF3029B41916E10707E71310DB736EFFF5E8FFFFFAFFBCB7D2363A8B + 0715CB0007EC000EF02F33E0DFD4FFFEF6FFE0EEFF6C77C71403C41600F60C01 + F80000F20005EF0004EE060AFD0809FE0B09FC0D0AF90D0BF70D0BF70D0AFA0F + 0BF71812F3160CEC1303F12716FA1409D14953D6517D9435744D367A45275E4D + 253E88262DB21817BA1111BD1A1DC52626CE2217C73A2BCD4E46C8A7A7FFEAF1 + FFEFFAFFEFF8FBFBFFFCFFFFFEFFFFFF0000B7A2FF412FC21D14E60300E31E17 + E48175FFF8E8FFFFFAFFC1BED72731850015D50005F9000DFE1620D8D7D2FFFB + FBFFCDE4E6879BD51206BC0E00F0150AFF0806FF0000EF0003F60001FA0000FE + 0301FE0605FD0A08FB0C0BFB0D0BFE100FF91415EF1313E90D06E9251CF90D09 + CD6673F76A97B23775513C804536704D57769D8693E9878DF66D74E36770D873 + 79E48781F8A7A1FFD5D3FFECF0FFE6EDFFF4FDFFFBFFFCFFFFF9FFFFFFFFFEFF + 0000C0A9FF321EB7150BE1150FF81209DB7369FCFDEDFFFFF4FEBFBED2283482 + 0013CB0016FF0008EE0E1CC8ECEDFFECF3F0DCFFED7EA0C40607AB0F02EC100B + FF0405FF0000F30002F60005FF0002FF0000FD0202FA0405F50508F30308F101 + 08EB010CE20611E50207E01316EA191FDC2438BB6A98BA36745635783A427C46 + 5E8381CCE2FEE6F6FFE3F2FFE8F5FFEAF3FFECF0FFEDF0FFEFF5FFF3F9FFF6FD + FFFBFFFFFFFFFEFFFFFFFFFDFFFFFBFF0000A798FF2C20B8140FE61010F81815 + E6736FFFF8EEFFFCF4FEBEBECE2D397B0F26C80010E00003CB2A39CBEEEFFFFA + FFF9D1F8E87DA4CB1C21C30B04E90000F00307FF0005FC0002F90003FE0001FF + 0102FE0303FB0406F80307F20007F00009ED000AE9000FEC0007E50B15EB121B + E01D31BE628DC0346F60377743427C425F866DD0EAE4EFFFFFF0FEFDF4FFFFF5 + FDFFF4FDFFF4FEFFF6FFFFF8FFFFFBFFFFFFFFFFFFFEFFFFFDFFFFFAFFFFFAFF + 00009EA2FF272CBD0B14E70006ED0A12E16D74FFE5E7FFFBFDFFC5CAD3333C6E + 1427A60013B31A2DC47F89F4E8E6FCFCFFF8D3F3FE6888CF1F25D20A05EA0000 + E90609FE0002F90001FA0000FB0100FC0301FB0501FA0201F70102F60005F400 + 08F60006F60007F90001F4060DF70C13EC1323C9547AC83769753A7352437748 + 5D8066CFE6D7F6FFF7F9FFF9FFFCFFFDFCFFFAFFF5F8FFF0FAFFF2FBFFF7FFFF + FCFFFEFFFFFCFFFFFBFFFFFAFFFFFAFF0000B6BEFF3039BF1118E40007EA0209 + D46E75FFE2E4FFFBFBFFD3D2DC5F6184353D9A3540B2717DE3DBE1FFFFFCFFFD + FCFFD0E4FF4357CE0F0ED20E07F20704F30C0AFD0000EF0503F70800F70A01F8 + 0B03F70A02F60500F80400F90506FB0409FF0003FE0002FF0000FC0207FC0A0D + F10B1ACA4B6CC93E6E863C725B4173495A7B60CEE3CDFAFFF2FDFFF6FFFBFFFF + FAFFFDFFF0FBFFE9FDFFEDFFFFF4FFFFFBFFFEFFFFFCFFFFFBFFFFFBFFFFFBFF + 0000D6D0FF4640BD2116DE1E14F4100AD57F7BFFF1EAFFFDF4FFFFF9FFE5D8F2 + B8B1EAB4B2F4C9CCFFF6F6FFFFFFFCFAF1FF9B9CFF2123DC0B00E30E01F70F09 + F6120DF80F05F1170BF71B0BF91C0AF71A0AF11508F20F01F90A00FE0702FF04 + 05FF0103FF0001FE0000FE0506FB090CF00B18C84668C54E7D983B745B3E7348 + 567B5BC9E2C8F7FFEFFBFFF3FFFDFFFFFAFFFFFFF5FDFFF0FDFFF2FFFFF5FFFF + F9FFFFFEFFFEFFFFFDFFFFFDFFFFFDFF0000EAE6FF645FC81F11CB2113ED130D + D87B77FFE8E5FFF6F0FFF5E6FFFFEEFFECDEFFEFE8FFECEDFFECEEFFF0EAFFD3 + CAFF413AE3140CE31A0DF5140BEE1B19E72726EA3733F63830F23F34F43E33EE + 392FE73027E9241BF41810F70A07F00002ED0709FB0102F70404FC0705F80F0E + F20C18CA4768C96291B038705D3D724B527960C6E1CDF5FFF1F9FFF5FFFDFFFF + FCFFFFFFFEFDFFFBFFFFF9FFFFF9FFFFF9FFFFF9FFFFFBFFFFFCFFFFFEFFFFFE + 0000EAF7FF919BE8201EC41613E40A10DB404BF9909EFF9EA6FFB0AAFFB7ABFF + A9A0FFA2A1FF97A0FF6B76FF5156F32C2CDE0F09D41D17E8332EFB3B3EF45562 + F45B6AE87A88FF7A84F6838BF68087EE7781E66D75EE5B5EFD4144FA222CE40E + 17DC0D12EB0606EE0A07F60A05F4140EF51119D14C69D175A2C8376B643B6D55 + 51766CC2DDD9F0FFFAF3FFF9FBFEFFFDFCFFFDF9FFFDFAFFFDFCFFFDFFFFFFFF + F8FFFFF5FFFFF4FFFFF5FFFFF8FDFFF90000E8FEFFBECFFF373DC62426E21017 + E2000CCE1022C3111FB3191DB81413B61717C10C11C0151DD4060FD50709E905 + 02E71A11EA342EF14D4DF3767FFFAABBFFA1B3F2C3D1FFC9D2FFD0DAFFCAD6FF + C1D0F7B3C1FB9DA6FF7A80FF5159E93037E21317E20507E80808F40A05F4170F + F6181AD3556CD284AED1356A61376D56507571C2DCE2F0FFFFF2FCFCF8FFFEFA + FFFFFDF9FFFDF8FFFDFBFFFDFFFFFFFFF9FFFFF5FFFFF4FFFFF5FDFFF8FDFFF9 + 0000ECFFFFE1F2FF757BDE1C1EB92522ED0708E60811EB0007DD0210DE0515DE + 0515DA030EDA0505E50903F00F02F81404F12A1BEF554DF89090FFBCC2FFDBE3 + FFEFF4FDFAF7FFFFF9FFFFFBFFF9F9FFF8FFFEF3FFFFD2DAFFBBBAFF9D92FF6A + 5FFC1C1FE6040DF00007F80000EA2117FE1D16CB9FADFF9BBED2356F56377351 + 406962C0D6E1F5F9FFFAFDFFF5FFF3F8FFF2FBFFFFFFFDFFFFFEFFFFFFFFFFFF + FEFFFFFCFFFFFBFFFFFCFFFFFCFFFFFE0000F1FFFCEDFBFFAFB4FF2926AB1A11 + D31E16FD0000ED040AFF0009F70008EB0009E6000BED0708FA0B03FC1001FC17 + 09F5291CEC5954F79CA0FFD2DCFFF2F8FFFDFFF9FFFCFDFFFDFFFFFDFFFFFDFC + FBFFF5F6FFF8EEF9FFE7E9FFC4B8FF7E74FD3A3CFF0A13F7040FFF0D10FE1B13 + EA221DBCB1BEFFAFD2D535724E3B795148716AC9DCEBF5F5FFFDFBFFF4FFF0F6 + FFEDFBFFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000F8FFF9F0F7FFEBEAFF8981F61C0EC01E10EA150BFF0502FF0206FF0000F2 + 0000F00007F50209F80104F20104EF090BEB1D1DEB484DF68A98FFC7D7FFE8F6 + FFEFF8FFF5F7FFFAF9FFF8F9FFF3FAFFEFFFFFECFFFFE7FDFFE3F4FFBEC4FF7E + 7EF23B3AFB0707EF0000EE1215F3211DD45555D1D0E2FFAFD3C53974483F7B52 + 527B73D1E4F3F5F2FFFDF7FFF5FFF4F6FFF1FBFFFBFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F8FCF0F7F9FFF4F1FFE7DDFF5747 + DB1807C82C1CFD1005FB0702FD0101FF0003FE0004FB0006F40007EF0009E800 + 0BE40E19ED2A35F1606EFC98A7FFB9CAFFC6D3FFD1D7FFDCE0FFD7DAFFD3DAFF + CFDCFFC6D7FFB9C9FFA6B5FA8891E86566E6251DDF2119F91113ED1318D82526 + B68087DCE8FDFFBFE5C73B76443F7A4E577F74D9EAF7F6F2FFFDF7FFF9FFFAF7 + FFF6FDFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FCFCECFFFFFEF0ECFFF1E9FFB0A2FF5140D7210ECF2412F30D00F61109FF + 0B0BFF0005FD0003F6000DF50014EC000FE7000CF40E16F32C38F25762F97783 + F3848FEB8992E98F94F18F91FD8887FF7E7EFF7A7AFF716EFF5755EB423BD83A + 30DE3220E93529F50B0DC51B22B7626BCCC8D5FFEDFFF9B9E0B33E77403D7649 + 5A8074DFF0F9FAF4FFFFF8FFFBFFFFF6FDF8FDFFFEFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF4FFFFF6FFFDFFF8F3FFE5DD + FFB4A9FF4738C92011C71A0BE3180CF80E09FE0001F90000F60009F60012EF00 + 0DEE0002F40208F5151CE82A35DD3E4DCC4857BD4555AE3F4EAB545BCE4B4ED8 + 3E3BDE4138ED493DFB3E2FEF2F1FDE3322DE1C07C22618C41B1EAF5663CDBFCA + FFEDFCFFF0FFEDB7DCAA4377413F7449628675E8F9FCFDF8FFFFF8FFFDFCFFF5 + F9FAFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFF5EEEDDFFFFFF8FDFFFFF7F9FFEFEFFFADA9FB5851CA3930D42117DC + 1107E70D07F60707FF0000F90002F40006F80000F60A0BF5141BE41925C52236 + A52C46922D4D8226467B132B7723339E1C20B5140CBD2011D12413D6220FCA2B + 17C42A15AE584BCB8F94FABECEFFE5F0FFEBF9F7F1FFE7D4F0C546764645774F + 6F937BF1FFFBFFFCFFFFF9FFFFFBFFF9F8FFFFFEFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF8FFFFF7FDFFF3F5FCEDFAFF + F9F2F9FFEFF5FFC7C7FF6360CE362EC11D13CB251CEE231CFF0805F40000EE08 + 09FB0603ED1A18EE2123DB1A24B11C328A2E4F7D3A647136646B3B637F6B88C5 + 717EEA5455E1534BE66255F16A5EEC796BE8B7A6FFC2B8FFE4ECFFE6F6FFF1FC + FFF8FFFCFBFFF1C0D7B748734E4C7A56799F81F3FFF4FFFEF9FFF9FCFFFBFFFD + F9FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FAFFFEFAFFFCFAFFF8FAFFF5FAFFF4F8FFF9F4FFFFF1F8FFECEEFFA5A3FD + 4A46C31F19B41A12CB1E14E21D12F01C12EE2C22EB2219CD221FB8686EDF8195 + CF3759664A7A5E3C72473B6E52A0CCCBCBE7FFDAEBFFE0E5FFD6D9FFEBEFFFF1 + F3FFF9F0FFF2EEFFEDF9FFEBFBFFF5FDFFF9FEFDFDFFFCB5C4B64D7159386445 + 9EC6A3F3FFEDFDFFECFFFFF9FFFBFFFFFBFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F4FFFFF6FFFFF6FFFEF8FFF9FAFF + F8FAFFF8F8FFFBF6FFFFF0F4FFEAEDFFDAD9FFADA9FF6A61E72F24C11D10C028 + 1BCB2215B13F35BD7870E5B7B8FFC7D6FD74918E406E434C824642784372A383 + D4F7FBE3FBFFEAF8FFE5EEFFF6FFFFFBFFF9FFFFFEF9FBFBF3FFFFECFCFBF7FB + FFFDFDFFFFFDFFB9C4C24E6F603C694EA6CFAAF3FFE9FFFFEAFFFFF7FFFCFFFF + FCFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000F3FEFFF3FEFFF4FDFFF6FEFFF8FEFFFAFFFFFBFFFFFBFFFFF9FDFFF2F7FF + F2F4FFEFEFFFD9D7FFB4AFFF958CFA8A7FEDA095F5BCB1FFF0E5FFF1ECFFF1F6 + FFADC2C03A5C3D4D794A4B794E4A7357BDDCD9EAFFFFF0FDFFF7FFFDFFFFEEFF + FFE7FFFFEBFFFFECF6FFF5F0FFF7FBFEFFFFFBFFFDFAFFADB7BE4B6D6345715A + B1D9B6F1FFEAFFFFECFFFFF5FFFDFEFFFCFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F4FDFFF4FDFFF6FCFFF8FBFFFAFA + FFFBFBFFFDFCFFFDFFFFFDFFFEFAFFFDF8FCFDF8FCFFF6F7FFF4F3FFF2EEFFF4 + EEFFF8F2FFF9F3FFFAF2FFFAF5FFF1F6FFD9E8E46380664B724C4D7853426B4F + 83A398ECFFFFE5F4F0FBFFF7FBFFE1FFFFE4FFFFE5FFFFE5F8FFF2F6FFF9FBFE + FFFDFBFFF3F1FD98A3A746695F4C7966BCE3C9F1FFEEFFFFF2FFFFF7FFFFFEFF + FCFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FAFCFFFAFCFFFBFBFFFBFAFFFDF8FFFFF9FFFFFBFFFFFDFFFFFFFFFFFFFB + FFFFF9FDFFFBF8FDFCF5F8FCFAFBFFFBFEFFFFFFF8FBFEEFF5F6F2FDFFFEF1F8 + F3F3FFF7A3C1A4446D4843724C467555507762C7E5DAF0FFF9FBFFF9FAFAEAFF + FFF0FFFFEDFFFFECFAFFF7F4FFF9FBFFFFFDFEFFEEF2F38D9C98406758548170 + C7ECDCEBFFF4FFFFF9FFFEFAFFFFFBFFFEFAFFFFFEFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFDFFFFFDFFFFFBFFFFFAFFFFFA + FFFFFAFFFFFBFFFFFDFFFFFFFFFAFAF4F5F6ECFBFDF1FFFFF7FFFFF8FFFFF8F8 + FBEBFFFFEDFFFFEBFFFFF4FFFFF8F7FFF6F3FFF7CBEBD256825E3A6D47427750 + 406E518EB29CEFFFF9F8FFFCFFFFFEFFFCF9FFFFF8FFFFF6FAFFFCEDFBF7FAFF + FEFBFFFBECF6E9879D8B3F69575E8D7DD4F6F0E8FAFBFFFDFFFFFBFDFFFFFBFF + FFF8FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFDFFFFFDFFFFFDFFFFFEFFFFFFFEFFFFFEFFFFFEFFFFFEFDFEFCFFFFFE + FFFFFEFFFFFCFDFCF8FBFBF5FFFFF8FFFFF9FEFCF2FFFCF7FFFBFDFBFBFFF6FD + FFECFFFBDDFFEC97C6A641794E3A76463D73485B8867D1ECDCEDF9F9FFFBFFFF + F8FFFFF9FFFFF9FFFAFEFFEFFBFBFAFFF9F9FFF0DCEED16F8C6B4474586B9C8C + E0FFFFE5F5FFFFF9FFFFF7FFFFFFFBFFFFF7FFFFFCFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFEFEFFFEFEFFFFFCFFFFFBFFFF + FBFFFFFBFFFFFBFFFFFCFDFEFCFFFFFFFFFEFFFFFEFEFFFFFFFFFFFEFFFFFCFF + FFFBFFFEFFFFFCFFFFFCFFF3F2FCF8FEFFF1FFFFE7FFF6D0F8DF5588633E7449 + 3A6E4646735295B5A4E8FBF8F0F9FFFDFAFFFFF4FFFFF5FFFDFCFFF6FFFFF8FF + F7EFFFE9C4DDBB4F704D4E795E7AA598E6FFFFEAF5FFFFF9FFFFF7FFFFFFF9FF + FFF6FFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFEFFFFFEFFFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFEFFFFFDFFFFFEFFFDFEFFFBFE + FFF8FFFFF4FFFCEFFFF8C6E2CF4C6D583A5E464E745E446857C5E8DADCFEF3F1 + FFFFFFFCFFFFF4FBFBF5F6FBFFFBE8FAE9EFFFF2B8D6BD486A52486A59BFDAD0 + EDFFFEEFF8FBFDFEFFFFFFFEFFFFF7FFFFF9FFFFFEFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFEFFFFFEFFFFFEFFFFFEFFFDFFFFFBFFFEFAFFFEF6FFFCE6F7EE879D91 + 546E60436455476D5B78A08EDDFFF5E0FDEEFDF8F7FFFCFFFFFFFBF5FDF2F1FF + F5EAFFF481A58F4568546A8477D4E9E1F6FFFEF6FCFBFDFFFEFEFFFBFFFFF7FF + FFFBFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFFFEFFFFFEFFFDFF + FFFBFFFEFAFFFEF6FFFCF4FFFBD3E9DD6E887A3B5A4B5E82713D6553AED8C6EA + FFF8FFFFFEFFFEFEFFFFFBEBFAECEFFFF4D9F9E1597D674A6A578AA296E6F6EF + F8FFFFF9FEFDFDFFFFFDFEFCFFFFFBFFFFFBFFFFFEFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFEFFFFFEFFFFFEFFFFFEFFFDFFFFFBFFFFFAFFFEF6FFFCF4FFFBF1FFFB + ACC4B85E7B6C4F7061466C5A5B8371D4F2E5F8FFFCEDF1ECF4FFF5F1FFF5E8FF + F0B0D2BA5779614F6D5AA3B9ADEAF8F2FAFFFFFAFCFDFFFEFFFCFCFCFFFFFCFF + FFFCFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFFFEFFFFFEFFFDFF + FFFBFFFFFAFFFEF8FFFCF1FEF6F2FFFAEFFFF9ABC5B74261525D7E6F4F74647C + 9D8FEEFFF9EFFFF7EFFFF8EAFFF4E1FFED90B59B5678604F6B58BDCEC3F2FBF8 + FDFFFFFEFDFFFFFDFFFDFCFEFDFFFEFDFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFEFFFFFEFFFFFEFFFFFEFFFDFFFFFDFFFFFBFFFEFAFFFEF4FFFAEFFEF6 + F1FFFBE5FDF198B2A55C7B6C4D6E5F507163A6C1B7EAFFF9E6FFF7E1FFF1DBFF + E97CA4884B6E545F7967D9E9DEFBFFFEFFFEFFFFFDFFFFFDFFFDFCFFFDFFFFF7 + FCFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFDFFFFFFFFFFFFFFFFFFFF + FFFDFFFFFDFFFEFBFFFEFAFFFCF6FFFBECFDF4EFFFFBECFFFA849E915B776A51 + 7264608476B1D8C8DFFFF5D1FEE4B9E7CA618A6E4B6E5490A896EEFCF1FDFFFE + FFFCFFFFFCFFFFFDFFFCFBFFFDFFFFF7FCFBFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFDFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFEFDFFFEFBFFFCF6FDF8 + F6FFFCF3FFFBE6F9F0CDE5DB94ACA246645742695A598675D0FFE8D2FFE790C0 + A3436F52587B61C0D8C6F7FFF8FDFFFEFDF7FCFFF9FFFFFAFFFAF9FDFDFEFFFA + FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFDFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFEFDFFFEFDFFFEFBFFFEF8FFFEF4FFFAF4FFFCF1FFFCCBDDD694 + AFA5466D5E315E4D8BBBA3B6E7CB47795B44725564896FDDF5E3F7FFF8FBFEFC + FFFDFFFFFCFFFDF6FDFFFDFFFDFEFFF8FCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFDFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFBFCFAFDFFFE + F8FFFCF3FCF9F6FFFEF4FFFCF0FFFBD4EBE388ACA03D695843725C6292784072 + 5449775A9FC4AAEDFFF5F2FFF5F8FBF9FFFBFFFFFBFFFDF6FDFFFBFFFDFFFFFD + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFDFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFDFDFFFFFFFBFDFDF6FBFAF6FCFBF8FFFEF6FFFFF1 + FFFED1EEE57EA29440685635614A46765A538164D2F9DFECFFF5F3FFF9F9FFFD + FFFEFFFFFDFFFFFDFFFFFCFFFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFDFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFFFEFFFFFFFF + FFFFFFFDFFFFF8FDFCF2F8F7F5FBFAF6FFFFEFFFFED0EBE18DAE9F4D745E4370 + 564F7C61CDF5DCE4FFF1F1FFF9F6FFFEFCFEFFFFFDFFFFFDFFFFFEFFFCFAF9FA + FBF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFEFDFFFEFFFFFFFFFFFFFFFF + FFFFFEFFFFFEFFFFFEFFFFFEFFFFFDFEFFFEFFFFFEFFFFFEFFFCFEFFF9FDFEFA + FFFFF6FFFFF3FFFCD1EBDE86A995476E583E684F89B39ACAEDD9E7FFF4F3FFFC + F5FBFAF5F7F8FFFEFFFFFFFFFEFDF9FFFFFCFFFFFEFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFDFFFEFDFFFEFFFFFFFFFFFFFFFEFFFFFEFFFFFEFFFFFEFFFFFEFFFFFDFE + FFFCFEFFFEFFFFFEFFFFFEFFFDFFFFFDFFFFFAFCFDF8FFFCF1FFFBCEEBDB7FA5 + 8F4B755C3C664F83AA95DCF8EBEFFFFCF6FFFFF3F8F7FFFFFFFFFFFEFFFDF8FF + FFFBFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFEFDFFFEFFFFFFFFFFFFFFFE + FFFFFEFFFFFEFFFFFEFFFFFDFFFFFDFFFFFCFEFCF9FBFDFAFCFEFDFFFEFDFFFB + FAFEFFFBFFFEFEFEF6FFFBEDFFF8CDF0DC83AD96346049466F5A9EBFB1E2F9F1 + F4FFFEF7FDFCFFFFFEFFFFFCFDFBF3FFFFFBFFFFFEFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFDFFFEFDFFFEFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFFFEFFFFFBFDFFFEFF + FFFEFFFFFDFFFFFEFFFFFEFFFFFEFFFFFBFFFFFBFFFFFFFFF7FDF8F2FFF7EDFF + F7BEDECB688F7A426856486B5DABC9BEE7FEF6EFFDF9FBFFFCFFFFFCFFFBF6FF + FFFBFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FEFFFEFDFFF9F9F9FFFFFEFBFFFCF3FCF2F0FFF4BDD6C85F8071436858567D6E + C1E3D8EAFFFBF4FFFCF0F3F1FFFEFEFFFAFAFFFEFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFCFBFDFFFFFFFFFFFEFBFC + F8FBFFF9EBFCF1AAC7B84D7262406C5B7FA899D9FBF0EDFFFAFAFFFEFFFEFFFF + FDFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFEFFFAF9FBFFFFFFFFFFFEF8F9F5FBFFF9F4FFF9E3FDEF7BA0903E6857 + 466F60A6C8BDE9FFF8F8FFFCFFFEFDFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFEFAF7F9FFFEFFFFFFFEFBFA + F6F9FFF9F4FFF9ECFFF7C1E5D5628979375E4F6C8F81D6EFE5F4FFFCFDFFFEFF + FDFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFEFFFFFCFFFFFEFFFFFFFEFFFFFBF9FDF7F4FFF7EDFFF7E6FFF99CC0B2 + 4064564B6E609CB7ADEBFEF5F8FFFCFBFFFEFDFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFDFFFFFCFDFFFDFEFFFE + FDFCFFFBF8FFFBF1FFF9EAFFF9CEEFE15E8173496C5E5A786DD6EEE4EDFFF7F6 + FFFCFBFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFAFDFFFDFFFFFCFDFEF8F9FFFDFCFEFFFBF9FFFBF4FFFBE9FFF7EAFFFB + A2C3B5537466456658A9C7BAE7FFF4F1FFFBFAFFFEFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FAFFFDFFFFFEFFFFFEFFFFFE + FFFFFFFEF6FDFAF6FFFCEDFDF6EDFFFBE8FFF75876695475677B9F8FE4FFF9E5 + FEF4F8FFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFDFFFFFDFFFFFDFFFFFEFFFFFFFFFDFFFEFBFFFEF8FFFCF6FFFCF3FFFB + EDFFF98CA89B4B6C5D597F6DB0DAC9E6FFF9F6FFFEFDFDFDFBFBFBFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFDFFFFFDFFFFFEFFFFFF + FFFDFFFFFBFFFFFAFFFEF5FCF9EEFAF4EEFFF6C7E1D34F7160446C5A608F79A6 + CBBBF6FFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFDFFFFFDFFFFFEFFFFFEFFFDFFFFFBFFFFFDFFFFFDFFFEFDFFFEF7FEF9 + F6FFFBEAFFF35D7F6E3F6A5533674F638D7BE9F7F1FFFFFFFFFFFFFFFFFFFEFE + FEFFFFFFFFFFFFFBFBFBFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFFFEFFFDFFFFFBFF + FFFBFFFFFDFFFFFFFFFFFFFFFEF7F8F4FAFFFBCFE1D45D7D6C4470593E755A48 + 7660DAE8E2F8F8F8FFFFFFFDFDFDFBFBFBFFFFFFFFFFFFFBFBFBFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFEFFFFFEFFFDFFFFFAFFFFFAFFFFFAFFFFFDFFFFFFFFFFFFFDFCFFFDF9 + FDFFFBD0DED25F7D6A46725B437D6156856FD9E9E2F8F8F8FFFFFFFDFDFDFBFB + FBFFFFFFFFFFFFFBFBFBFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFBFFFFF8FFFFF8FF + FFFAFFFFFDFFFFFFFEFFFFFCFDFFFFFCFFFFFBF5FFF56D89763D6A50205C3E5F + 9179E8F9F0FFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFBFBFBFFFFFFFFFFFF + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFEFFFDFFFFFAFFFFF8FFFFF6FFFFF8FFFFFDFEFFFFFEFFFFFBFCFCF4F4 + FCF9F4FAFFF89DB7A5558268336F5181B59DF3FFFBFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFDFFFFFAFFFFF6FFFFF6FF + FFF6FFFFFDFEFFFFFEFFFFFDFFFDF3F3FFFFFBFBFFF8EDFFF5A4D1B798D4B6D7 + FFF3F3FFFBFDFDFDFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0000} + end + object Label1: TLabel + Left = 56 + Top = 8 + Width = 262 + Height = 45 + Caption = 'www.infdj.com' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -32 + Font.Name = 'Arial Black' + Font.Style = [] + ParentFont = False + end + object Label2: TLabel + Left = 32 + Top = 56 + Width = 166 + Height = 23 + Caption = 'Jos'#233' David Guill'#233'n' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -19 + Font.Name = 'Arial' + Font.Style = [fsItalic] + ParentFont = False + end + object Label3: TLabel + Left = 216 + Top = 58 + Width = 120 + Height = 19 + Caption = '' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Arial' + Font.Style = [fsItalic] + ParentFont = False + end + object Timer1: TTimer + Interval = 15000 + OnTimer = Timer1Timer + Left = 200 + Top = 96 + end +end diff --git a/src/splash.~h b/src/splash.~h new file mode 100644 index 0000000..adb61ae --- /dev/null +++ b/src/splash.~h @@ -0,0 +1,31 @@ +//--------------------------------------------------------------------------- + +#ifndef splashH +#define splashH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TsplashScreen : public TForm +{ +__published: // IDE-managed Components + TImage *Image1; + TLabel *Label1; + TLabel *Label2; + TLabel *Label3; + TTimer *Timer1; + void __fastcall Timer1Timer(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TsplashScreen(TComponent* Owner); + + bool timeOut, loaded_main; +}; +//--------------------------------------------------------------------------- +extern PACKAGE TsplashScreen *splashScreen; +//--------------------------------------------------------------------------- +#endif