]> granicus.if.org Git - graphviz/commitdiff
gvedit source has been added to cvs
authorarif <devnull@localhost>
Wed, 6 Jan 2010 20:37:36 +0000 (20:37 +0000)
committerarif <devnull@localhost>
Wed, 6 Jan 2010 20:37:36 +0000 (20:37 +0000)
23 files changed:
windows/gvedit/))Settings.ini [new file with mode: 0644]
windows/gvedit/Application.h [new file with mode: 0644]
windows/gvedit/Editor.ini [new file with mode: 0644]
windows/gvedit/GraphX.bpr [new file with mode: 0644]
windows/gvedit/GraphX.cpp [new file with mode: 0644]
windows/gvedit/UAbout.cpp [new file with mode: 0644]
windows/gvedit/UAbout.dfm [new file with mode: 0644]
windows/gvedit/UAbout.h [new file with mode: 0644]
windows/gvedit/UEditor.cpp [new file with mode: 0644]
windows/gvedit/UEditor.dfm [new file with mode: 0644]
windows/gvedit/UEditor.h [new file with mode: 0644]
windows/gvedit/UPreProcess.cpp [new file with mode: 0644]
windows/gvedit/UPreProcess.dfm [new file with mode: 0644]
windows/gvedit/UPreProcess.h [new file with mode: 0644]
windows/gvedit/UPreview.cpp [new file with mode: 0644]
windows/gvedit/UPreview.dfm [new file with mode: 0644]
windows/gvedit/UPreview.h [new file with mode: 0644]
windows/gvedit/USettings.cpp [new file with mode: 0644]
windows/gvedit/USettings.dfm [new file with mode: 0644]
windows/gvedit/USettings.h [new file with mode: 0644]
windows/gvedit/Umain.cpp [new file with mode: 0644]
windows/gvedit/Umain.dfm [new file with mode: 0644]
windows/gvedit/Umain.h [new file with mode: 0644]

diff --git a/windows/gvedit/))Settings.ini b/windows/gvedit/))Settings.ini
new file mode 100644 (file)
index 0000000..5e1e58f
--- /dev/null
@@ -0,0 +1,11 @@
+[Settings]
+Layout=0
+Output=16
+Preview=1
+InitialDir1=C:\
+InitialDir2=C:\
+InitialDir3=C:\
+binPath=C:\Program Files\Graphviz2.20\bin
+PrePath=C:\Program Files\Graphviz2.16\bin
+PreCmd= 
+
diff --git a/windows/gvedit/Application.h b/windows/gvedit/Application.h
new file mode 100644 (file)
index 0000000..a8adb50
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef UApplicationH
+#define UApplicationH
+#define SOFTWARE_SHORT_NAME "Graphviz Editor v:0.99"
+#endif 
diff --git a/windows/gvedit/Editor.ini b/windows/gvedit/Editor.ini
new file mode 100644 (file)
index 0000000..d222597
--- /dev/null
@@ -0,0 +1,37 @@
+[Attributes]
+1=Graph
+2=Edge
+3=Node
+[Graph]
+1=URL
+2=bb
+3=bgcolor
+4=center
+5=clusterrank
+6=comment
+7=compound
+8=concentrate
+[Node]
+1=URL
+2=bottomlabel
+3=color
+4=comment
+5=distortion
+6=fillcolor
+7=fixedsize
+8=fontcolor
+[Edge]
+1=URL
+2=arrowhead
+3=arrowsize
+4=arrowtail
+5=color
+6=comment
+7=constraint
+8=decorate
+
+
+
+
+
+
diff --git a/windows/gvedit/GraphX.bpr b/windows/gvedit/GraphX.bpr
new file mode 100644 (file)
index 0000000..260d357
--- /dev/null
@@ -0,0 +1,161 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!-- C++Builder XML Project -->
+<PROJECT>
+  <MACROS>
+    <VERSION value="BCB.06.00"/>
+    <PROJECT value="GraphX.exe"/>
+    <OBJFILES value="GraphX.obj Umain.obj UEditor.obj USettings.obj UPreview.obj UAbout.obj 
+      USettings.obj GraphX.obj UAbout.obj UEditor.obj Umain.obj UPreview.obj 
+      UPreProcess.obj"/>
+    <RESFILES value="GraphX.res"/>
+    <IDLFILES value=""/>
+    <IDLGENFILES value=""/>
+    <DEFFILE value=""/>
+    <RESDEPEN value="$(RESFILES) Umain.dfm UEditor.dfm USettings.dfm UPreview.dfm UAbout.dfm 
+      UPreProcess.dfm"/>
+    <LIBFILES value=""/>
+    <LIBRARIES value="adortl.lib dbrtl.lib rtl.lib vcl.lib"/>
+    <SPARELIBS value="vcl.lib rtl.lib dbrtl.lib adortl.lib"/>
+    <PACKAGES value="vcl.bpi rtl.bpi dbrtl.bpi adortl.bpi vcldb.bpi vclx.bpi bdertl.bpi 
+      vcldbx.bpi ibxpress.bpi dsnap.bpi cds.bpi bdecds.bpi qrpt.bpi teeui.bpi 
+      teedb.bpi tee.bpi dss.bpi teeqr.bpi visualclx.bpi visualdbclx.bpi 
+      dsnapcrba.bpi dsnapcon.bpi bcbsmp.bpi vclie.bpi xmlrtl.bpi inet.bpi 
+      inetdbbde.bpi inetdbxpress.bpi inetdb.bpi nmfast.bpi webdsnap.bpi 
+      bcbie.bpi websnap.bpi soaprtl.bpi dclocx.bpi dbexpress.bpi dbxcds.bpi 
+      indy.bpi bcb2kaxserver.bpi"/>
+    <PATHCPP value=".;"/>
+    <PATHPAS value=".;"/>
+    <PATHRC value=".;"/>
+    <PATHASM value=".;"/>
+    <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
+    <RELEASELIBPATH value="$(BCB)\lib\release"/>
+    <LINKER value="ilink32"/>
+    <USERDEFINES value="_DEBUG"/>
+    <SYSDEFINES value="NO_STRICT"/>
+    <MAINSOURCE value="GraphX.cpp"/>
+    <INCLUDEPATH value="C:\MyProjects\access;cgraph;&quot;C:\Program Files\Borland\CBuilder6\Projects&quot;;C:\Projects\ATT\GraphvizEditor;$(BCB)\include;$(BCB)\include\vcl;C:\Projects\ATT\GTK\GTKTest2\lib\cdt"/>
+    <LIBPATH value="C:\MyProjects\access;cgraph;&quot;C:\Program Files\Borland\CBuilder6\Projects&quot;;C:\Projects\ATT\GraphvizEditor;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib"/>
+    <WARNINGS value="-w-par"/>
+    <OTHERFILES value=""/>
+  </MACROS>
+  <OPTIONS>
+    <IDLCFLAGS value="-IC:\MyProjects\access -Icgraph 
+      -I&quot;C:\Program Files\Borland\CBuilder6\Projects&quot; 
+      -IC:\Projects\ATT\GraphvizEditor -I$(BCB)\include -I$(BCB)\include\vcl 
+      -IC:\Projects\ATT\GTK\GTKTest2\lib\cdt -src_suffix cpp -D_DEBUG -boa"/>
+    <CFLAG1 value="-Od -H=$(BCB)\lib\vcl60.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c 
+      -tW -tWM"/>
+    <PFLAGS value="-$YD -$W -$O- -$I- -$A8 -v -JPHNE -M"/>
+    <RFLAGS value=""/>
+    <AFLAGS value="/mx /w2 /zi"/>
+    <LFLAGS value="-D&quot;&quot; -aa -Tpe -x -Gn"/>
+    <OTHERFILES value=""/>
+  </OPTIONS>
+  <LINKER>
+    <ALLOBJ value="c0w32.obj sysinit.obj $(OBJFILES)"/>
+    <ALLRES value="$(RESFILES)"/>
+    <ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib"/>
+    <OTHERFILES value=""/>
+  </LINKER>
+  <FILELIST>
+      <FILE FILENAME="GraphX.res" FORMNAME="" UNITNAME="GraphX.res" CONTAINERID="ResTool" DESIGNCLASS="" LOCALCOMMAND=""/>
+      <FILE FILENAME="GraphX.cpp" FORMNAME="" UNITNAME="GraphX" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
+      <FILE FILENAME="Umain.cpp" FORMNAME="frmMain" UNITNAME="Umain" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
+      <FILE FILENAME="UEditor.cpp" FORMNAME="frmEditor" UNITNAME="UEditor" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
+      <FILE FILENAME="USettings.cpp" FORMNAME="frmSettings" UNITNAME="USettings" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
+      <FILE FILENAME="UPreview.cpp" FORMNAME="frmPreview" UNITNAME="UPreview" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
+      <FILE FILENAME="UAbout.cpp" FORMNAME="frmAbout" UNITNAME="UAbout" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
+      <FILE FILENAME="USettings.obj" FORMNAME="" UNITNAME="USettings.obj" CONTAINERID="OBJTool" DESIGNCLASS="" LOCALCOMMAND=""/>
+      <FILE FILENAME="GraphX.obj" FORMNAME="" UNITNAME="GraphX.obj" CONTAINERID="OBJTool" DESIGNCLASS="" LOCALCOMMAND=""/>
+      <FILE FILENAME="UAbout.obj" FORMNAME="" UNITNAME="UAbout.obj" CONTAINERID="OBJTool" DESIGNCLASS="" LOCALCOMMAND=""/>
+      <FILE FILENAME="UEditor.obj" FORMNAME="" UNITNAME="UEditor.obj" CONTAINERID="OBJTool" DESIGNCLASS="" LOCALCOMMAND=""/>
+      <FILE FILENAME="Umain.obj" FORMNAME="" UNITNAME="Umain.obj" CONTAINERID="OBJTool" DESIGNCLASS="" LOCALCOMMAND=""/>
+      <FILE FILENAME="UPreview.obj" FORMNAME="" UNITNAME="UPreview.obj" CONTAINERID="OBJTool" DESIGNCLASS="" LOCALCOMMAND=""/>
+      <FILE FILENAME="UPreProcess.cpp" FORMNAME="frmPre" UNITNAME="UPreProcess" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
+  </FILELIST>
+  <BUILDTOOLS>
+  </BUILDTOOLS>
+
+  <IDEOPTIONS>
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[Excluded Packages]
+c:\program files\borland\cbuilder6\Projects\Bpl\TMSUnicodeDEC6.bpl=TMS Unicode Component Pack
+
+[HistoryLists\hlIncludePath]
+Count=5
+Item0=C:\MyProjects\access;cgraph;C:\Program Files\Borland\CBuilder6\Projects;C:\Projects\ATT\GraphvizEditor;$(BCB)\include;$(BCB)\include\vcl;C:\Projects\ATT\GTK\GTKTest2\lib\cdt
+Item1=C:\MyProjects\access;cgraph;C:\Program Files\Borland\CBuilder6\Projects;C:\Projects\ATT\GraphvizEditor;$(BCB)\include;$(BCB)\include\vcl;C:\Projects\ATT\Graphviz Editor\cgraph;C:\Projects\ATT\GTK\GTKTest2\lib\cdt
+Item2=C:\Program Files\Borland\CBuilder6\Projects;C:\Projects\ATT\GraphvizEditor;$(BCB)\include;$(BCB)\include\vcl;C:\Projects\ATT\Graphviz Editor\cgraph;C:\Projects\ATT\GTK\GTKTest2\lib\cdt
+Item3=C:\Program Files\Borland\CBuilder6\Projects;C:\Projects\ATT\GraphvizEditor;$(BCB)\include;$(BCB)\include\vcl;C:\Projects\ATT\Graphviz Editor\cgraph
+Item4=C:\Program Files\Borland\CBuilder6\Projects;C:\Projects\ATT\GraphvizEditor;$(BCB)\include;$(BCB)\include\vcl
+
+[HistoryLists\hlLibraryPath]
+Count=2
+Item0=C:\MyProjects\access;cgraph;C:\Program Files\Borland\CBuilder6\Projects;C:\Projects\ATT\GraphvizEditor;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib
+Item1=C:\Program Files\Borland\CBuilder6\Projects;C:\Projects\ATT\GraphvizEditor;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib
+
+[HistoryLists\hlDebugSourcePath]
+Count=1
+Item0=$(BCB)\source\vcl
+
+[HistoryLists\hlConditionals]
+Count=1
+Item0=_DEBUG
+
+[Debugging]
+DebugSourceDirs=$(BCB)\source\vcl
+
+[Parameters]
+RunParams=
+Launcher=
+UseLauncher=0
+DebugCWD=
+HostApplication=
+RemoteHost=
+RemotePath=
+RemoteLauncher=
+RemoteCWD=
+RemoteDebug=0
+
+[Compiler]
+ShowInfoMsgs=0
+LinkDebugVcl=0
+LinkCGLIB=0
+
+[CORBA]
+AddServerUnit=1
+AddClientUnit=1
+PrecompiledHeaders=1
+
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=
+  </IDEOPTIONS>
+</PROJECT>
\ No newline at end of file
diff --git a/windows/gvedit/GraphX.cpp b/windows/gvedit/GraphX.cpp
new file mode 100644 (file)
index 0000000..793acbd
--- /dev/null
@@ -0,0 +1,43 @@
+//---------------------------------------------------------------------------
+
+#include <vcl.h>
+#pragma hdrstop
+//---------------------------------------------------------------------------
+USEFORM("Umain.cpp", frmMain);
+USEFORM("UEditor.cpp", frmEditor);
+USEFORM("USettings.cpp", frmSettings);
+USEFORM("UPreview.cpp", frmPreview);
+USEFORM("UAbout.cpp", frmAbout);
+USEFORM("UPreProcess.cpp", frmPre);
+//---------------------------------------------------------------------------
+WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
+{
+
+        try
+        {
+                 Application->Initialize();
+                 Application->CreateForm(__classid(TfrmMain), &frmMain);
+                 Application->CreateForm(__classid(TfrmSettings), &frmSettings);
+                 Application->CreateForm(__classid(TfrmPreview), &frmPreview);
+                 Application->CreateForm(__classid(TfrmAbout), &frmAbout);
+                 Application->CreateForm(__classid(TfrmPre), &frmPre);
+                 Application->Run();
+        }
+        catch (Exception &exception)
+        {
+                 Application->ShowException(&exception);
+        }
+        catch (...)
+        {
+                 try
+                 {
+                         throw Exception("");
+                 }
+                 catch (Exception &exception)
+                 {
+                         Application->ShowException(&exception);
+                 }
+        }
+        return 0;
+}
+//---------------------------------------------------------------------------
diff --git a/windows/gvedit/UAbout.cpp b/windows/gvedit/UAbout.cpp
new file mode 100644 (file)
index 0000000..21d45a3
--- /dev/null
@@ -0,0 +1,14 @@
+//---------------------------------------------------------------------
+#include <vcl.h>
+#pragma hdrstop
+
+#include "UAbout.h"
+//--------------------------------------------------------------------- 
+#pragma resource "*.dfm"
+TfrmAbout *frmAbout;
+//--------------------------------------------------------------------- 
+__fastcall TfrmAbout::TfrmAbout(TComponent* AOwner)
+       : TForm(AOwner)
+{
+}
+//---------------------------------------------------------------------
diff --git a/windows/gvedit/UAbout.dfm b/windows/gvedit/UAbout.dfm
new file mode 100644 (file)
index 0000000..05fd8e6
--- /dev/null
@@ -0,0 +1,2115 @@
+object frmAbout: TfrmAbout
+  Left = 358
+  Top = 296
+  BorderStyle = bsDialog
+  Caption = 'About GVedit'
+  ClientHeight = 150
+  ClientWidth = 281
+  Color = clBtnFace
+  DefaultMonitor = dmPrimary
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel
+    Left = 0
+    Top = 0
+    Width = 281
+    Height = 121
+    BevelInner = bvRaised
+    BevelOuter = bvLowered
+    ParentColor = True
+    TabOrder = 0
+    object ProgramIcon: TImage
+      Left = 5
+      Top = 5
+      Width = 82
+      Height = 110
+      Picture.Data = {
+        0A544A504547496D6167658BFE0000FFD8FFE000104A46494600010201004800
+        480000FFE116E94578696600004D4D002A000000080007011200030000000100
+        010000011A00050000000100000062011B0005000000010000006A0128000300
+        0000010002000001310002000000140000007201320002000000140000008687
+        690004000000010000009C000000C80000004800000001000000480000000141
+        646F62652050686F746F73686F7020372E3000323030373A30333A3134203134
+        3A34373A30370000000003A001000300000001FFFF0000A00200040000000100
+        000096A003000400000001000000DA0000000000000006010300030000000100
+        060000011A00050000000100000116011B0005000000010000011E0128000300
+        000001000200000201000400000001000001260202000400000001000015BB00
+        00000000000048000000010000004800000001FFD8FFE000104A464946000102
+        01004800480000FFED000C41646F62655F434D0002FFEE000E41646F62650064
+        8000000001FFDB0084000C08080809080C09090C110B0A0B11150F0C0C0F1518
+        131315131318110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C
+        0C0C0C0C0C0C0C0C0C0C010D0B0B0D0E0D100E0E10140E0E0E14140E0E0E0E14
+        110C0C0C0C0C11110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C
+        0C0C0C0C0C0C0C0C0C0C0CFFC00011080080005803012200021101031101FFDD
+        00040006FFC4013F000001050101010101010000000000000003000102040506
+        0708090A0B010001050101010101010000000000000001000203040506070809
+        0A0B1000010401030204020507060805030C3301000211030421123105415161
+        1322718132061491A1B14223241552C16233347282D14307259253F0E1F16373
+        3516A2B283264493546445C2A3743617D255E265F2B384C3D375E3F3462794A4
+        85B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6E6F637475767778797A7
+        B7C7D7E7F7110002020102040403040506070706053501000211032131120441
+        51617122130532819114A1B14223C152D1F0332462E1728292435315637334F1
+        250616A2B283072635C2D2449354A317644555367465E2F2B384C3D375E3F346
+        94A485B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6E6F6273747576777
+        8797A7B7C7FFDA000C03010002110311003F00F4D199597583DC4D6E0D21A0B8
+        C91BB86CA5F6A67EEDBFF6DBBFF22B3B11E1B959A5D67A63D668DD00FF008377
+        8872967F55C5C0C77E55D945CD616C3435A0B9D061BAB3F3BE9A3A0049D00EA8
+        02729C6101C5291118C46E645BA735BD9B69FF00AD3FBFF6508F512013B2C813
+        AFA4FEDA1ECB8CC7EA1F5AFEB18F5B12FABA574D90D664DCD2E7D825C37E362D
+        7B7D4ADAEFF0D63EAFF8245B3A17D63A6B75B8FF00599975A262ABF18B1860C6
+        B6576DCFADBFF5AB13412751035F633CB0E381E19F310131F308C659231978CE
+        3FF70F58FEA6E6FE6593AFF827F6E505DD62D06056EF0D6A7F31BBFEA573183F
+        59736BCE774AEBE061E5301DB7376BEB787FB599155CF69F52877F9F57F85FF4
+        6B6B2EFC3C41EBE5E7B31EA0F8DF6EC6027646D6EE67BDDBBF3588C4895D5823
+        E60778ACCD8A788C6EA51C9AE3C91F93247FABFDDFD26E8EB3691FCDBBB7F827
+        F7E159C6EA22EA45A410D92D24B4B608FDE6BBE8AC6B1F5B011F6AD4067E6B7F
+        95FF0006A1F57F3DA73ACC275BEA0BAB2F634803DCC277F0D6FD3ADDFF004112
+        1884ADE9D96070D14D66B8BF11FB86B8E4EBE2CFFD46AFD7607B6420B99A4924
+        929FFFD0EF709C5B979A43DB5FE99BABF8FE6DDFCA62E67FC65596BF170ABF55
+        AF63ECB01F4F41BB6376E9BECFCDF576AE9B09A5D979A031AF3EB3747981FCDB
+        BF9362C9EB986CEB01FD2F2DCCC775B796D6C63585D4FA55BECA73373DB55DF9
+        BEAFAD5EFC7FB37AD81FA3B7F48864871E331BAB0CDC9F30397E6B1E631E28E3
+        97AA3AEB1947825FF49DDC57555E3D35E35D4578EDAAA14B034802B1FCDB5A3D
+        6FF46A66D7FA4EFD629FCFEC7F7BFE39701D3FEB5F50FAB98D4E3F5BC56E4E2D
+        90DC5CDA22DADE7E9FA7A7E92BBBF7F1EEFD2AD077F8C6E9766EAB170AEBDEFD
+        C195D7438D927DDFBA7F9490CA2BD4083DB86FEC44F929D938E70C98CDF0CCE4
+        8C3D3FEB2392719424BFF8CAF40E0E1DD6595BEFAADB3D32C0411596FE99A4FA
+        967E7B68589D6FEA3F5CB7ABE267E37507E57ACEAC8C8BDE6CBB0EC03D56976B
+        EEC5AEE1EDB2BFE6BFC257FE11FA3D2FA6753FACFD56BEA1D6EA6D3898F53323
+        1B02D734597025DE8DB94CA5A5B5D1EA56F7595FA7FA47FF0082F4FF009CE9B3
+        F36FA3A8EE6B2B38F8A18FCE6CD65AD16CB1AF7BEC6577B1EC66FBBF47EB7ABF
+        CDFE7A10893294CE9C5400F08F764E6734461C1CB40F19C2672C93F5187B99F8
+        7D18FF00AB0E08BCB62FD70EAFD33359D27EB7B6BC7B6C03D0EA8C1BA9B0027D
+        F6FA2F657B1DBBFA452CFD0FFDA9C6AD6A31F663F57C1B7D5AC8F55AD3B7BB6D
+        73AAD3F4AFFA4DB15FCBE898FD66BEA383D4316B7D6EB2A6361E43ABDB530B2F
+        C578A7F4766EB1EF6FFDB777E8D719D31F9FF573ABD5F56BAB066457BD96F48C
+        A276870166F6E3FA9B1CE6FAAF1E9ECFFB4D95FA3FE66EAD3DA80F5FE2FA939B
+        C83A8E08551A5D87686EBE83CC309FCD3FE8DDFF00A2D67B7EB76331DB73B16E
+        C732417B07AAC001893B365DFF0080AD4A6FC2EA3438E3DADBEA7087961923FA
+        C3E956FF00EB20B9B8C70709092A5876595B8D16997B3BF88FCD7FF692494FFF
+        D1EF311A1D959A0B5CFF00D337461DA7F9B777DD5AB618DDD1E8DE356E9EA1F0
+        FF008FFCD553123ED59B2E7B7F4CDD6B049FE6DDFBAD7AB6DDBEA0FD2E472DE5
+        AE8E3BFE8BFCE4E1B31CAAFF00F45786B6FA3AAFF8C8A9B92DB0E0F40ADB5B01
+        717B465DBFA56BAD7BAC3E96DF77BF7FF39855AEC710E3E4637DBB1E9CA0DCA6
+        97FBAC7B49D4359BEA7E47B2CD8D6AE33FC5DE2D5D4D9D63AA653AD7372FA897
+        39AD6970B1A0585ACBBF46FF006B7EDAE77B3D35D955858B556D717E459754D7
+        B5B739877C17389F7329637F3FF75117F8AA55B787F555939983556CB9EDB5D4
+        D961A7D56D85ED0E32D97BABBDDE9D7EDDB63FFC17F85F494E9BE8B856EF4AFA
+        CBED7D6C6596ED717561ECB031BF68F76DF4ECFA1FF99A0BFA5E29B4DC6ECA75
+        D63F75CF2C9F51AC6D8C6D165471FD0F47D3BECAFF0045532DFF008552A30598
+        EEC6AEBC8C934E39B21B630BDEE75837B2C37BEADFFA26BEE67FC27A9FA5B3D8
+        96BFCAD1E9FC47EEA5AF1696DAFB1B8F7875A2B2FF00D2989682C6BB6FDA36FB
+        59ED72E77EBAFD5E6F57E84F14536B73F101BF05E5E0BB7874D94D7BAE7BBF4E
+        C6FE67F86F46C5A9D77AD63F46C139565B717B835B535F2D0480F7B9CEDF5B7D
+        B5B1BBDEB9CC1E87D67EB152DEA5D733B270B1721A2CC7C2C56B85AE639D15D9
+        9593E9D8CAFD4FA7F67A99FCDBFF00C1FD0530C3E8F72678604F0C68714E647C
+        DC31FEAAD12D686E3FBB41BB818EECEE918D919F8B6D19D6524E4D4F716B85A3
+        DAE2EAECB9AF67ADB7D5D8E4D674838D94DC8C7AEEAAD6B896D8C7C1D1B3CFAD
+        EE6FF592B7EA17466B776265F53C4B981E5B6B2CB1FAB74F7D7754E6BFFB3E9A
+        A15752EABF57FA8B3A5F5FB9D762D9B9F8D9D5B4D62C60FD1D8F3558D77A77D1
+        B99EB5294708C9E9C52919D1A84E3C3C7FDCF54BD4933E1D4D569AC6BD2F5785
+        9D7643983259B2FAE1BBA00DE08DDAB585CD63DA926C7A8372590E7BBF48DD6C
+        041FA07F79B5FB5255D96F47FFD2EF311DB72B34FA829FD337DCE88FE6DDFBCA
+        C5B91B5963DB98C2E6B65B019CEC739BF9DFDA41C1F53ED79BE9ED0EF59BF4A6
+        3F9B77EEA239D987A89A4BDA5B763925A3716B5CD76CDDFF0007EA7ADFF5CF4B
+        FE0D386CB25BBC37F8BAC575FF0054B10D590CC7B6BCFB2E169DA4D67D33435F
+        B1EE6FABBF7B6BD8BB0E9D5D98B85463B72E8A28A6B730D1B5AF70873834FACD
+        B5ADFF0047BFF44B9CFF0014965FFF00362EA18580D198F6383A67E8D2EFCD5D
+        99397E9BB5ABF3BF7BF7BE29044AECF97F2FD272EEAF32D65ADC8CBAAFC7166E
+        662D86B2F731BBBD5AAEBD9E951B7DD5D95D0FA5FF00CD7EB3956D76FE8C98FF
+        00A0B71EAC778C6A5D65B6D8C61A8D6D25BED65BF4BDF73ACFB4555633EBFE6E
+        DFD2BEBFD1D978D99CE746EA606E9FA5C7DEA4EB32058017553BB8F77EE946BF
+        251BBFA8EFFF007CF13FE3287AB8DD31C6E6DF51B1F5B88DA06EB18D7D4C76D3
+        FE15B45ABB066555750DBABCC60AEC6B5EC05AC90D2EF68DA5DF9BF410BA8F4E
+        ABAD615DD3F38576517319BB69735CD209732CA9FEED96B1FEF63972B89FF3DB
+        EACB4D15E37EDDE9ADD6BBB1C816813005B88F3EA7A9A7F80F519FCB5678E393
+        0C3112212C265C065F2CE397D4624FE8C98F8489190B22435FF07FC27B07DA36
+        BBF5CAF8B3B33B1D7F3971BFE336EA4E063D66D6DD736D7BDA5A1A0806BF4457
+        ED27F9DB2C67FDB68D57D7DEB9D45B657D2FA0E55B6D6F7D3638B4358CB1A7F4
+        B5596BCFA6CB2AFE527E99F573ABE5752675BFAC6FAACCDACEEC4C06B8BEBA5E
+        06E6DF7DA3D976455FE0AB67E86AFA7EA7EE1E5C8C190659189942CC211225C5
+        2E9C5287CB18AA40C8708BD6AC9BFF00BA7A3A3DAEAB758DB0B1F5B5CE11008A
+        FE8FB652499EA18F5087385AC82D98FA0FFDF4955AD7F97666FD1FE5DDFFD3EF
+        70DA5D959A3D36DBFA66FB5D007F36EFDE0E451416E67ACDC566EDACAF6EE6ED
+        681BACF64561DBBFADFD8D8838801CACD963ACFD33746183FCDBBF955A39ADA2
+        DDC31AEE5BF9C0910D23FD3A7C766396FF00CBFEF5E2FEA0D6703EB07D63E86E
+        A18E75790DC8AEB711A30BDFAB7734FF0082B31D76E693E9B8FD8EAFCEEEDFDE
+        FF008B5E7BF59BA857F56FEBB51D6EBA9CF665E13ABCAC41606DA5EC1B2AF536
+        D8F7D4CB1CCC3FD259FE86DFE7176DD272D9D43A2E2679C77CE5E3B6E76C77B4
+        3AC0DB1ED66EB83FE99F6A43B78FF2FD254875EE3F97E8B64D445A47D92AD77F
+        76EB31FF00069CD2E16C8C6A812FF16CFD03FF0004A373582D9FB35D30F3F4B9
+        D23FD329FA7539C09C6B6777770FDC3FF0C9D7D7C3F97E92DAD7EA3F97C8B555
+        BFD4DA712A2006776C08DDA88AC2C7FACEEC9C5FABB9F7D029C175753B7653A1
+        CE6B7739A5B406319FACD93E9637BFF9E5B35D75830DC6B468CFCE1FCAFF0086
+        5E7BF5973ACFADDD768FAABD18BC6163BF7F50BDA644B1DB6D7EAF731F5626ED
+        B57BFF004F9BFF00148196FE3FCBF79311FB7F97CACBFC58F48EB14635B9FE85
+        4FE91D418F60A9EE1EA0B2996332581CC7B7D2B3F498FF004FFE1177CEC5B37F
+        F45AB6B899D5BAFB63FD128D1898B8B895E2E3E2595D18F5BAAA98D700035B0D
+        03F9E467359BBFA3DDAB8FE70FDDFF008E481A14A3A9BF2FE5F2A2F43D27563D
+        3156EB5A3636088D8FD7DAD624A6F001A4063ABFD337DAF327E83FF956249B67
+        8977E8FF002EEFFFD4EF310B46566EE2F03D66FF00361C4FF36EFF00461CE56C
+        3AADDF4F2396FE6DBE1FF16AA6239ADCACD2EB4523D66FBCEDFF0046ED3F48AD
+        0BAADFFD39BCB759AFC0F9278D98E475FE5FF7CE1FD61E8DF553328764F56C72
+        EB9AC04643B7D16C37E9176486D4F7B58DFF0049EA2CDE8F91F588F4BA713EAF
+        E2FA1D27199B71F2FA91B375AC9DCD7D34E352FB5F56D77E8DF636967A7FCDAB
+        3D6D94751EB3898775E2EC4DB43AFF00A25A5BBEC73AB701FA3D963ABADAF5D1
+        3722B34B89CE6CFBF935FEF2AF1072E4C964886397B7C313C366B8B8A462D584
+        CE59E4122630C52E08C227878BD3C5C73971717E93CFDB97F5E709A6CBA8A3A8
+        D62773313D6AEF8FCF753565D4DAADFECDDBD6874DFAC3D333714E5D990FC76D
+        45C6EF55CE66CD8D732D6DC1C3F40FA9FF00CEB2C5A1916D51FD35A637FF00A2
+        F0F82E53EB174CE9F91D57D17BC598BD57D0AF336968F7EFF4BD696FB1B6FA6D
+        67BBFE0D2CB784467132A321094244CAF8CF0FA78BF4919A5ECF0CE2491C7084
+        A123C62426787D3C5297AA2D0EB1F5B7A87D62CA3D03EA77AD636C0D66575171
+        7868619DC5A4337E363FEFE4ECF5ADFE6F16AFF08BA2FAB9F57BA7FD5CE9BF67
+        C675AEC8B435D95922BB1A6C734ED6B40F4DDE9D356E7369ABFF00467E915CE9
+        989D23A663B717A7D9562D23612DAFD21B9C67DEF7BB759658E8FE72C7AB2EBE
+        A75208CD69F23E94FD2568468EADA3215436D7F97CC91F6500387A990347FE6D
+        BE3FF17F9A9ECB296B87BF22493036DBFBBFF168565B4FA448CC64C593FCDF8A
+        9BF21836C67379749FD1690D4B87CFAFF2F9517E5D3F97CCB3EC8349F796FACD
+        D6CDC1DF41FF00E91AC724A3639967A46BB3D7FD3326C1B7F71FEDFD1FB52428
+        5AFF00D1FE5FBCFF00FFD5EFB03D4FB666FA65AD3EB37570247F36EF02D574FD
+        AE48F52B9D3F35DE1AFF00845430D9BF2B347A6DB7F4CDF6BF8FE6DDFC97AABF
+        58BAFF0049FAB587F6DEA98EC0D739ACA69A435F658F8FA35B1CCA9BB6A6FB9F
+        63EC67FDB9E9D6F70D961DFEBE2D6EBDD2FA8DC71FAB74F2CB33B0D81AEC704B
+        7D7A5CEDDE931EF7FB3229B07A98DFF6DA5D37EBB74BCA6BA8B32598994C916E
+        36535D5DCC7CFBD9654F7D6E6ED55BA2FD73E91D4FAB37A3D9D2AEE9DD42C607
+        D156654181E1B36FE6B1CEADDE987D95EFAFD2B367F39EA2D9C8C5E8DD4035B9
+        387D3F31FB5EFA8586AB0ED6BB6B9CCDF53BD8DFDE4C963F519E33C329571581
+        C12F38B0CB09123381E09487AF4338CEB6E28FEF7F84D7EA3F5C3A361545F775
+        1C6DB0746CEE33C6D68B0B9CE547A3E3F51EB9D56BEBB96C389874B8FD871EF6
+        9165AF2D735B976D24B5D4E3D6CFE8B5FF003967F3FF00E8FD5D2C1C0FAB82C7
+        5BD2F03A58B2A077598DE8EE688F6973AAA7D9B95B63F0DF915B5A315F65C4BA
+        B02D6173C35AE6BDEC68AF759B1CDF7203119112C9212E1D63103863C5FBCAF6
+        8CA40E43C7C26E31E19421C5FBFF00A7EAFF0009B2C6E76E836D5A864FB5C7F7
+        BFE1130664FA3B7D4AE3E0EE777FC62C5E8FF593A4F54C8CEA2BC56631E9F90D
+        C37BB20D6C63ED9B5BB71DC1AFDEEFD17D05A6D7639659156293409BA1ECF600
+        E74FA9FA2FD1FD1FCF52DFF2D1935F1EBFBCD8737276386FAE22CD0B5DE3FF00
+        18A67ED41C06FAF931ED77EEFF00C62C4775AC43D54F4B6F4FDE0D2FBFEDE033
+        EC9B7573A7276FF2367D0FA6B4596625D686535E258F249DACB18491B79DA2BD
+        C97F6A75F1E9FBC96FF537D3EA16B9DEB37568207D07F8B9C9267B363A96FA6D
+        ABF4CDF6B351F41FAFD16249BD577E8FF2EEFF00FFD6EF31003959BEC759FA66
+        E8C3B4FF0036EEFBEB5CBFF8C8E89D4F32BE99D53A661D992FE8F77A96623BF4
+        85ED7FA2FF006B1965AF7EC7636CB18CFF0049FC85D2BEE3819190E7D37D9EB3
+        DAF69A034910DD9EEF51CC4C3ACB419FB37509D3F36AEDFF005C47A52D20DDD3
+        C574AC9FAC3D5BEB7D59D453D629E8E5B6DB9F8F9B638520B996EDC7C7A3F455
+        BE8AEC7319557FA4B1FF00CE6CAD67FD5AFAB4FC4FA8DD57A8D9D1ADC9EB0F73
+        E96D56FAD59763CE2BACAFD2A6DC7BDCDFE7ACFD0FE92DFD263EFF004FD8BD0D
+        DD69834FB3E78E3B55D8FF00C6288EB2CED4F503CC88ABB99FF48888F8AACF67
+        CDBEAFF4CEA35FD61C0CBFB0DF8D87674FC8AEF3F65FB2D41C31B237D2E87D8F
+        C8636DF4FF005BCE7FAF9377FD6964FD5DE97919B57471D37A6E40EA43A87A87
+        AA3771A3D1ACD476977D063F1EC6BAC7FD0D9FF09EBFE8FD86DEAD55D5BEBB71
+        33DD5D8D735ED2DAA0B5E36BDBA5BFBAA9F4C774AE8F8E313A6F4FCEC4C70F36
+        0A9A1846F70D8E74DB758FF737F94801E29B3D9F38EB1F566FC9AFEB2E70E9B9
+        2ECBFDA83EC245764FA36D992FB1D5D4DF6DAC735B57BF6D8B4FEB4F40EBECEA
+        4C774AC6B5CCFACF87463673B6B88AEE0FC7375D79ABF9AF57D267AB6E47D3F5
+        B357A03BAC30107ECFD40180262AEDFF005C516F57AF86D1D43EEABC777FA447
+        8456E8B3D9E2BA8747FD9BF5AAD657D36FCCE9785D19D8C2A6B1C05C5B59AFD1
+        F5E8FA36DCF76FB5D5FE97F9CFF0885FE2E7031B1FAE3B273FA3E751D4F28DDE
+        845069C3C766D7BCD75596DA2EF51ECFD033D4FF00D4CBBCFDAEDDD3F67EA1AC
+        E9157E773FE1123D5DA5FBBECFD43998DB5771B7FD22142F756B5B376C68DD50
+        15D8DFD33747BA4FD07FD176FB1243C6BFED8581B5E457B6C0F71BC34681AE66
+        D1E9B9FF00BC9237AAABD34FFFD9FFED1BCA50686F746F73686F7020332E3000
+        3842494D04040000000000071C020000020002003842494D0425000000000010
+        460CF28926B856DAB09C01A1B0A790773842494D03ED00000000001000480000
+        0001000100480000000100013842494D042600000000000E0000000000000000
+        00003F8000003842494D040D0000000000040000005A3842494D041900000000
+        00040000001E3842494D03F3000000000009000000000000000001003842494D
+        040A00000000000100003842494D271000000000000A00010000000000000001
+        3842494D03F5000000000048002F66660001006C66660006000000000001002F
+        6666000100A1999A0006000000000001003200000001005A0000000600000000
+        0001003500000001002D000000060000000000013842494D03F8000000000070
+        0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E800000000FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E800000000FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E800000000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF03E800003842494D040000000000000200053842
+        494D040200000000001600000000000000000000000000000000000000000000
+        3842494D0408000000000010000000010000024000000240000000003842494D
+        041E000000000004000000003842494D041A0000000003490000000600000000
+        00000000000000DA000000960000000A004D00610069006E0020004C006F0067
+        006F003200000001000000000000000000000000000000000000000100000000
+        0000000000000096000000DA0000000000000000000000000000000001000000
+        0000000000000000000000000000000010000000010000000000006E756C6C00
+        00000200000006626F756E64734F626A63000000010000000000005263743100
+        00000400000000546F70206C6F6E6700000000000000004C6566746C6F6E6700
+        0000000000000042746F6D6C6F6E67000000DA00000000526768746C6F6E6700
+        00009600000006736C69636573566C4C73000000014F626A6300000001000000
+        000005736C6963650000001200000007736C69636549446C6F6E670000000000
+        00000767726F757049446C6F6E6700000000000000066F726967696E656E756D
+        0000000C45536C6963654F726967696E0000000D6175746F47656E6572617465
+        640000000054797065656E756D0000000A45536C696365547970650000000049
+        6D672000000006626F756E64734F626A63000000010000000000005263743100
+        00000400000000546F70206C6F6E6700000000000000004C6566746C6F6E6700
+        0000000000000042746F6D6C6F6E67000000DA00000000526768746C6F6E6700
+        0000960000000375726C54455854000000010000000000006E756C6C54455854
+        000000010000000000004D7367655445585400000001000000000006616C7454
+        6167544558540000000100000000000E63656C6C54657874497348544D4C626F
+        6F6C010000000863656C6C546578745445585400000001000000000009686F72
+        7A416C69676E656E756D0000000F45536C696365486F727A416C69676E000000
+        0764656661756C740000000976657274416C69676E656E756D0000000F45536C
+        69636556657274416C69676E0000000764656661756C740000000B6267436F6C
+        6F7254797065656E756D0000001145536C6963654247436F6C6F725479706500
+        0000004E6F6E6500000009746F704F75747365746C6F6E67000000000000000A
+        6C6566744F75747365746C6F6E67000000000000000C626F74746F6D4F757473
+        65746C6F6E67000000000000000B72696768744F75747365746C6F6E67000000
+        00003842494D041100000000000101003842494D04140000000000040000001C
+        3842494D040C0000000015D70000000100000058000000800000010800008400
+        000015BB00180001FFD8FFE000104A46494600010201004800480000FFED000C
+        41646F62655F434D0002FFEE000E41646F626500648000000001FFDB0084000C
+        08080809080C09090C110B0A0B11150F0C0C0F1518131315131318110C0C0C0C
+        0C0C110C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C01
+        0D0B0B0D0E0D100E0E10140E0E0E14140E0E0E0E14110C0C0C0C0C11110C0C0C
+        0C0C0C110C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C
+        FFC00011080080005803012200021101031101FFDD00040006FFC4013F000001
+        0501010101010100000000000000030001020405060708090A0B010001050101
+        0101010100000000000000010002030405060708090A0B100001040103020402
+        0507060805030C33010002110304211231054151611322718132061491A1B142
+        23241552C16233347282D14307259253F0E1F163733516A2B283264493546445
+        C2A3743617D255E265F2B384C3D375E3F3462794A485B495C4D4E4F4A5B5C5D5
+        E5F55666768696A6B6C6D6E6F637475767778797A7B7C7D7E7F7110002020102
+        04040304050607070605350100021103213112044151617122130532819114A1
+        B14223C152D1F0332462E1728292435315637334F1250616A2B283072635C2D2
+        449354A317644555367465E2F2B384C3D375E3F34694A485B495C4D4E4F4A5B5
+        C5D5E5F55666768696A6B6C6D6E6F62737475767778797A7B7C7FFDA000C0301
+        0002110311003F00F4D199597583DC4D6E0D21A0B8C91BB86CA5F6A67EEDBFF6
+        DBBFF22B3B11E1B959A5D67A63D668DD00FF0083778872967F55C5C0C77E55D9
+        45CD616C3435A0B9D061BAB3F3BE9A3A0049D00EA802729C6101C5291118C46E
+        645BA735BD9B69FF00AD3FBFF6508F512013B2C813AFA4FEDA1ECB8CC7EA1F5A
+        FEB18F5B12FABA574D90D664DCD2E7D825C37E362D7B7D4ADAEFF0D63EAFF824
+        5B3A17D63A6B75B8FF00599975A262ABF18B1860C6B6576DCFADBFF5AB134127
+        51035F633CB0E381E19F310131F308C659231978CE3FF70F58FEA6E6FE6593AF
+        F827F6E505DD62D06056EF0D6A7F31BBFEA573183F59736BCE774AEBE061E530
+        1DB7376BEB787FB599155CF69F52877F9F57F85FF46B6B2EFC3C41EBE5E7B31E
+        A0F8DF6EC6027646D6EE67BDDBBF3588C4895D5823E60778ACCD8A788C6EA51C
+        9AE3C91F93247FABFDDFD26E8EB3691FCDBBB7F827F7E159C6EA22EA45A410D9
+        2D24B4B608FDE6BBE8AC6B1F5B011F6AD4067E6B7F95FF0006A1F57F3DA73ACC
+        275BEA0BAB2F634803DCC277F0D6FD3ADDFF0041121884ADE9D96070D14D66B8
+        BF11FB86B8E4EBE2CFFD46AFD7607B6420B99A4924929FFFD0EF709C5B979A43
+        DB5FE99BABF8FE6DDFCA62E67FC65596BF170ABF55AF63ECB01F4F41BB6376E9
+        BECFCDF576AE9B09A5D979A031AF3EB3747981FCDBBF9362C9EB986CEB01FD2F
+        2DCCC775B796D6C63585D4FA55BECA73373DB55DF9BEAFAD5EFC7FB37AD81FA3
+        B7F48864871E331BAB0CDC9F30397E6B1E631E28E397AA3AEB1947825FF49DDC
+        57555E3D35E35D4578EDAAA14B034802B1FCDB5A3D6FF46A66D7FA4EFD629FCF
+        EC7F7BFE39701D3FEB5F50FAB98D4E3F5BC56E4E2D90DC5CDA22DADE7E9FA7A7
+        E92BBBF7F1EEFD2AD077F8C6E9766EAB170AEBDEFDC195D7438D927DDFBA7F94
+        90CA2BD4083DB86FEC44F929D938E70C98CDF0CCE48C3D3FEB2392719424BFF8
+        CAF40E0E1DD6595BEFAADB3D32C0411596FE99A4FA967E7B68589D6FEA3F5CB7
+        ABE267E37507E57ACEAC8C8BDE6CBB0EC03D56976BEEC5AEE1EDB2BFE6BFC257
+        FE11FA3D2FA6753FACFD56BEA1D6EA6D3898F533231B02D734597025DE8DB94C
+        A5A5B5D1EA56F7595FA7FA47FF0082F4FF009CE9B3F36FA3A8EE6B2B38F8A18F
+        CE6CD65AD16CB1AF7BEC6577B1EC66FBBF47EB7ABFCDFE7A10893294CE9C5400
+        F08F764E6734461C1CB40F19C2672C93F5187B99F87D18FF00AB0E08BCB62FD7
+        0EAFD33359D27EB7B6BC7B6C03D0EA8C1BA9B0027DF6FA2F657B1DBBFA452CFD
+        0FFDA9C6AD6A31F663F57C1B7D5AC8F55AD3B7BB6D73AAD3F4AFFA4DB15FCBE8
+        98FD66BEA383D4316B7D6EB2A6361E43ABDB530B2FC578A7F4766EB1EF6FFDB7
+        77E8D719D31F9FF573ABD5F56BAB066457BD96F48CA276870166F6E3FA9B1CE6
+        FAAF1E9ECFFB4D95FA3FE66EAD3DA80F5FE2FA939BC83A8E08551A5D87686EBE
+        83CC309FCD3FE8DDFF00A2D67B7EB76331DB73B16EC732417B07AAC001893B36
+        5DFF0080AD4A6FC2EA3438E3DADBEA7087961923FAC3E956FF00EB20B9B8C707
+        09092A5876595B8D16997B3BF88FCD7FF692494FFFD1EF311A1D959A0B5CFF00
+        D337461DA7F9B777DD5AB618DDD1E8DE356E9EA1F0FF008FFCD553123ED59B2E
+        7B7F4CDD6B049FE6DDFBAD7AB6DDBEA0FD2E472DE5AE8E3BFE8BFCE4E1B31CAA
+        FF00F45786B6FA3AAFF8C8A9B92DB0E0F40ADB5B01717B465DBFA56BAD7BAC3E
+        96DF77BF7FF39855AEC710E3E4637DBB1E9CA0DCA697FBAC7B49D4359BEA7E47
+        B2CD8D6AE33FC5DE2D5D4D9D63AA653AD7372FA89739AD6970B1A0585ACBBF46
+        FF006B7EDAE77B3D35D955858B556D717E459754D7B5B739877C17389F732963
+        7F3FF75117F8AA55B787F555939983556CB9EDB5D4D961A7D56D85ED0E32D97B
+        ABBDDE9D7EDDB63FFC17F85F494E9BE8B856EF4AFACBED7D6C6596ED717561EC
+        B031BF68F76DF4ECFA1FF99A0BFA5E29B4DC6ECA75D63F75CF2C9F51AC6D8C6D
+        165471FD0F47D3BECAFF0045532DFF008552A30598EEC6AEBC8C934E39B21B63
+        0BDEE75837B2C37BEADFFA26BEE67FC27A9FA5B3D896BFCAD1E9FC47EEA5AF16
+        96DAFB1B8F7875A2B2FF00D2989682C6BB6FDA36FB59ED72E77EBAFD5E6F57E8
+        4F14536B73F101BF05E5E0BB7874D94D7BAE7BBF4EC6FE67F86F46C5A9D77AD6
+        3F46C139565B717B835B535F2D0480F7B9CEDF5B7DB5B1BBDEB9CC1E87D67EB1
+        52DEA5D733B270B1721A2CC7C2C56B85AE639D15D99593E9D8CAFD4FA7F67A99
+        FCDBFF00C1FD0530C3E8F72678604F0C68714E647CDC31FEAAD12D686E3FBB41
+        BB818EECEE918D919F8B6D19D6524E4D4F716B85A3DAE2EAECB9AF67ADB7D5D8
+        E4D674838D94DC8C7AEEAAD6B896D8C7C1D1B3CFADEE6FF592B7EA17466B7762
+        65F53C4B981E5B6B2CB1FAB74F7D7754E6BFFB3E9AA15752EABF57FA8B3A5F5F
+        B9D762D9B9F8D9D5B4D62C60FD1D8F3558D77A77D1B99EB5294708C9E9C52919
+        D1A84E3C3C7FDCF54BD4933E1D4D569AC6BD2F57859D7643983259B2FAE1BBA0
+        0DE08DDAB585CD63DA926C7A8372590E7BBF48DD6C041FA07F79B5FB5255D96F
+        47FFD2EF311DB72B34FA829FD337DCE88FE6DDFBCAC5B91B5963DB98C2E6B65B
+        019CEC739BF9DFDA41C1F53ED79BE9ED0EF59BF4A63F9B77EEA239D987A89A4B
+        DA5B763925A3716B5CD76CDDFF0007EA7ADFF5CF4BFE0D386CB25BBC37F8BAC5
+        75FF0054B10D590CC7B6BCFB2E169DA4D67D33435FB1EE6FABBF7B6BD8BB0E9D
+        5D98B85463B72E8A28A6B730D1B5AF70873834FACDB5ADFF0047BFF44B9CFF00
+        14965FFF00362EA18580D198F6383A67E8D2EFCD5D99397E9BB5ABF3BF7BF7BE
+        29044AECF97F2FD272EEAF32D65ADC8CBAAFC7166E662D86B2F731BBBD5AAEBD
+        9E951B7DD5D95D0FA5FF00CD7EB3956D76FE8C98FF00A0B71EAC778C6A5D65B6
+        D8C61A8D6D25BED65BF4BDF73ACFB4555633EBFE6EDFD2BEBFD1D978D99CE746
+        EA606E9FA5C7DEA4EB32058017553BB8F77EE946BF251BBFA8EFFF007CF13FE3
+        287AB8DD31C6E6DF51B1F5B88DA06EB18D7D4C76D3FE15B45ABB066555750DBA
+        BCC60AEC6B5EC05AC90D2EF68DA5DF9BF410BA8F4EABAD615DD3F38576517319
+        BB69735CD209732CA9FEED96B1FEF63972B89FF3DBEACB4D15E37EDDE9ADD6BB
+        B1C816813005B88F3EA7A9A7F80F519FCB5678E3930C3112212C265C065F2CE3
+        97D4624FE8C98F8489190B22435FF07FC27B07DA36BBF5CAF8B3B33B1D7F3971
+        BFE336EA4E063D66D6DD736D7BDA5A1A0806BF4457ED27F9DB2C67FDB68D57D7
+        DEB9D45B657D2FA0E55B6D6F7D3638B4358CB1A7F4B5596BCFA6CB2AFE527E99
+        F573ABE5752675BFAC6FAACCDACEEC4C06B8BEBA5E06E6DF7DA3D976455FE0AB
+        67E86AFA7EA7EE1E5C8C190659189942CC211225C52E9C5287CB18AA40C8708B
+        D6AC9BFF00BA7A3A3DAEAB758DB0B1F5B5CE11008AFE8FB652499EA18F508738
+        5AC82D98FA0FFDF4955AD7F97666FD1FE5DDFFD3EF70DA5D959A3D36DBFA66FB
+        5D007F36EFDE0E451416E67ACDC566EDACAF6EE6ED681BACF64561DBBFADFD8D
+        8838801CACD963ACFD33746183FCDBBF955A39ADA2DDC31AEE5BF9C0910D23FD
+        3A7C766396FF00CBFEF5E2FEA0D6703EB07D63E86EA18E75790DC8AEB711A30B
+        DFAB7734FF0082B31D76E693E9B8FD8EAFCEEEDFDEFF008B5E7BF59BA857F56F
+        EBB51D6EBA9CF665E13ABCAC41606DA5EC1B2AF536D8F7D4CB1CCC3FD259FE86
+        DFE7176DD272D9D43A2E2679C77CE5E3B6E76C77B43AC0DB1ED66EB83FE99F6A
+        43B78FF2FD254875EE3F97E8B64D445A47D92AD77F76EB31FF00069CD2E16C8C
+        6A812FF16CFD03FF0004A373582D9FB35D30F3F4B9D23FD329FA7539C09C6B67
+        77770FDC3FF0C9D7D7C3F97E92DAD7EA3F97C8B555BFD4DA712A2006776C08DD
+        A88AC2C7FACEEC9C5FABB9F7D029C175753B7653A1CE6B7739A5B406319FACD9
+        3E9637BFF9E5B35D75830DC6B468CFCE1FCAFF00865E7BF5973ACFADDD768FAA
+        BD18BC6163BF7F50BDA644B1DB6D7EAF731F5626EDB57BFF004F9BFF00148196
+        FE3FCBF79311FB7F97CACBFC58F48EB14635B9FE854FE91D418F60A9EE1EA0B2
+        996332581CC7B7D2B3F498FF004FFE1177CEC5B37FF45AB6B899D5BAFB63FD12
+        8D1898B8B895E2E3E2595D18F5BAAA98D700035B0D03F9E467359BBFA3DDAB8F
+        E70FDDFF008E481A14A3A9BF2FE5F2A2F43D27563D3156EB5A3636088D8FD7DA
+        D624A6F001A4063ABFD337DAF327E83FF956249B678977E8FF002EEFFFD4EF31
+        0B46566EE2F03D66FF00361C4FF36EFF00461CE56C3AADDF4F2396FE6DBE1FF1
+        6AA6239ADCACD2EB4523D66FBCEDFF0046ED3F48AD0BAADFFD39BCB759AFC0F9
+        278D98E475FE5FF7CE1FD61E8DF553328764F56C72EB9AC04643B7D16C37E917
+        6486D4F7B58DFF0049EA2CDE8F91F588F4BA713EAFE2FA1D27199B71F2FA91B3
+        75AC9DCD7D34E352FB5F56D77E8DF636967A7FCDAB3D6D94751EB3898775E2EC
+        4DB43AFF00A25A5BBEC73AB701FA3D963ABADAF5D13722B34B89CE6CFBF935FE
+        F2AF1072E4C964886397B7C313C366B8B8A462D584CE59E4122630C52E08C227
+        878BD3C5C73971717E93CFDB97F5E709A6CBA8A3A8D62773313D6AEF8FCF7535
+        65D4DAADFECDDBD6874DFAC3D333714E5D990FC76D45C6EF55CE66CD8D732D6D
+        C1C3F40FA9FF00CEB2C5A1916D51FD35A637FF00A2F0F82E53EB174CE9F91D57
+        D17BC598BD57D0AF336968F7EFF4BD696FB1B6FA6D67BBFE0D2CB784467132A3
+        21094244CAF8CF0FA78BF4919A5ECF0CE2491C7084A123C62426787D3C5297AA
+        2D0EB1F5B7A87D62CA3D03EA77AD636C0D665751717868619DC5A4337E363FEF
+        E4ECF5ADFE6F16AFF08BA2FAB9F57BA7FD5CE9BF67C675AEC8B435D95922BB1A
+        6C734ED6B40F4DDE9D356E7369ABFF00467E915CE9989D23A663B717A7D9562D
+        23612DAFD21B9C67DEF7BB759658E8FE72C7AB2EBEA75208CD69F23E94FD2568
+        468EADA3215436D7F97CC91F6500387A990347FE6DBE3FF17F9A9ECB296B87BF
+        22493036DBFBBFF168565B4FA448CC64C593FCDF8A9BF21836C67379749FD169
+        0D4B87CFAFF2F9517E5D3F97CCB3EC8349F796FACDD6CDC1DF41FF00E91AC724
+        A3639967A46BB3D7FD3326C1B7F71FEDFD1FB524285AFF00D1FE5FBCFF00FFD5
+        EFB03D4FB666FA65AD3EB37570247F36EF02D574FDAE48F52B9D3F35DE1AFF00
+        845430D9BF2B347A6DB7F4CDF6BF8FE6DDFC97AABF58BAFF0049FAB587F6DEA9
+        8EC0D739ACA69A435F658F8FA35B1CCA9BB6A6FB9F63EC67FDB9E9D6F70D961D
+        FEBE2D6EBDD2FA8DC71FAB74F2CB33B0D81AEC704B7D7A5CEDDE931EF7FB3229
+        B07A98DFF6DA5D37EBB74BCA6BA8B32598994C916E36535D5DCC7CFBD9654F7D
+        6E6ED55BA2FD73E91D4FAB37A3D9D2AEE9DD42C607D156654181E1B36FE6B1CE
+        ADDE987D95EFAFD2B367F39EA2D9C8C5E8DD4035B9387D3F31FB5EFA8586AB0E
+        D6BB6B9CCDF53BD8DFDE4C963F519E33C329571581C12F38B0CB09123381E094
+        87AF4338CEB6E28FEF7F84D7EA3F5C3A361545F7751C6DB0746CEE33C6D68B0B
+        9CE547A3E3F51EB9D56BEBB96C389874B8FD871EF69165AF2D735B976D24B5D4
+        E3D6CFE8B5FF003967F3FF00E8FD5D2C1C0FAB82C75BD2F03A58B2A077598DE8
+        EE688F6973AAA7D9B95B63F0DF915B5A315F65C4BAB02D6173C35AE6BDEC68AF
+        759B1CDF7203119112C9212E1D63103863C5FBCAF68CA40E43C7C26E31E19421
+        C5FBFF00A7EAFF0009B2C6E76E836D5A864FB5C7F7BFE1130664FA3B7D4AE3E0
+        EE777FC62C5E8FF593A4F54C8CEA2BC56631E9F90DC37BB20D6C63ED9B5BB71D
+        C1AFDEEFD17D05A6D7639659156293409BA1ECF600E74FA9FA2FD1FD1FCF52DF
+        F2D1935F1EBFBCD8737276386FAE22CD0B5DE3FF0018A67ED41C06FAF931ED77
+        EEFF00C62C4775AC43D54F4B6F4FDE0D2FBFEDE033EC9B7573A7276FF2367D0F
+        A6B4596625D686535E258F249DACB18491B79DA2BDC97F6A75F1E9FBC96FF537
+        D3EA16B9DEB37568207D07F8B9C9267B363A96FA6DABF4CDF6B351F41FAFD162
+        49BD577E8FF2EEFF00FFD6EF31003959BEC759FA66E8C3B4FF0036EEFBEB5CBF
+        F8C8E89D4F32BE99D53A661D992FE8F77A96623BF485ED7FA2FF006B1965AF7E
+        C7636CB18CFF0049FC85D2BEE3819190E7D37D9EB3DAF69A034910DD9EEF51CC
+        4C3ACB419FB37509D3F36AEDFF005C47A52D20DDD3C574AC9FAC3D5BEB7D59D4
+        53D629E8E5B6DB9F8F9B638520B996EDC7C7A3F455BE8AEC7319557FA4B1FF00
+        CE6CAD67FD5AFAB4FC4FA8DD57A8D9D1ADC9EB0F73E96D56FAD59763CE2BACAF
+        D2A6DC7BDCDFE7ACFD0FE92DFD263EFF004FD8BD0DDD69834FB3E78E3B55D8FF
+        00C6288EB2CED4F503CC88ABB99FF48888F8AACF67CDBEAFF4CEA35FD61C0CBF
+        B0DF8D87674FC8AEF3F65FB2D41C31B237D2E87D8FC8636DF4FF005BCE7FAF93
+        77FD6964FD5DE97919B57471D37A6E40EA43A87A87AA3771A3D1ACD476977D06
+        3F1EC6BAC7FD0D9FF09EBFE8FD86DEAD55D5BEBB7133DD5D8D735ED2DAA0B5E3
+        6BDBA5BFBAA9F4C774AE8F8E313A6F4FCEC4C70F360A9A1846F70D8E74DB758F
+        F737F94801E29B3D9F38EB1F566FC9AFEB2E70E9B92ECBFDA83EC245764FA36D
+        992FB1D5D4DF6DAC735B57BF6D8B4FEB4F40EBECEA4C774AC6B5CCFACF874636
+        73B6B88AEE0FC7375D79ABF9AF57D267AB6E47D3F5B357A03BAC30107ECFD401
+        80262AEDFF005C516F57AF86D1D43EEABC777FA4478456E8B3D9E2BA8747FD9B
+        F5AAD657D36FCCE9785D19D8C2A6B1C05C5B59AFD1F5E8FA36DCF76FB5D5FE97
+        F9CFF0885FE2E7031B1FAE3B273FA3E751D4F28DDE845069C3C766D7BCD75596
+        DA2EF51ECFD033D4FF00D4CBBCFDAEDDD3F67EA1ACE9157E773FE1123D5DA5FB
+        BECFD43998DB5771B7FD22142F756B5B376C68DD5015D8DFD33747BA4FD07FD1
+        76FB1243C6BFED8581B5E457B6C0F71BC34681AE66D1E9B9FF00BC9237AAABD3
+        4FFFD9003842494D042100000000005500000001010000000F00410064006F00
+        620065002000500068006F0074006F00730068006F0070000000130041006400
+        6F00620065002000500068006F0074006F00730068006F007000200037002E00
+        3000000001003842494D04060000000000070008000000010100FFE112486874
+        74703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F003C3F787061
+        636B657420626567696E3D27EFBBBF272069643D2757354D304D704365686948
+        7A7265537A4E54637A6B633964273F3E0A3C3F61646F62652D7861702D66696C
+        74657273206573633D224352223F3E0A3C783A7861706D65746120786D6C6E73
+        3A783D2761646F62653A6E733A6D6574612F2720783A786170746B3D27584D50
+        20746F6F6C6B697420322E382E322D33332C206672616D65776F726B20312E35
+        273E0A3C7264663A52444620786D6C6E733A7264663D27687474703A2F2F7777
+        772E77332E6F72672F313939392F30322F32322D7264662D73796E7461782D6E
+        73232720786D6C6E733A69583D27687474703A2F2F6E732E61646F62652E636F
+        6D2F69582F312E302F273E0A0A203C7264663A4465736372697074696F6E2061
+        626F75743D27757569643A66636436633363642D643235622D313164622D3965
+        38382D383365316563616466623862270A2020786D6C6E733A7861704D4D3D27
+        687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F6D6D2F27
+        3E0A20203C7861704D4D3A446F63756D656E7449443E61646F62653A646F6369
+        643A70686F746F73686F703A35613861356666372D643235612D313164622D39
+        6538382D3833653165636164666238623C2F7861704D4D3A446F63756D656E74
+        49443E0A203C2F7264663A4465736372697074696F6E3E0A0A3C2F7264663A52
+        44463E0A3C2F783A7861706D6574613E0A202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020200A20202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        20202020202020202020202020202020202020202020202020200A2020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        202020202020202020202020202020202020202020202020202020202020200A
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        202020200A202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020200A20202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        20202020202020202020202020200A2020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        202020202020202020202020202020202020200A202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020200A20202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        20202020202020202020202020202020202020202020202020202020200A2020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        20200A2020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        202020202020200A202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020200A20202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        20202020202020202020202020202020200A2020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        202020202020202020202020202020202020202020200A202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020200A20202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        0A20202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        20202020200A2020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        202020202020202020200A202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020200A20202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        20202020202020202020202020202020202020200A2020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        202020202020202020202020202020202020202020202020200A202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020200A20
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020200A20202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        20202020202020200A2020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        202020202020202020202020200A202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020200A20202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        20202020202020202020202020202020202020202020200A2020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        202020202020202020202020202020202020202020202020202020200A202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        200A202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020200A20202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        20202020202020202020200A2020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        202020202020202020202020202020200A202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020200A20202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        20202020202020202020202020202020202020202020202020200A2020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        202020202020202020202020202020202020202020202020202020202020200A
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        202020200A202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020200A20202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        20202020202020202020202020200A2020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        202020202020202020202020202020202020200A202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        2020202020202020202020202020202020202020202020200A20202020202020
+        2020202020202020202020202020202020202020202020202020202020202020
+        202020202020202020202020202020200A3C3F787061636B657420656E643D27
+        77273F3EFFEE000E41646F626500644000000001FFDB00840001010101010101
+        0101010101010101010101010101010101010101010101010101010101010101
+        0101010102020202020202020202020303030303030303030301010101010101
+        0101010102020102020303030303030303030303030303030303030303030303
+        0303030303030303030303030303030303030303030303030303FFC000110800
+        DA009603011100021101031101FFDD00040013FFC401A2000000060203010000
+        0000000000000000070806050409030A0201000B010000060301010100000000
+        0000000000060504030702080109000A0B100002010304010303020303030206
+        0975010203041105120621071322000831144132231509514216612433175271
+        811862912543A1B1F02634720A19C1D13527E1533682F192A244547345463747
+        63285556571AB2C2D2E2F2648374938465A3B3C3D3E3293866F3752A393A4849
+        4A58595A6768696A767778797A85868788898A9495969798999AA4A5A6A7A8A9
+        AAB4B5B6B7B8B9BAC4C5C6C7C8C9CAD4D5D6D7D8D9DAE4E5E6E7E8E9EAF4F5F6
+        F7F8F9FA110002010302040403050404040606056D0102031104211205310600
+        22134151073261147108428123911552A162163309B124C1D14372F017E18234
+        259253186344F1A2B226351954364564270A7383934674C2D2E2F25565755637
+        8485A3B3C3D3E3F3291A94A4B4C4D4E4F495A5B5C5D5E5F52847576638768696
+        A6B6C6D6E6F667778797A7B7C7D7E7F7485868788898A8B8C8D8E8F839495969
+        798999A9B9C9D9E9F92A3A4A5A6A7A8A9AAABACADAEAFAFFDA000C0301000211
+        0311003F00DF81F334A2BA0C7A3A3555419162467B063144F33F2031B08E327E
+        9F8F7EEBDD4DD55BFF001C69BFEA7C9FF5E3DFBAF75D192B47D61A6FFA9F27FD
+        78F7EEBDD4692B6A63E5A083FD84EFFEDF9887BF75EE9AEA3720A6BF929C1B7F
+        A9909FF7B51FD7DFBAF74CD3760D1426CD4739FF008294FE97FCB8E3DFBAF751
+        4F66634123ECAAB8FAFF009AB7FD6DF7EEBDD7097B3F1912EA6A2ABB7F87849F
+        FADC3DFBAF74D151DD580A6D5E4A0C89D3F5D094EDFEDAF5238F7EEBDD30CDF2
+        2F69C0CCAD8CCDB15172521A022DFEBB6457DFBAF751D3E4A6D0918AAE2B3C48
+        BFFBA282DC7E07FB92E7E9EFDD7BA923E41ED990D86373038BFAA2A30A3EB6FA
+        571E7DFBAF74ADC176761B3F124D4E65A5F2193C715624713C8B14862778F449
+        2A3AAC8349B35D4DAE05C5FDD7BA5C536620982E97520FF436FF0078FA7BF75E
+        E9E63956400837BFE7FDF7D0FBF75EEB2FBF75EEBDEFDD7BAF7BF75EEBDEFDD7
+        BAFFD0DC3C764551F93DD63B3BCCDE0CC56EEE8DE3BF0C28761EEAC9ADC7F83D
+        103EFDD7BA1DB1FB577C67A928B303BBBB1713FC56BAB657C6E3705D3AF8EA1A
+        7F2E41A3A1C79C9F5664724B0C090A223D454D4CA557D6CCC757B3D96E6C6DDE
+        487F72DBB685192D71527B72693019A9E000F4A740EB4B2DDEFADEDAECF355EC
+        6657625563B3D2A2AFDABAAD59A828002CCC7D4926BD35CFB4F7FAFF007CF4F7
+        D7667FB808D1B1FAB6FF0048B5D9B0306489ABFF008C443CC3EEA43C278FD1C5
+        EFEAF6E2DCD81FA0FF007456DFA873DF71FC6571FAF8C7DB9FD9D276B4DE47EF
+        C039B6FBFC597B3F4ECBFDF21FBBFC533DC7CA98C7CFAC992D93BEA0CC632823
+        EF8ECD3055D0E6EA26F26DEE8C7975E3E6C3A5388DFF00D0E855422BE4D60AB6
+        A3A6C56C6ECA5ED8B5BCD29D8ADB52B281DD73F88357FE247C853A5B26D9BB25
+        F5ADBAF36DFF0086F1C8C7F4EC6B55318143F47C3B8D706B8E14C823B9F235D8
+        1C7B499CF931BB28326B97ACA56A29B09D0E6A568A9774546319CD045D44F58A
+        E3134E5CB9E0C80B05B7A3DA1BDDF797AC2731DD5859A0F0C1A192E6B53186E0
+        27AFC469C3863E7D0A7973DB8F72B9A2C45CEC53EF17359D9752DBD9787A5673
+        19EF6B30B5118A93AB8E694C740DD476061DF2591865F945BC568A3A7C7FF0D9
+        46D4E9EF2CB5521C80C92C96E9537484253E9F427EA6B16FEC943F3AF28848E9
+        6F6BE2D5B50ADE70C69A7EAF9E7CCFE5E63B8BEEEBEFAC935C56CF7316BA10A3
+        7FBA9A9275EBA8F06B8A2530389C9F2C54199AACA643034B8EF925BB2A56B855
+        264D9F03D254DE278F1924D4E20353D470AC225AE40963E4D40E906E41F6B2DF
+        99F962E84FE0DB59EB14D00C972B5AB50FC538AE3D29D07B76F673DDFD8FE85F
+        71B6DE16021BC665B7B19425232C0D62B570A350A54D45315F3E9F370E077ED0
+        E0F279087BBF7FCB353D414A7D7B67A4DA1F11CAC546A5D53A990CA7C2E4EA0C
+        A0B1BDADC7B3886E2C259E28CECD06865AE1EE3F86B8FD7FF50EA3DBBB3DE6DA
+        CEEE6FEB3DE78D1B9143159629204A11F480D40E3919F2F2E91F94DAFBD8E56A
+        A84F74F60F823A3A1990FF0077BA584BE4A9AACA4330675EA60A53451A690141
+        0755C9B80193776621593F735BD4B30F8EE3C829FF007FFCCF4AD76FDD0DECB0
+        1E67BCF0C46847E9D956ACD203FF001138514797AFE410B6037DCF0ED999FB87
+        7D1398AB9A9EB186DDE9D5508986CCD7A9800EAE3E3267C7C7FA8BDD750B5C82
+        1D79AC835D81B441445A8EFB8FE2519FD6F427F3A748E18376921DA9DB996EB5
+        4EE43522B3E02395F1FE2B8CA0E35C57D6A3856EDDDF38FC6EE5AC83B8B7C897
+        11493D451F936E74EBA7922C4475CA2A42F5721957CEC6E14A7A78BDF9F7A826
+        B2796D11B68874BB007BEE3F888C7EB631F6F56BD8376B7B5DD678F992EB5C08
+        4A83159D2A230D9FF15CE7D08C63E7D3A66303BC6826551DCFBFFC7E2A8621B6
+        F74D96D71C91A2B7917AA400A11DAE349B9FCFE0B02EED0A16FDCF056A3F15C7
+        CFFE1FD2E6DB77259B40E66BCD343FE8765E4479FD27F93A11FE2C6EFADCD499
+        DD8DBAF79E6772D7E525CC647015B91A3DA58FAAC54D86C8E4719511E2936E6D
+        AC0D2F9A7A086399CCD1CFA9E2636084A7B6AF9A1330F06D1234555242990D6A
+        AA4D75BB1E268294C7AF1E956CAB746D1CDE6E324F23BB8059615D3A5DD46911
+        C482B40092C1B3C2831D1B49F72663655641065E43518CA8904749955461196B
+        DC53D581A960A8205D79D2E3F4FD080881AF468CA57ECE86DDB1BBA9F2314652
+        6560C07171637FF5BFD6F7BEABD0990CCB2A8653707E87FE20FF008FBF75EEB3
+        FBF75EEBDEFDD7BAF7BF75EEBFFFD1DA9149FF00679FA3793FF173EC2FFDF4FB
+        FBDFBAF7477303B17375F85C04F176B76462A2395ABAE8A8B19FE8F569624151
+        979571C5ABBAFABAB6A718AAFA424B33C842AEA72579105C5FC11CF70A769B67
+        3A00AB78D538515C4C006F980071A0E805B76C7773D8D848BCD1B8C4A65660A8
+        6DB4AE643A7BAD598AF951989A52A491D3655EC3CD98FB4B5F6F766C4AF4CBE5
+        9633D6D0BC6A367D2217A790F5BB2D232A0D4180367F57D7DB8BB8403F751FDD
+        16B83E7E353FB43C7F5B3F9FD9D30DB15F3B733A0E68DC8B500C7D2D4D6DD694
+        A5AE0F90D34F5E3D502FF329FE6E9B3BE34CB5D0EC9EE4DE9B96876FE3B35B7A
+        6CA4F55B3E27DD591A8971FF007C36FCBB7B6A606AE0A0A29316A86BFCA7CC64
+        7F10D0CA64C75E79F770CF2B72D729EDB11B99641DF1789ADCAD410ACF238488
+        6AEE7A024D029E1ABB07F75CFEEFF82C767FF5E5F7FB98AE2DF64B3B6D621BDF
+        07C1B74934B219628A089AE2F65F0FF4AD896541A9A551473152E7546C1FE77B
+        FCCFE8A2EC1E9ADAD47F19FE3D6E1AB8570BDADDBB92AEDA14FB968F2392FE1E
+        993DBB898E8729D83B9E9CCCD715D4D40B4321BDA6D42DEC9369F6DB98B7DA4F
+        BF6ED2A0752DE1C4C634029AB2F43239A0E23483D485CFFF007D3F673DAD7936
+        7F697DBDB1B992091631777D12DE5C310FE1F6DAEA4B2B742C41F0E4F1A44A50
+        F0209AFC7FFC2723E77E566CB7F79BF9AF6431DBA71D4788ADFB4C2F4F6E5CE6
+        1259F2A727783F8C57F6CE07229153B638DA4FB125C3DF4ADAC4503D9AE5E4B7
+        89DDE46762C2A649C9EDD39D465F3D5E9E5D41137F793FBC371BADDC36D6F671
+        5BC6236D2965B54684485F0225DBC80068E1AB35F96401ECAFE5D9FCF4BE12C5
+        47BB3AC3B376B7CCFD991A4F5B36DADA791C9D2F614B45454C2B6AEDB2F79C74
+        CF929569033AD3627215B55215B223136F64F7DED1DDDA473CDB0EEF711B4792
+        0C8655353400A4B56A57F81C1EA47E53FEF0ED8B98EEB6FDBFDD8F6EB66BDB7B
+        A50A1D6D63B09D6803B325C58848B585AD0CF6EC84FC5E5D0A9F0BBF9C2653B6
+        5EA7A87B3AAB7A7576F1C3645319BCB62D543478BDC38EC862AB227C8D150D1E
+        F1C264E7C2E46967A63E7A19218CB0D4B7BDD814F2DFB87BEF216F706DDCD360
+        935AB542D759461420B44432B248067C363439A548A8937DDAFBA27B4DF7A8F6
+        E773E7BF6279865B2DFA150F228F096E606A8648EF5047247716AEF441791207
+        5254B690EB1C9B1FEDDC053F60FDAEF2DA7DC7BFF33B7B3DB770F518DADA53D7
+        CD4B2C3264F3DAF5D3FF00A3D534F5F4D3C6D0CA1ACF1B294600AFBC90B2DEF6
+        EDCB6AB5BDB2B0B592D642C55878DFC2808FEDAA287041E0475C5CE68F6F39A7
+        9279CF7BE56E67DD775B4DF6C82472C6FF004B83AE52187F8AE96565A323AE1D
+        18104823A48D2F5665D71DD7EA7B37B19B464E408F236C177711ED7DD17350DF
+        E8FEF506500EA07824DFEA07B3596F61326E44ED56DF0FA4BFEFC8F87EAE3F2E
+        8176DB45D7D372F0FEB1EE1FDA1A66DB14827F3FA6CD69435AF1AF1A522EE7EB
+        1CB53607B049ECCEC661263EB242AEFB06D096DB34A9E2A529B011A962012E00
+        248625AFCD86ADEF6133EDDFEEAAD8770E1E2FF19E3FAB93D5F71DA2E52C7980
+        9E64DC58786C4826DA87F4571FEE36053D29E678F48BEC0D9399A5A8FB83D9BD
+        8ADE3A4AB84D2AB6C214ED7A8A793CD240BB0417A8509657D40056616E7DA217
+        B0F8447EEBB6E20FFA2D781C7F6BC3A386D9EE85D293CC9B81ED6F3B6A711C47
+        D371F9F967A23FB5B78663A9B7F75D6F8937D6F4ACA2DB7D853D6E528EAA5DAA
+        21C8E25B3F9B8B33415468F6A52D5494D578E96546549233C8D2CB6043975711
+        BBCCA2CA152635C8F12A3B53856423F91F9F4C6D9613C50D9C8778BB75171276
+        930D0D24978D215620F980471C118A6C5F5D8FC4EE7C2859638B2388CC50C53C
+        46F78EA296AA35A8A79E2716656642AE8E086536208207B28F3AF42EE229E47A
+        2D9354E7BA873F051E4279EBB69E42A3461F34F726063CAE2F2AE0048AB6351E
+        87E1674171621956C0D7EDE99642BF6746DF66EF1A7CA5342E92AB8751F9BDF8
+        07FDE3DEFAA742B4332CAA194DC1FA1FF883FE3EFDD7BACFEFDD7BAF7BF75EEB
+        FFD2DA8D7FECB9FA37FED67D85FF00BE9F7F7BF75EE8E760BA870795C562F232
+        EEAED8A596BABF215751062FB7BB27178F532D4E4E76829B1D41B9A0A1A1A259
+        08090C31C71A280AA00E3D88AE7769A29A68C5ADA90AA002D0424F051524A549
+        F9927A02ED9CBD6D3D8D94C770DC159DDC90B7770AB92E6815640AA2B4A05000
+        1818EAABBF9BAF61A7C4BF899D93BB76BEECED34DC7BFF00B2760F5061A7AEED
+        CEC9C8D353C5BA36A56E777099A82B7734F4B90FBBDAFB5F21068995D479AF6B
+        285F7147BDDCEF7FB07B78D25AC16E93DD30B7D49044ACA1D9CB95654054E846
+        008208AD41AF59F9FDD8FF0077CE5CF793EF7165B6EFF73772ED3B15AC9BB18A
+        5B99DE39A4B64B78EDD645690ABA8BAB98642AE19582682349EB5E6FE4E7F057
+        6FFF00328F97DBE3BC7E4A62EB3747447C70A7A08B6AECD96AAAA9713BAFB62B
+        1E2ACC147926A69A392A313B23183F88CF4E182CD5B5147AF543E48DE23F6176
+        24BB5BEE6BBB89249919140750C2ADA8AAE96A821402482082585453ACF6FEF5
+        EF75EEF9626E57F62F976EE6B5DBE68A695CC2ED1B11198D669B526965796475
+        48DC10CB1C6C01A8AF5BA6527486062DB48906ECEE28161DCF3C11470774768C
+        51470C5BFE5A748A3853742C48894A028B28200BFEAE7DE5B3EEF38B9D3F4969
+        4F047FC4787FDF35FE0F5FF370C75C0B8B972D4D8173B86E3AFEB187FB9973FF
+        00296470F1695A79D2B5EEAEACF5DD3F48E21F73EE54FEF8F7380B8CDAFA4AF7
+        676A2C83CAFB8C3FAD774F91B49516D4485FC5AE6EC49BBCFF00496A7E92CFE3
+        7FF88F0FF43FA1D28B7E5BB43BB6E717D7EE2008A020FD65CD7266AD4F8B53C0
+        60D40F2E26ACB59D238AFE29B150EF2EE76F22E5848CFDD5DA4642576E4EE183
+        1DD00C6E5C73A74DFE9F4E3DD937694C3B81FA3B3C69FF0088F0FF0018FE867F
+        3E9B7E5EB7173B003B8EE5DC1EBFE3973FEF9271FAB8CFF0D3D3863AD753F9F2
+        7F2C2DA54BD4392FE609D290EE3C6F7D746E7B1B5FD9F99AFDC59DDC191EC7EA
+        79F3B4FB7E56CBD5E66B6B2AA7CC6C0AAADA6ACA5A92E586356AA29358583C50
+        DFBC1B341CC5CBB3DD3DAC29736F186AC71A4668003ABB00155390695A023853
+        AE88FF007797BB3BC7B55EF4EC7B0C7BADD4BB3EED70F018E79A4994B3965F0B
+        F5198F873AEA8CA5685D94FC44935F1F07FF009AD758FC74D89D9B53F23AB7BD
+        EBF6CC5B7B6D67B6761FA77726F3C74DFDEA92BE5C6E568EBA9F0BB970381C4E
+        3F326BA99BEFEBA48E38E78D625669674468CBEEF3CE9B835C6FDCAF71143242
+        89E3A99228E4D2C1962934975620356334069515E24F59CBFDF03F776E54DB36
+        1F6A3DF2D965B8B6DC2EAECED73886796132432432DEDA789E13206780C5749A
+        88248702A1554755E7F273F9EFFCA7ED39E4DBFD0794DDFF001FB62524B510E1
+        ABA2ED4EC7DE3D95352B53D651A55E4370663733E03195B3D2553864C7E3A231
+        6BD2267B176CA69F769653714B5B555714348210695078E8AF103AE105972D5B
+        5B2597897F7CF2C26A2B7773A6BA594F6F8B4E0C470E1F691D6D13F023B4BE32
+        FC86F8A588C3F547CA3ECEED7DF7B47ABF191F6250E7BB9FB2B1BD891EEC3B5A
+        1937665B3DB4F25B869ABFECEBB733553C72C714D46519556422C3DBD65B8B47
+        26DD1ADB5A9A301530C44FC7E64AD6BF9F4877AD995ED3986E5AF6F813133002
+        E6754C423F08902D2A08A11F2E1D1C7EC2E9CC78799BFBD9DB64786A974BF6E7
+        644A8CDE58886224DC8CC5801606E45BF1F4F6946E72143FE29695C7FA045FF4
+        07468DB1442E05371DC6943FF12EE4F98FF8657F9F5543DBBD51143878A44DC1
+        D8EDFEE67360EBEC6DF1270998CE20BABE6980BE9173C13C924DCFB7AE2F9BC6
+        97FC5EDFFB35FF00428FF853FA3D24B1DAA3FA5B73F5979FDBC9FF001227F292
+        51FC7F2C9E24D4F99AEC19F083792F60FC58EA4C93D5D55757E0B6F2ECACB4F5
+        D3CB575AD5FB3A797001EAAAAA0BCD533CF45450CAD233333792E4937F64EE75
+        333500A9F2141F901C3ECE85310D08A809340054924FDA49C93F3393D185DC1B
+        7B1B9EC7566272D47156D056C461A9A6957D0CA6C559596D2472C6C0323A90C8
+        C0153717F75E1D3D82287A2C54D2E5FA7F734185AFA9A8ABDB59190FF77B2F3F
+        EA60BEA7C5D6C82D1AD7D20FCF0268FD6003A956C0F4CBAE93F2E8E36D1DD306
+        4A9A164955B52A9FAFF85FFD87D7DEFAA742647209143037FF001FEBFF001BF7
+        EEBDD64F7EEBDD7FFFD3DA8D7FECB9FA37FED67D85FF00BE9F7F7BF75EE8EF60
+        7AAB6BE5B0B81ABABA8DF025FE275993D345D9FD9B8CA586ABEE32D2878A8B1B
+        BBA928E1A6124E40804629C02004E16C21B8DDEEE19EE11160A69033040C48A2
+        F12D1924FCEB5F9F404DBB9676DBAB1DBE595EF351959FB6F2ED14356438549D
+        540A9F840D23801C3AD7EBFE146DB12876D7C2AC6EE6C41DD151061BE5DF4F54
+        E726CC6F4DE9B8E8E971557D39D97808EADA8F70E7B29410CA72D93A3816558D
+        645F2E90C03B06843EF07F5BBC7B7BB7402388F87761FB628D08A2DC2F144534
+        AB8C569FCBAE9E7F7466E7B1F21FDEDF98EFAEAEA745BAE5F9AD97C4B89E50C5
+        A7DAE6234CB2BAD7440C4102A00201A13542FF00C272717B1B2DD77DC7B0EAE7
+        CE41B8E9F7BD6F65D34D84DE7BC76D0C8ED9DE5B67616DE8CBD1EDDCFE3286AD
+        F1994D92EB24AF134A9F728BAB4B05F617FBB5730C9072AF316C9FA3F511DE47
+        300F1C6EC51E329C5D18D11928403405AB4A9EA75FEFABF6BE19FDEEF697DCD8
+        16EFF745E6C375B7C862B89E28E3BAB7BBFA9E10CA895B88AE432311A9D6122A
+        447D6C5F4DD3DB49F6E88CD46FE2177AD4D508FF00D2BF6B0FDE5EC59AA04C74
+        EF30E5757AF493E33F952BC7BC9B6DE2F05D7C36FF00D80FF88F07FBE787F67F
+        975C498B95B6B3B70EFBDFF7389FF736F78FD61CFF00B91F9FA5734EA752751E
+        D497746EA8A4AADFDA27C2ED88A465ED5ED2469232DB951903A6F01A4AACA6C5
+        6CCA4FD7E9661F78BC16B68C12DEA1DFFD020FE87FC2FA530F2C6D6FBBEEB1B4
+        B7DA7C083FE26DE03933573E3FECF4F2E9B6A7A7B69D3E4FAF618E7DFEA94C99
+        482357ED5ED491E045DB3344AA649B78C92BB695D25A42CEC7EA49B92E26F178
+        D16E2C56DEA749FEC20FE31FF0BE997E58DB12E7975564BDA51C7FB9B798FD13
+        C099C9FE75F5AF445BF9A1ECCEBED85FCBF7E53CF5B3EED7AADE3B433DB37078
+        FCB765F64E529B27BA77C64A0DBF8D031B94DD9574756B4C2735AD032353F8A9
+        9D8C6543031E7BA1CD53EDFC8DCC6F32DBD64B278100820525A68CC6A0158C10
+        4162D506A0026B8EB2F7EE35ED143CEFF7A7F662C2C9AF85BD9F31C1B95CB7D5
+        DDBAA5BEDD3ADDCA5D5E72856458445A58686691569DDD6B2DFC827A3B60F7B7
+        CC0F91BD63D8BB569B7DF57D37C4FCFEDADE382AD9F211E1725539BED6EA77A1
+        C665A1C755537DE5354C383AC952294B20929D64035C68CB8E1F77182EED77DD
+        EB73D0A55ECDD2AC8AE2A6588E0386009D0684669C0E7AEC97F7CEEFDB1EE9ED
+        57B69C971DC3A5CC1CC76D701239A48D82C7B7EE0875189909D22E230CA7B751
+        C8A8146DF9D1FF0009BADC7D5DDBBD4DDA9F18715B93B37E36F60F6BEC8C2F61
+        F4F51CF96ABECAEAEDBB9DCDC4BB96AF019206A2AF73ECDA0C2455520A862725
+        8C45532AD4A2BCCB9733C749AE7401A1327870A81FE123AF9DBB1B90F65B734E
+        C7C6945071CB0566F9F92939E807F9FBFC847E547C0BCC67FE42FC2EDDBD81D9
+        5D67B3A4A9CA54D4EDBA8C8613BAFADF17F631642A67ADA7C0C94C375EDFA4A5
+        91967AAA1092F8E3267A50859BDB68ED1BDBC91C83C4AD470A821881FE0E9548
+        915C457B04F1136E0696AD6841404D4F90A1A1E8C47F2DBFE715B1BBB73182E8
+        EF9B596CEECEED6A843B6B67774FFA44EC0C1ECFDE55951534EB4D84DF58DFEF
+        5C589DA7BA2AEAA2548EBD51282A643A1852B1B4AB46ED742331E9829507FB08
+        7D08E3E1D7A2A6E59DBDA759BC4BCD4148FF0072EEFCC83C3C6A797A57D3CFAB
+        50EDAE94C3C9B7699917784910CF66A5849DF1BFA48EF166F3F24722BFF78DB5
+        A9297B12CAC0F208F6FCFB9CFE3CDFD8D7C35FF4287CD53FA1D22B0D86D0D9DA
+        FF00B954FA893FE245CF94B2D3FD17E5F9E6BC7A3FBFCA4E67A3EA5EDAD88457
+        78769F699C8528C857643213AD3EE7DB58895956A3255353521055E2A53A7504
+        04DC724FB2B9A432E876D35A118000E3E8A00FE5D08AD615B633409AE8083DCC
+        CE72079B963E5EB4EAD36A69BFDA7FD85BFA7F5F6C74B81FDBD07FBC768E2F77
+        61AB3099780C94D54A19254212A28EA63E69AB6925D24C5534CFCA9FA7E082A4
+        83EE1D58E41078745D36867B39D79B95F666E792F3C3A65C6640294A6CBE34B3
+        2435B016242B1285658EE4C525C1E2C4DBA6082A687A3B1B6F3D157D3C6C1C1B
+        A8FA11FEC2DFEC3DFBAD74B6D434EAFF00915FFE29EFDD7BAFFFD4DA8D7FECB9
+        FA37FED67D85FF00BE9F7F7BF75EE8E360FA3FA7B318AC56572BB1F015790C96
+        47215B5B573F9C4B555B5155959659A52B54824925A86248B104FE381611DCEF
+        3BB4534D1457B208D54000790017E5E9D00B6EE59E5CB8B2B29EE36D85A691DC
+        B135A924C84D73E67F9F5547F36767FC5EEFEF8AFF0031F6ABFC6AEE3DC1D3D4
+        FB7773508F905D6385EB6ADC3ED7DC7D79898268B7DECFC0EE8EDFDADBFF0075
+        60F66EF4C1ACCF92A3C2C985ADA6A69A6156D41E5AA52ADF9EEB987674DA3729
+        DDED26421AA01C89090C3E6A40F4E14E86FED9EE89ED6F3EA73D72BDBC516F3B
+        7CCAD1E9665ED6802C91B11C16446607070DAA95A75AA2FC5EEE4EC4FE567F33
+        33BF14FE5E613078DDE3D759A8F1E9575F20C9ECBDEBB4F311C35989CB52D643
+        2472D4ED5DDD86A882B29E4062ABA3775322472A32A624FD17307B43CD677EDA
+        75AEDCE4872A090A18F706038C4F4049E28C0379557E812CF9CFDABFEF06F618
+        7B59CEB3C079E2DD11AD965654799E0522268246344BEB70C51518E9B8858C5E
+        6165DD53A3FB4BE12F71EC1C765A9F17B1F6F642A7274D95A8A7CB643C78D8E9
+        2BB74AE50C947B89AAE2C6D4D1C1473D8B48F0B8553740BEF26F60F75E0E6058
+        AE23DE4C4CD0D34B32D2A23A76B5349048C7039E1D7153DDAFB95F397B497D7D
+        B65F72635EDB4576692C3149AC21B8D5492027C542A868D40E9834723A1CAA31
+        FF000AF059F7A8CFE7BA370D8DDDBB7A8F21B4AA72FBF76DE3A9372D16022CE5
+        66E4AEDB93D66E0862CC52E128658E5AD9694C894D132BCA55483EC58DCC5BA3
+        595ABA6E6C46B7C823FA1D63E2722ECF16F5B9DA5C72E84222868AC8E0824CD5
+        A03435C0AF40F774EE8F8BFB1B6360F7CF5A6DEE8CED5C8E2A2AB9D3009D9F2E
+        2B1595A76C43C32C1FDE9DABB7FB2C526419980A75A8A35A792523CB3C09AA55
+        29BFF7006D76D7ED79BED1CD28A082C68D5C00318F5A0F9F43FE4FFBB773273E
+        6E5B05B72FF2048D0B13AE5911A388563A02CCE416C9E081DABC17AD537F9BBF
+        F315EBCDE7B8B1BD27F1D766D1D5EE7CC66DF05B3F626C8826DC1B8329B933D5
+        8D4346F5828DEAE6C96E4AA7A85A7A5A3A6063A656206A6625F17F9E79B798BD
+        DDDCED397F6F9246DA217153C554D349248146948A8502BA0135353DDDC7FBB2
+        FB25ED87DC0B91F7BF7679F5AD97DC0DC6D48863601269901F152358D89782C2
+        360B24B23E96B96440A02A561BDAFE49FF00CA5E93E1DF42E6739F27B6F60F70
+        FC99EF21B737DF62E36A6715B0F5AE295B3906DAEB3A3ABA4AB34D5D5B848649
+        2A329511DE27C955490A349153C523CF1C87B01E47D9120DB5CC73CA68E57D11
+        574AD69E5A98FDA7E5D7267EF4BEF75E7DE4FDC8B9DDF9948B8DAED14B5BAB92
+        46B9E47F1A5A571A8471A8F4541E6C4746BF2BBCFE37ED7EE2EAFE8CDDDF1CF7
+        8EDBACCB65B06B07635653EC5CAF5BCD47BDE9F7C6CFEBBACC9D66D9ED5CF6F1
+        C0D2F606FDC59C3E206530B472CF91501D238D5E459166DF778136E23EB65F87
+        1C31DE99E1E951F9F589967CA9CB725AEC121DB60A99096AD7BBF466C71CE687
+        EC04F90EA67CC2EA1EBCDA3D2BBEABF65ED9C06DACFE637EF49EC1837052D152
+        64EBB0543D9FDA1D5FD719FC9E328B3BFC5708D97A3C1EEDAA9294D552D453C7
+        5211E48A45051A96FBCEF2D3EDCA6FE515603CBCDCFCBA7AFF0096796A3B2DFE
+        44DA602D1C6C464F9421A986A8CFA107AA09FE723FC8476AEFFC4E67E42FC2ED
+        B94986ED6C463EAF2BD83D5142D49498CED1A6A0890D76E1DAF414C94D4188DF
+        B2906596969A2828B22C488E38A623590BB4B2EA9A424B922A694AFEC03A1B46
+        96D6C52D6155112A9A0AD6801E19271D54DFF2B8F9B5B372F518AF873F297094
+        033B1E627C4755F61EE7F3D0E429F21135541FE8CB79C9512D3C82AFEF898F1B
+        513FEE097FC96537F110B5376DC55593EB1E81683CF853FC83A2A979776591D2
+        61B645ACC9A98F0AD75127040C935EB71AFE55BB376DF5ED7FC8EC6E3131785A
+        6C8E73AF2A1281268E232D4458ADC71B5422CD50CEC591954D85BD23F3ED8B99
+        A69E381E772CDDDC7EDE94D85ADA5A4F791DA46A91F612070E07AB789E9EF720
+        7E2FFEBFFBC7F4F68CFF002E8D81E98AA29BEBC1FF008DF1FE1C7BAD3AB834E8
+        1DED0D8037960648297C706E0C696AEDBD5ED653057228269E49073F695EABE3
+        957E9C86FAA8F7BE07AD9018741D74F6FF00A89D3F87E4965A4C8D04D25157D2
+        547A26A6ABA67686786553C878E4423FD6F76E98E1D1C04CAC67153546B1E88D
+        4FD78E5D56D7FA7D4FBF75EEBFFFD5DA8D7FECB9FA37FED67D85FF00BE9F7F7B
+        F75EE8EFE03A87AB72F85C157653AE765E4AB24C956E4E4AAADDB388AAA83906
+        9F2D29C879A6A4775AC696663E5043DDCF3C9B882E379DDA19EE238B739D5028
+        5003B014A2E280F0F970E807B772972BDDD958DC5D72F59493BC8CECCD0C6496
+        2643AAA56BAAB9D5C72739EAAEF727C7FEDBD99D03BCBA0F637C7FDC72EF7EB7
+        D9536C4D95DA9D638EF86B96EB1ECCC660BADE2DAFD7B90EDFC47C89ABABDEF4
+        B16471D4F4753BAE8F1382339AAFB94A2ADA885E31EFCBBBEEE23DB638F709C0
+        181DED4F8CD299C75E6E56E567B9E639E7D8ECD9AA198F82951FA2A49274E49E
+        35A93D207F98DFF2CDE98F999BC7AB3AD3B2BE23F727616CEEBAE9AED9C1E2FB
+        B7A7B70FC65EB8EC25ECCDCB92E83ABDA7BE76F8CA76BF5853560C0506D8DC14
+        F94A1C960A970E6AF22BF65412C2CB35310EEB136FD6920DD2479B4900163A8A
+        EAAD695AE0D32320F9F523F246F73FB6DBD5BDCF27A45652480B3A46BA164F0C
+        AE92C134D193576B02196A749C9EB4C7F935D3FF002E7F9667CE2A2F853F127E
+        4F65BE48EE0CBE4B6EE236FEDFA3C4C983CEE33736F4DC3598BDABD7FB8B135B
+        96C86DF7DCF538CFE1F5B2544351F6EB0E410C820B30587377F686C92E9E6DA2
+        E24B79D806AC2DE1825806A98CEA8C915E341D7467903FBC4799DF66B5DABDC3
+        DA6D37ADB2263184DCA0176CAB13346163BC8DA1BD4434A84D6C0540C900F566
+        390EBFFF008532ECECAED6D8F98F8CBB6E7CF6F1DC0DB476AB1EF0F8C129CD67
+        1367EF5DF7E08E787B6452D0ABED3EBCCC55892ACD3C7FE49E2244D2C31C855F
+        EB6BCDD1C6857992E3C224804ADB92694AF023D47E1E87A7EFB3F777BBBA97C6
+        F64B6717C8159952E376541AF569C34721A12AD812122993C3A4D6EEFE589FF0
+        A38F9138BACA7ED0A3DA9D53475A192836AAF73754D7EE2DC8244479E3C48D91
+        BBB23B563868A96469A7FE2B95A0BC5138884D2F8E2914DAFB417177E249BD6E
+        9717291904ABC81532694D10801867831A744DBE7F78A6D5B12416DED8721ECF
+        B2CF7085525B5B4927B805575EB5B8DC6491A16A0F8A28C303C00C8EADFBE047
+        F235EADF831D95D67DA3BA3A7FB4BE467606E1EAADEF47DA5DC9DC6DD073E17A
+        B7B13706F8EB46D9D43B63AE697B7B745660A6DBDB7F6AEE38B2191C436E39DD
+        73F491C159346D591D0CC1CA5B058F2CDCDA0DB1047222E0A009A6A87E10387D
+        B5A91FB3AE797BDDEF1737FBCD6FBC5CF38EE125CC13CA0C8B33B4CD29128A19
+        5DFE2C8A8401501CE9A807AD9162E9BEA63B8F2339EB5D8E66184C34426FEEBE
+        1FCA626C867E5684CBF69ADA2F200DA09D20F36B9F6286DEF78FA5887EF4B8A7
+        88FF00E88DFC29F3EA124E4EE543B9DC93CB7638823A7E8C7E6F2D7F0F0C0C70
+        EAA29FE11647B7F6976B6F4DE9D75DBBD319CEC0DE3F69B63A8B66613E13E7D2
+        BB696C1D859EA0EA5AEDA997CE2EF5A9DBFB968E5A1FE275B1B6F1DB505266AB
+        AA8D0CB17EDD73BB36EBBA4926EACFB84FA8A827BC9AD248E95C9AD38F1C1E92
+        DA72DF2E436DCB0916C966544AC0111280BAADE6D5A4505355349A8A15F2E141
+        1FBFBA670D9FF8F1D5DDAFD87D1581EAEED9DABDC9F1E66DE3D7D2E3F636736F
+        CFB8FB0B796C5E8ADF14D98836CE4F74ED2DD188FE1BBEAAB2BB76B1AA24C850
+        4B0D04E7ED2A12A2907A0DDF7592E36AD7B94EDA5D6957634FD43C338FCBD7AD
+        5F72B72D5BEDDCD0D6FB059A3185EA5618C13FA0B5AD1735A0AD7881438E8F1E
+        6FA07AB9F262A47566CE6A91495B04552BB5318D5094AF55492C90C537DA9956
+        0791119941D2CC1491703DA21BE6EFE1329DD67D35069E2371A1F2AF1FF67A39
+        3C9DCAC6E959396ACB50561510C75A55700E9AD3CE831C3E5D6975FCFCFF0094
+        BD16D5DACFF3B7E3AECD1838F1B9CCD41DF5B4F6D6364A3A6A58E0DCB9A8717D
+        A989A6A18962A16A134A9065C461001E2ABE34CEC58BD95E4BB9243293269424
+        D735289535E3524F1E976CB6F0C1B55BC0B005844B322A814501659405038001
+        568079014E9A3F96DF69ED3F9ADF1FB7862F72EDEC0C9DE1D4BB7F0F86DEF341
+        8BA28EBF7661E3C6E629B6FEFA9960A78CC9356434E29EB9AC40AC8CB702651E
+        DF1B9DDBFD2235EC9A83D32C7812B4F3FB7A47272EED50FEF59E3DA6DC298411
+        48D4508592BC07D9D585D26E5F963D1B5D898FAB7B77B2F6DE3A28EA561DBEF9
+        7AFCD6D9094D04734710DB59F193C178D40FC538205C5C03ED0B49E2899DDEAC
+        08CD7D4F470908B77B38A18B42306C01418514C74733A5BF9B8F6C6DE8D317F2
+        4BAAA0DD7454D91ABC7CDBD7AE69FF0081E7163A5CB4B8FF00B9C86D8C94ED84
+        C95408D353FDAD463D6E3D31FE3DD595432A83C541FDAA0F4F452B98E491D784
+        8EBFEF32141FE0EADD3A7FE49F47F7FD397EB3DF38ECB6522A48AB2BF6B57A4D
+        86DDB8C86533207ACDBD934A6C878564A5917CD124B4EC50E991873EDBA6011C
+        334FCA9FE71D290C353257BC0048F91A807F320D3EC3D257B53674BB6F71D3F6
+        1616231D356CB0526E882152144E5921A2CB955161E51682736173E363C963EF
+        C0F5A715CF427536E5D5B2B2351E41E8A481B55FE97A8A717BFF00B1F7BE9BEB
+        FFD6DA8D7FECB9FA37FED67D85FF00BE9F7F7BF75EE8D7627AF7E365763F1F59
+        B836974C55666A32792A9CAD465F17B324C94B9396AF28D51355C95911A96C83
+        D5312ECDFBA589BFE7D8AA7BEE644964582EAF4421542853252945A5298A53F2
+        EA37B0DB391A5B4B592F6CB6B374647321758356AD4F52DAB3AB5712735E9A26
+        EB6F8C05BB141D9BD1C4086214E0E2363E9FF8F5A96DA6F16920BDEF7E0FB797
+        70E66FF759FE377DC73DD2FF00BF0F491F6AE44D5CC7FE23B4E1468ED83FDF0B
+        F0FF00B6FE7D21FBE6BBE1E7456C0DE9DC9B9F667483ED9EAFEAFEC8DF796820
+        C46C8F35643B6F1F8AC9C78FA50B4EEED57917A71042AA0EA924500127DA71B9
+        732A59DCBC97B7A28C992D20C51EBE7D191D9790E6DD76F861DBB6A6D51CB854
+        80D5AB1530064F1A7E7D6973FC817A476CFCD4FE613DEFF33BBE715B3AA701D7
+        392A8DF14984CEC187876CCBDA1DBBBC26A4C163A8B1B5BE1A0928367ED44C9B
+        D3C2B195A764A56001553ECB2D24DCA7BD7BC4699EE40625C6A2C0E8343A866B
+        F9F47FB9C5B1D9ED716D7325AC562CF1A889BC35429E2A6A010D015A1C8A53AD
+        D873FF001CFE0E6FDDCF931BF7A4FE2E6F4A7C462B0A711FDEED85D5BB8D318D
+        5F265FF897F0F399C6567D90AD5A283CDE3D224F0A6ABE85B2FB99F982E2D6D3
+        C692EDD83C94D5E21A5747AF445B7DBF26D9EEBBA8B64DBA285A283E1F054120
+        CD5E14AD2BD3EAF54FC52C5D4F5E63719B0BA131F8CA0A7ABA1A7A0C7E0760D2
+        E3E8A86976DC9052D25252D2D3A535351D2C51A2451C6AB1C68A028000F6A22B
+        EE655B7BD51737A000A0664C778E1F9748A7DB7915EF36567B3DA8B3173212B0
+        1A9311356F9D739F3EB3EE2EB5F8BA9B6B3061D99D18B31AF04F8F11B1755DB3
+        54E416D30DBC8D115B93EAB7D7DDADB70E673750EABBBED3A7F8A5FE13FE5EAB
+        B86D3C82BB6DD94B0DA449E2628B6F5A7883D3E5FCBA7D8BADBE2D7F1EAF2766
+        F465BF85623C7FEE2363DF57DEE70C961E2B9172B7FC7B61B70E68FA68FF00C6
+        EFABADBF14BE89FECF4B936AF6FF00F785C56C768F0FC28E9DB6F4AEA96BFE4F
+        E5D25A8BADFE2FFD875EDF66F47739598547FB88D8E418FF00BAFBA34EAFDAB6
+        9F368B5BF36F6AA4DC399BC4DCBFC6EFBE014EE978F891FF0092BD15DBED7C89
+        F4FCBC5AC76AD4653AFB60E1E04FC7FDB69FCE9D25FB5FA13E206F9EBEECEDB1
+        B8361F49D5E2B238F3298E8936CE16BA3ABC5E331D95C656E3F2F83A8C6E6717
+        93C6E5E861A8A7A9A6A886A209A2478DD4AA90D4577CC72CDB7C72DC5E98CBAD
+        4132F93D47ECE23D0E78F4A6F2C7926DACF7E9ED6D76B5B8589F4155B7AE6002
+        8319AD482320D4820834E95B53D43F1629A5A6A7A7DA1D1CC94B42F4D0C9574F
+        B2EB2B8C113D2A279EB6B9E6C8D53B8506492591DE47F53B3372520DC39A0464
+        1BABEE23CE5F43D1A9DABDBFF194FD0ED14A1FC36E3351D17FCD7477C59DC5B4
+        3F8366B64744E431798CAEE8C564E86AF1DB11A9EB31B5B99DCF4B252CA0D894
+        9A95C2716241163EDFBABCE617967479EF4A18571FA841AA25453F6D474876CD
+        BB92A3B6B3992DB6B59D6EA435FD00C292CDA483C45069A1FB3AD0ABB13AC707
+        FCA7FF009B0546D5A9A5C16E7F8F7B8F3422C68AFF00E1FB830F92E92ED0F252
+        C3E79A6FBAA49B2FD775F30D5212D289B19726D29049ADE4BDDBEE219034B0B9
+        23F894915CFA1A63A165EC3B56F36377169B7B945534F82450FA0D3D4039EB6F
+        4DC9F1C7E3A64AA3053526DDE9E929EAA96BE68A4A78766B472C4F410490C91B
+        258189D5D482383ED78BADF8C73932DDF11FEFCF5E895EC79416E2C40876D0B4
+        7D5FD8FF0008A573EBD167DC9F14BA2A4C5E51D36F7558719FCDA2698B698B22
+        6E8AC8A1D22E011E351A4FD48B5BDFA49F79F1631E25D53C35FE3FF7D827F9F5
+        EB7B6E55FA69CF87B7EAF1E40330F013B01E7C29C3E5D04189E8BEBFEBFEC11B
+        9B67FF007376BEE0C0526072584CF602B70988CB62ABD2BB722FDE63B278F9E0
+        ABA3A8558C7AD195AC6D7B1E59924DD5EDA35737054BB8208735144E229C3A57
+        047CBB16E33BC3F44A56288A9062146D5356841E3402B4F975729D09F2F68F7A
+        62687ABFB9F2F89CAE473D4726231DBCF19558D9A4A874C654D4197735150CA5
+        6078D290B0AE85027934F9516E64F65CF6B3AACB2342EA8BE6548E2400323E7D
+        1E45B9D9C8F6D02DD46F2C95002B2B1C2B3924035028A734E341E7D197A08722
+        FB3F37800E9FC462A8A4C417D6BE012B65A8E945497D5E3FB6D2DE4D57D3A0DE
+        F6E7DB1D2BF3A75FFFD7DA8D7FECB9FA37FED67D85FF00BE9F7F7BF75EE8DE62
+        3727C78871785A6DC19FE968B2B4399AE7A8A7CD6536226468F3715465C3BBC5
+        5F38AAA7CBC53BB863613862F7FAB7B13CF073099A76B786F7C264142A25A15A
+        2FA60AD3F2E1D473633F247D1D825F4DB4FD4A4AC58486DF507064C9D590E0D7
+        3F156BF3E9AAA7757C6E75ED049771F46BC5594E8B324B97D80D1D546DB42920
+        65A857A8293C6D0AE821EE0A0D3F4E3DBC96FCC60ED24417D507D25C7EA13F97
+        AF4964B9E463FD690D3ED2559452A6DE8DFE2EA3F3F4F3F4EA89FF00E149FF00
+        21BA87AF7E00546CCEBACCF5A566ECEECDD18BEB188ED3A9DAB5D95A3DAD4F95
+        C0EF6DCC11F1324B5747415549B462A496DA5184EAA6FC7B2D9C6F1058DC2DE8
+        B948DE44F8F580480FFC5827A115947CAD73BCD94BB4AEDF24B0C12E62F05990
+        16840CA54A8C7CB875583FCA4FA67AF3A7BE29FC5EF9298DC7ECADC7DCE727F2
+        5FE45556D235BB5A6DD5BDF69EC2EF1F899D40BD7A28B232BD4D4E56BFABF29B
+        C2AB6F52BC723AE5EB566A78CC9CFB6EC6D7780EB259DBDC7746E41457CAE921
+        A8546450D0F966878F4A378BFE59789A0DD6F2C4F87344196568BB5BC40C950E
+        706ABA8540382470AF5B097C311D41D1947F301F7050F5B767F66CFDA5D5798D
+        FB8EDAFB97A3A3CFEF6DE9BD3E3D74AEEFECC382CDEFFDDDB0B68D46D7C6762E
+        FADC55D4F0D56560820A56A88E1F2D4378E6542D77F16F17856D782412BD68B2
+        56B48C8AD071CD7D735E8A8DEF263EE3762E6EF6B36C6D610BA9A02A5754EAC1
+        6A684628698C53A38FB73B3FA6B7B6176BD43617AFBA4F3549FDE3C2EDEA1DF9
+        9AF8EDB86AA8D3FB928319B9A868FAAFB477E6DB9F6FAD455089291F27475527
+        DA488F1450B432C8A56DF990C5B91782FB51D35AACB52758E3EA7A40F71C88B7
+        1CBA23B8DA3C340E306DE8078240E1803C870F4E8A86DBF95BD33BCF77EECF8D
+        DD8387F8A3DCF82DC2BB99B72772F434BB7B39D314E16BE491B6F778EDADD2B9
+        9DBFB0F70EE6C7D1353263A1DD3BBAA2A6A192399628CB3A37669BF5C5D46025
+        DBA04D2712100682349E341C71C38F4A773FEA6D8EDD70E3F764333CC2407F41
+        096F154EB1C093804371C035E88AEC5C67C67D93D31F16BAB7B331DD1FD89B4F
+        B728BE03F60F4F6E8DE98FD81BBF27D7FBA777775F4856FC9AE88C865B2CB92A
+        CC3E0F7962B2397DC7474D37820ABC5D46771F26AA7A18E2289EDB7AFA4B60D6
+        F73E0191B4F6C9425827C2294A914A5327A368AEF9506E9B8491DDD87D52C09E
+        210D0D42A34B5D641A8D249AEAC2FCABD5BBEE1EC7EABC76FDF8AFB6F6B6F8F8
+        6345B2B2994DFD55BEB0DBBB76ED8A3ECBACA4C175FE506DC97A6F0B8D9C622B
+        D31790C8BFF1C92AAC29292583C42F2B58C678F9885C6E0A63BCD722F9896AD4
+        74269E64F027E553D07EC5B91DAC3617D5B618E190548FA7D284C3305D7E4A0E
+        42F0EEA01E7D0BDB9F73FC6B3B73B2D22DC5D17AAB71F907A954CB75F5EAE66D
+        AD4B4FAEA80A8BCF2B431A25E4D4C51557F481EED6D6FCC9F53B59682FA8AC3C
+        A5C0F109C7A7AF54DCEE39106DBCCDE14DB4788F1B9C1B6AB1F014038E270079
+        9C01D282BB74FC6B6CA4351FDE6E84FBD4A0AC8639E4CD75CAD74746F534524D
+        147349522A5291A78D19D41085D5491703DA25B5E6631322DBDFE92C30166A13
+        4206294AFA79F4766E7907EAA390CFB378811856B6DAA84A9201E34240A8E150
+        2B9A755A1DFDF39BE27F476DCFB6ADA5EB6AC4C0EE0CE6465CCE431FB6E2DB51
+        549CFE76B685B112252BC9979F4D6A4A92D3154B9F448C6FEF253903EEDBEE3F
+        3BCA6F2E9AEADAD5E1525416F1020440CD29621215A035F12A40F894751EEE7C
+        E1C95B259416FF00BB2CA49A3B89181314654932CAC9A00525CD194AE9FC8D7A
+        D5FF00E76FF332FE55FF0026B79EDCCDF7275053F6966F620AEA6C0D7ECE39DD
+        8D0430563513CD49907DA99FDB95B99A6F263E2644ACF3A47EAD200760D2ECBF
+        771F69767416DCDDEE6EDE2FA12418C4F73772027246AB3578B8F96B1D125B73
+        DF313C93CFB07294A90CF4258450C08748A03494AB70C574FF0093A1CB69FF00
+        C288BE28E4B2386A7C96C0A7C1418AA76C7632A6A3626CF4A5C6D0C90414AD4F
+        1F82861963A5305346BA145AC8BFD3DD97D8CF64370867876DF75ED5266A6256
+        DCA1D441C774A8631C78B103E7D30DCCBCC704B6F35D721AB786080522B47A02
+        00228A4310401800F01D59DF437F301F879F20308F4985A6EBDCBC35D939B335
+        268B0F858F254957599B39892AAAF015749E69BC356C4A491D9D74291A985FD8
+        2F9D7EEA1CE1B55AAEF3CB7BBB5D58140A8E9309E070128156E2162AADA69557
+        E15218AF0E8DB65E7FE56BAF136EDC765B78E7329760D02A3AB1975926374048
+        06BA587A0A57A37991C2FC7BC9E7B335F49B8BA70D3D56D7DB1346F3E5F63D2C
+        A627AFDE4DE1A8A6ABA882A609630C0BC322AC9196B3283C7BC4ADC765E69DA9
+        86DFB8EDD7D15E453C8194A4B50691E6A01041F26048232091D4990DF727C9B8
+        DE48B75B608DADA022AD02FE3B8A820906A052A0E454547492C4EDCEAA19CD8F
+        4FB2323D71575B154559A6A4DA191DA55559163D369678398297073C93C740AA
+        63074A8887A41FC7B2D9A2DCD62BF6BD8EE42102A641252BE22F12D8AF1F9F4A
+        EDA5E5E6BAD8D36A96C0CC1DB10B42582FD3CDC0466A1787CB8746C3075754FD
+        53BD2232BEB873D8AC486F2B5C40FBE3138931EBBDF4781F45BF4E8E3E9C7B28
+        E855D7FFD0DA8D7FECB9FA37FED67D85FF00BE9F7F7BF75EE8E3E17B13A6B1B8
+        9C2D366737B529ABDB2D5D8C952B2890CD53943539656A2491A8DBEEAB1A685C
+        E852CCDA188BD8FB12CFB6EF32CD3BC36F2B47A030A1E0B45CF1C0A79FCFA8F7
+        6FE60E55B7B2B18AEAFAD967F15D0EA192F59069AE9EE6A8E02A707D3A6D9FB1
+        FA523FF49B2499CDA31253411BC92C9451A474489B4692632543B5105A44488F
+        9097D2027ABE9CFB7576CDE89DA80B798927D78FEA1E19CFE5D267E61E55079A
+        18DF5B050A2848A05FF175E274F6FAE698CF0EB4F3FF0085687716CFDC39DF85
+        DD63B32BB1553414186EDBEC1CBAE329169D1E6CAD5ECBDBF839A4614F019408
+        7195BA0F22CC6DEC8AEE0BEB6FD2BC5704E40635E151EA7A1AED97BB3DFEAB8D
+        B248DD14509514E343E82B815EB619FE5DFB23E2FF0059FC1EF858D9FC3F53CF
+        D9BB07A7BAF36BD36F9C9ED4C1D66F2C355E732A2B770EDEC7EEEA8C3CB98A2F
+        BDCB67AB629A921A8559659E54284BB026E9B4EEE26431DA4BA7E9C114F430D6
+        BC7866B5E14CF4179799F963E92559F72B7D7F5C50D7D45DE9D24D285B14D3C6
+        B8A571D1E1DAB90F8C1B3F7B7656576DE2BAB36C566E78B6EEE3DE35D82DA188
+        C356EE0CBC926E8926CFEE79F1F86A6A8CAE42606426AEACC9237AFD679F756D
+        AB7AFA5B6D16D2EB691F81E27B3CEB93FE7EB7173272B7EF4DCFC5DC20F05608
+        48046173354D34F68C71C0C7CBA70CB6F8E84CEC9B3286B6BF636670D9DA1CDD
+        3D651D56229B218CCEE2ABF6B54AD5432D34D8E969B2B8FADA39CF914AC91CB0
+        B9B82A7DB8BB5EF4B0EE2AF6D282348A13C3BC60E71E9D266E62E546BAE5E74B
+        FB620873502BABF44E410BDC3CEA2BEBD3267F3DF18DBABB70EC8A683AB3FB99
+        12546D0ADDA90ED9C40DA91626A725063EAF6AD5E1171230E9412D1560A79685
+        E2F1B47278D92CD63BB7DA77A17302BDA4DA192B43E6341C815C839CF0EB77FC
+        CDCA8DB75EBA6E56DE2ACD4A8E2ADE2AF6934C30A8ED241150295EA3E076EFC3
+        1DB750368603AFFA230383C3D7ED9EC1C46D6C3759ED4C662F13BC71993CB2E3
+        F7CE3F0743B720A4C7EE4A1A8A48441948E24A98DE15D128282C98ED5BC8B488
+        8B5974F88D9AE2B44F9F1E8C17997958EE9721B718359B78F1435A6B94134D35
+        A7015E07879748CA1C5FC6CA8ED8EB0EFD9374E36AF75FF71E7EA7C5523B52C9
+        B4E0DB95E9BA778E42BB118D5C30966DC39CC852D2AD4540A8915E92821548D3
+        4C8CEB64DAF7AF1B74ADB4DA827AE47EA475AE71D145AF31F2AFD272DFFBB0B7
+        2866A9C5435609E943A68D5C5295F5F2E858DC9D93D2326DDEC811E7B6796A4C
+        7E462988A28C7D84C36BD2CFA2A9BECAD46EB14AB2D9F4908E1BE841F75B6DAF
+        7B173B616B79A85879F1EF3C339F4C7D9D5B73E62E537DBB994477F6DAC46E30
+        3E13E029A1EDED39AE69820F035EA92BF9BE7F336D85D374599EA1EADACC38A8
+        C5E01321D8B9EC5D253D356495196892A713B2B1F3FDB45514AD2D114A8AF957
+        930CE91836F2839D7F74CFBB949BED8FFAE8F3BA326D11BB9B6592A51520244B
+        74C09A310E0C70AF9BA93C745233F743DC6B08A54E5FE5BD0F3BA80EC8A01667
+        3DB1A9A0231DCEDE869FC5D5187C17FE58F97FE66F2E1FE57FCF3EEDCB7597C6
+        9DC1B8A4A2EAEE9CDB75F5589DE7DA78E8ABAAA8D72757976A4A9A7DA1B32BEB
+        A89A9E95608E5CA65023C919A78FC351296FDE03DFEE61DCEFEFF92790ACA4B5
+        E56B5C6843412151FDA4E4106572092757E9A54802981AE49E5EE59DAE3B6DDB
+        9977681F779640A4B1AE92491E1C78217B869D22AE48CE475B3E7507C35FE595
+        F1BB17BD703D37D19F1F36B4584DB38C54CCD56C7A2DCBBBA39130D9B99EAB27
+        BD37662B35BAE49E6D2B2B495159636D438516C35B9939B6F8EDF25CBDCB334A
+        6A03501EE4C055201F4C0F9752936F7CA51FF58238EFADF425BAD2A09D24C729
+        392B55AE0D4D3C8F9742A764F4EFC0FEDE5C0EDFECCEACF8EDBFB1597C7E598D
+        16E7EAEDAF983574698EA5659E8DEAF6CC9563EDFCF1B2CB03068B5060CB707D
+        A2B78B9A2D92EA485AE91D59721C8A1A9C1EEFB7078F4B24DFF9424B8DAD45FD
+        A9474734D3F10D0B9034F70048C8AD2A0F98EB5CDF9BDFC8E3A130188DCBF21F
+        F96C76BC5D29DAFB5770EE4A9FF4195FB873353D61BEDE877357D0D26DCDA398
+        CC79721B0F7555C623A7A586A2A67C6CF3B240CB4819A513E7B53EF5FB89EDD6
+        F76DA565976B9123F1A3203472A1456712C552922F13A82865A6A04D07404E64
+        DB791B98B6DB9927DCE04BA4B89551B2A50F8CC91847A02AD42A02939274D2A7
+        A0DFF9667F333FE1B5D0ED9EEFA08E8C43948367F666333F8E48F25B6B254557
+        538B7CF7DAD653B5450D6E0B21248B90A6080B22B82A24096CD3F783D90D97DF
+        6F6F61E7FF006FEDBC2DFD6069238D0D4F88AA1DED18D6AC92815B776CAB5054
+        80F58CB9479CE5E48E609366E6129258BB2AB48CA0D52A42CA306852A7581822
+        A695D34D939737D6DB8B35B23FBA193DBB92A8ABA8AEADA697114A17EEE80ECE
+        CFC8F514F569471C7534CEB2236A4721810791CFBE4F5C58EE76916E02F6DE54
+        0A0021BC9BC541422B838228463AC95B6DDB63BFBBD8576CBC824959D98681F1
+        2FD34D521A8030C83504D707A11B6FD08FF469BF174F3FDF9C3ADADC7FCCD0C2
+        8FF7DCFB26E859D7FFD1DA8D7FECB9FA37FED67D85FF00BE9F7F7BF75EE8E760
+        BBAFADB0F8AC5633219DAF86B287215F43570C7B5778552C7510D46520911A6A
+        3C04F4E624956DE4D5E2FA59B95B88AE365DC669A6923814A32823BE318A29F3
+        60787971E80BB6F336CB6D636304D74E254765602298D08320E2B1914AF9D69F
+        3E1D364DDEBD621BB1FF00DFC190FDD86230DB696F362D7DAB4A078C2EDE2CC7
+        50FA2826FC7D7DBABB26E5FEEAFF00417073FA91FF00BF0FF4FA4CFCD1B2D799
+        8FD5BF728D3FA5367F41463F4FD7AD13FF00E1509D9981ED6FE61BD25B670591
+        A8AEC46DEE84D9B8A67971F95A03156EE6EC0DE35356A94D90A3A4A9E69CC075
+        2A598FD09B70437167716B27833A012100D2AA78FCC123F9F436B2DCACEFE037
+        36929684122A55972295C3283FCBADA4FB4BE5AFFB2F3B8FE23AE03B3B2945D0
+        783DABBA64EFAD9759B0B56363DA7B5BB5FA63ACB07BD31F98A9D8277BE365DA
+        757DC8B97C9AD3641A8E6C5E0C22D3ABBC8D39BCFB5DF457019A05D3E00FC69F
+        EFA553F8BC8B0FF503D05ECB7EDA6E6C5A38EE9B50BC63FD9CA3FE24BB81941C
+        421FF0798AAFFE22FCD8A29B1BF243B43E52F7153EDBC5516FAEBCABC0526E9D
+        AF06D0DB5D51B1BB0BAB761F696D9D855F99A4D93B7E5ABCDEDCAFEDA182A9A9
+        CA5555D455D4D1C3E3763209276CED1B8359C27C350048DC5E314AAC647161C6
+        A3FC1C6BD3F1F30ED11EEF7BFACE4BC11534C53313A5E7068150F0D3E433C722
+        9D1A9C57CBFF008FFBFF0019B7775F5576261FB5A8F0E771D2DF638C966692AB
+        70516CE3914DB736629B1F2E2B1797A84ADA6BA55CB11856A237902AB03EDE87
+        66DC1A0DC34468C3B4624888F8C7987A748EE3993688EEF97C4B3CAA54393AA1
+        9D4FF644643460F1C70E3D21B17F3E3E3FEF04ACEBECE54EFF00EA9ED2AEABC9
+        CD41D6BDA7D77BA703B8F314D88CD24D90A9DA597C4516E1D8BBFE96968E369E
+        4936F6632B1C54E8F239544622B69B55F7D7C286001B4F9BA0AF61E04B50FE5D
+        39B9F306D5FB9AEE5174CC864F28E534ACA08A80955FCC0F97403E2BB67B8FB8
+        BA6F2BDCFB23E576E8EBFED0ECDEAAC6F6275475962BA7B6565BA8B6B47BA71B
+        98CDEC3D91B832DBB3A4737BEB3D95A1C7D653C191CCAE6E0A6FE2723552D035
+        122D0CAD0D93727B585D6152A598FC71F021287E2AE7E7FE7E951E68D922DCEE
+        D1EE58308E35AF8531C8794115D14C7CBD78914E8D2E57E58759EDEDCBF1FB67
+        0C5F66E7BFBEF98DD66A375EDDEB4DDF90D9BB222DB9B1F3B5424EC1CD4B8EA4
+        936FA67A6AF5831A04350D55511BAD90216F6AA6D9F7149AFD3E9AA5D6828C84
+        61D0E486A0C0F3E271D15D9F316CCF67B139BEA783255814941358665A282956
+        35604800D0549E843DCBDEDD5EFB7BB051770644B498CAF5887F7477AFA89DB9
+        001E3BEDDB480B1B5D2E355C7D411EED6BB1EE62E76D2605A071FE891FF19FE9
+        F5ADCF9A7647DB798D12EDF5B44E07E94D9AC000A7E9FAF5F3E7F98917FB33FF
+        00CCC7B97616E1CF56FF0074FB0BE79673AD6BB2812BD25A2D9955DCEDB0A927
+        482481AB617C7ED686309198BC89E3D212E34FBEEAF2EC32ED7F730E5B9B68B5
+        0B3D9F29433385A7732597D4C80D30434A49635A126A4F9F587DB85DDBDDFBC1
+        B8CB773136D36E8E15886C2197429A11AB094A0A5470A7975BF975EF6774A6C9
+        D83B2B676D8AF9B03B6B6AD7D56DEDBD85C76CCDE90D0E230388C8E731B86C7D
+        2D3C3B72D4F4345430451C77011114736B7BE176E1B56EF777B77733461A6911
+        5989923A962A8589EFE24D7ACC2DB399F6282C2CE2170E02DCCB40219B0BE2CD
+        4E11E0529F2E9C321DD9D66D53D8646E4C8912EDCC7AC646D4DECDA9C62B3AA5
+        500DBA4BB5D8702E7F1F5B7B65363DCB46DBFE2EB5129FC71FF127F4FADDC735
+        ECA5F98B4DDBF75B281FA5364E897FE17F67536AFBAFABDB27B659773D769583
+        2BADBFBA7BE02AAB63E00A1C8DB7E91723836BFB61762DCC45743E9978AFE38F
+        D4FF004FA5B27366CBF55B51FAD9280495FD29B15414FC1D25C775F58A607280
+        EE9AE05B756E2D29FDD3DF8CD6937CD7BC6FA63DB2F7531B06245C2AF37B73ED
+        C9763DCBEA223F4CA40853FD122FF7D0FE9F4D5B7356CBF4374A6F24A9BA98D3
+        C29CF1B9620E233E59EB46DFE735B0F64F5AFF00312ED0DEFD4F54B1607B9FAF
+        768F6AEE1868F1F93C4D3C1BCB2B366F6CEE898D1E4A831D5293E66BB6A0C94E
+        FA0896A6B5DF512C40ECFF00F77D4BBACDED26E92EE91136D67772C03510C0F8
+        6B1CA841048ED59B47A855A758A1EFD5C6DB73CD56EDB74FA8CD1AB93A5D4D58
+        B2B0A3AA9C95D55A52A78F5B547C5BEC9C37647C7DF878EF9CA8CA6EDC9F4A75
+        7E733D14D8CCFC37C8CFD1BE7CC4EF5D90C6418F9DBF885537293BF9355D4B0E
+        7DF24FDDADA4EDDEE5FBB02DED963DB937DBF58C02940837070802A9A80140F2
+        14A797594BCADBD5ADFED1C876A2ED9EF96DA22E0AC8322C640C7532853DC7C8
+        9AF115E8CC6DF8C7F7137DC56E3FD22E1E3B5B8B7FA56C2ADADEE2AEA41EBFFF
+        D2DA8D7FECB9FA37FED67D85FF00BE9F7F7BF75EE8EEE07B3B138BC2E0A926DB
+        BD8D50EB93ACC709B1DD6FBDB274934E27CB461D2AA870B3C1F624C45854B32D
+        3E9B1D7EA5B882E36C9A59EE1C5C5B0EC07334608145F22C0D7E5C7E5C7A02ED
+        DCC5696D63B7C4F637EC448CB54B4B87526B20C32C6469F3D55D34F3C8AB74FD
+        A5884FF49CE76DF65811411B4853AC77DC8F181B469253A238B04F2D4305E42C
+        22462DE900B7A7DB8BB5CDFEEABFC66DB8FF00BFA2FF007E1FE963F3A7ECE934
+        9CC56ABFD696361B850A8FF889738FF175E20475FD95F967AD083FE14679FA6C
+        BFF37CEB7CB0C7E7E8A8DBAABE3FC829B3780CB616BCC30EF1DCC25618DC9D2D
+        3566872840BA0D4C08FA83EC8E6B76824313491B1C655D587ED5247F3E86F677
+        F1DEDBFD4C704E899C4913C6F8A7E0750DF6633C38F5BB7E6305B0F7CE736876
+        3EE4A6EE9C9E370781DFFD4753D6755D38D98EB3DD5B5BB3BB2B6F55EF0A4DD7
+        89CC755E5774E423CA56ECAC35DE3C9D3E3D62C6A029F6F3D68A93B6DAE6375F
+        EE45B7F600FF006F17FBE47F4FF971F957A0645CCB68BB77FB81B87FB9A457E8
+        EE78FD61C622FCABF0FCE99E96FD68FB7BAF3B33BFF73C32F7B6E4AAED7DC3B4
+        FB173B419FEB1AE7A4C164A976AAEC6A4A0DAF1EDAEBBC055B62E9B696C9C5D1
+        A45573E4AB1BEC964791A79A592665F6998DA5AD2EADB323FF00A345E89FD2C7
+        E78FE7D2A8B996D5775DCD9B6EBFA0821E169724D0198E4787FB2993F3C74B6C
+        CF6563B28FB320A3C676C61E7C95066E3A3CB51F56EEB5CA63A4A9DAB5220C8D
+        2D2E7B69E431F164689A512C716429258BCA816585C6A8CB8BB54CB0EE4A6E6D
+        AA348FEDA23F8C7A350FDA2A3F2E933731DAB5C72EB8B0DC294739B4B904FE89
+        F231023EC2011E601C7403EDAEBDE8FEBCA7CDEFA8365774EFAED282AFF84557
+        6FF6CECEED5EC2EC90AD965A7ABA5C06E0DD387AB6DA783AD8B20C9351EDAA7C
+        660E4048583427A6D6BB4CCB776FFE336D94AFF6F11FC07FA78E1C0D0FCBADEE
+        3CCB6926D77A0586E18969FEE1DC815F157D6215E3F10AA935C9A1EB051755E0
+        F079CCE6D9D89DA3F317AD7AEEAD287391755EC9D938D8368E121C8673355B91
+        C2ED6DD59DE93CF7656CFDBD599112C90E3711B968D31F14CF151474B4BE2891
+        2B6D537D346DF556D4F1187F6D17A2796AAFE7C3F3AF4BD3996D06E370BFBBB7
+        0D5E0467FDC4B9E1AE5E27C3D3F60F88E7C80EA51CBEF1CC77DF48763CD91ED1
+        A4E9ADABD7DB8B058BEBDC6ECAEDBC654EE0ED3DDB06725AFDD1BCF074D80A4C
+        2E5F11B7B66E121A7C52E49A76A3ACADAB9122824D2F2AC976A9BC5DCFFC66DA
+        A13FDFF17FBF23FE9D0FE55E8A6D3992D45A72DD2C2FC8329FF887719FD09F85
+        62A83EB5A62A0FA743D6E4ED5C3B6DDEC8036D766AF831D918E467EAFDFA8108
+        DAF4B29688B6047DDC7A2407541E552D75BEB56515B5DAA6173B5FF8CDAE587F
+        A3C5FEFC3FD2C7E74F5E143D5F73E63B4936DE654161B857C2719B4B9001F017
+        CCC7C3CEA2A3E750475A05FCEAC6E63E3B7F373EFBA2CE52E636B3EFDEE7FF00
+        6653AA335B830D91C249549BF3729DFF008CCC5252E5E9A9A768717BC9AB681D
+        B4E8F3D1B8FA0F7DA2FBAA7B8FB4F3AFB3169EDDDE4D149770ED5F46F10756F1
+        238E136F244082412D0D1C0E3C00C91D62CFB9BB1DCEDDCDD2F33DB433470497
+        7E30678DE365667F1158AB80C007A8AD29E7C3ADE5BE3BFCAED93DBDD49B0F78
+        63315BD2A32194C8C93EE0C6EDFD93BAB71C383CFE52B72B5359879AAF0B8BAE
+        87C549356022762B1780A48CCAAC3DF25BDC9F6CB79E42E6EDF361BE78441112
+        2191E48D3C5854284900661F128CAF10D55A5475931CB9CE76179B2ED973F497
+        6D235C31611DBCD28567791B4EA8D186350C9A003248E85AAFECEC4FDCF6437F
+        777B2478F6D63F583D67BEAE96C4E6E4D496C19FB8BA9FA45E46D434DB571EC0
+        F1ED7368DB3FC62DB32B7FA345FC4A3F8BFC34E975C7315A99398FFC43701FE2
+        CA3FDC4B8C76499FECF87D95F4E3D38D4F6A62DF2BB502ED9ED00D3D2E5A78C3
+        757EFB5BA2E3E98DA466C204A6947985A394A48790012AD64E36A9BC1BCFF19B
+        6C151FDBC5EA7FA59FB463F6F4B5F996D0DDED27F77EE394723FC4EE457B07FC
+        2F045781A1F960D10194EE4DBF83D9DB8B2F96C4F65E3F118EDD1B9E4AEC8D4F
+        5AEFC868A8625DF35E649EA26FE0A0454706BFDC9C8F046A0BB388D5982B8760
+        BEBFDCACACECCC12DDCB1C6A88B3445998C4A0281AB2C4F05E27000AE3A4F173
+        458DB6D97924B69B8242B75355BE92E348ADCB713E1E00AD0B7C233520024686
+        7FCE07E421F919F2EB70576CEA3C8673726FECB6D7EB2EB1DB74D4F2D466EA70
+        54138C1ED8A28A8A212D50C86E6CD56CB59E0177492AF47E3DF6C7DA55B1FBBA
+        FDDBF6ADA778B88E3DCE559669723BAE26A3CEC3D520409006E0DA2A3CFAC50E
+        6D92E3DC5F71EEEF6D2291ADD34AA8A1244698414153A9D8B3E91522B4F4EB71
+        8F8FD4F45B4BA8FE2FF53C145BBC7FA3CEB8D93B2464733B3F73E071B39D95D3
+        B55B79ED519BC7518A7A998516A48650931171A6E08F7C5DE70B8B8DDB9939D3
+        982E0C425BEBD9EE0A89119819EEBC4E0A4D455B88A8F9F596BB3DE43F4FC9FB
+        6C36D76A90A050D2C1344A4259CABC6445A1F45346E38C1E84DC16429D30BBDF
+        1056533CBDA38950C153C402F6BE224E58B03CAA11C29E7D850594A6D0DE557C
+        21F3CF1A7A7F97A1A6A1A82F9F5FFFD3DA8D7FECB9FA37FED67D85FF00BE9F7F
+        7BF75EE8E8E0BB4E9F1989C4D09D85DAB5ED4790AEA496A717B0B2B5B42C12A3
+        2901AC82AD0AC55542CD62AF16B2CAC08522E408AE36B692699FEBED57528346
+        9541E0A684791F91A7404DB77F482CAC61FDCFB83947604A40CCBC641A837065
+        F4D35241A81C685C72DDEBB9B15F2772DB5E3C5F7157EC6DFBD17DA7B9A5D935
+        7D61488B88DD3D6B59D0785C56636EE429B0F43B99A2CBE3FB3EBE2C9C790AEA
+        AA44961A368169EF219AEBB5B07DA94DFDAF99FED5682927A8F5AE066B9F4E9A
+        7DF90A733B8DA2FEA748A780FA8D6DC71078014A126805457883D695BFF0A72C
+        D31FE665D59BF1709B9F0B4B51F1F7ABE7860DC981ACC1D6C926DCEC0EC033CD
+        152D622BCB059D007171A811F8F647736C6D9FC33344F515AA3061FB479F433B
+        0BF5BE89A65B59E20091496368DBC8D406C91F3EB7ABEBEEECA4CBF55ED0CA45
+        B03B6671959B11944783AFF2D2452435DBAA2AD59A3994F85E26825D62CC4953
+        600B7A7D9E1DAD8DC06FAFB503C01FE8ABFEF91E5FEAFD99E81C9CC08B6063FD
+        CFB81617AC716EE47FB964F1E1C3CAB5F2A571D2DA8BB72953746E59BFD1F76E
+        30388DB41517AEF3464731C9B858AAA900A9370016D2093C1FAD9A7DA58DA5AA
+        FEF0B4F8DFFD157FA1D3B073146BBB6E927EE7DC4830C029F4EF5C19BCBCB8E0
+        9A03F91E9AB2DDC9494957B22AE4EBBEDE414C320D3452F5F65A39232D81963F
+        1B9D4D197577B1D0641706C48E7DA9B5D91E7FAD85771B3AB5287C55A7C55FF5
+        569D332730A7D4F2F93B3EE23487A836EFFEF92314A83FED491E75A67A49EE6F
+        90A936DACC430F5A768C27F887A1EA765E548950E6A09165408AA8B1B06E033A
+        B706E01E3D9DD9F2852EA069376B63DBE4EB8EC23CFF00C829D6AFF9895F6DBC
+        8FF73DF8FD4F381B23C407EC15F9D0FA8AF421617BA20ADC8D4D4CBD7FDAFAA6
+        C46255DE0EBBCE3538921C96E14755FF003928B2956E45883C12410086F76336
+        F485770B5D21DA95956B42A87E43A5F1F31C7FBC2E18ECFB8D0C310C5BB9E0D3
+        7E7E7E94F4AD0D19A87B669BEC3AEEFD7DDB80C59699DC1EBCCC1201DABBAA3B
+        7A75073A9C70858F37FA0245A4DA9BC4DCFF00C7ED3283FD157FDF91FF00AB3D
+        155B73022DBF2E03B46E3559493FE2EF9FD09C63D78F95719E00D336E4EDBA79
+        36FF006120EBCEDE064C6D7AC45BAF32EAB25F6DD3AEA56240450F75BC9A3904
+        FE9B31ADAED2C2E76D3FBC2D30C3FD157F8CFF00AB15FDBD39BA730A36DBCC69
+        FB9B711AA27A136EE06610327C857F8A9EBC287AAA0FE723F02B607F326E9FC5
+        CD86D9BDA3B03E4A7515265329D29DB8FD6B9A8E8229AAA7A57AAEBDDEF2C31B
+        646B765EE4A98D1FD11C9263AA57EE61E4CB0540F7DADE6AE60F6FB982DB74D9
+        B7DB78D848ADA56715AAD4861E5514A1C8A8C7CC31CCADB7731DB3D95E6C1B81
+        428C351B67A648C1F3CE48C103D6B407585F87BFCD53E40FF2D8ECE6E89F973B
+        2F7CF536F0DBD50B8FA99770E22B21A1CDE3696A5E929B2069F211478FDD5809
+        CA3FDBD7D333965BF8DCB6A233E37BDEBDA7FBC4ECF1DB735DC5B6D5CE0140D6
+        E74DACAE47C714E9536F239A5518784C4D7B5405EA17DBED79A7906E05C6D114
+        D77B2D6A0007C540091A5E36A6B0BDC2A3BC70A1353D6D03D4FF00CEE3E2D768
+        6232D90A8DEDB260AFDCD83A4A1658B70C58C68A48692BA1F29C665D92AA1D66
+        B412A646D36FAF3EE06DEFEE65CF96AD1CBCBD1C97DB6C5216124212E5082411
+        496DD991B860D057A1ADB7BB7B05C0DC57709560BAB8842697AC6410ACB52920
+        0DF8B3E94E858EC2FE717F1236B53E372C9BE36C3BE328F205A9EBF76E160F24
+        F534D1431F8FECA6AF9A58E30ACC4040CDC5ADCFB0EECFF735F762F5A65BBDAE
+        78ACC91A9FC0900500F12D26855FB49A0E8D6F7DDEE538A4B3961BC479630C34
+        EB5AB165A602EA27F675AE07CFAFE7E78FEC886AFA8FA1866BB0F37B97375F4F
+        83DA3B3B1992AAA3AECDE772D59574D4B0E328E39B31BA2BCE42B34D344CACAC
+        74E81AB8390BCA5EDBFB47EC37FBBDE6FDEADAF79A21896905BC91DC4E74A800
+        3CC84C16A840A390C64A82ACBE6001B8F3073673B23EDDB2D94B0ED524AEC649
+        15A34ABC8CE74A1A3CA433768202D2841F5157F9507F2D0DF9D77D835DF353E7
+        775F768BFC87971D4B9FEA0EA9AAEBFCC6429BABE9B70B6728DF72EE68E78E1D
+        3D85251D114A48047E2C3C529B9FBB0452E3CFBC7EF5EFDEEC6EC860BBB58B60
+        526348926558E38D02954519A8EEEE24EA73526B5AB0DF92B97AC3945EE6D5F6
+        8BF96FD511CC9F4EE4B3B9901635029F0769A69A1207C38D8BB686EF7CB6EDD8
+        B43FDD7DF7841515F5CF34BB976B5761685586D0DC2A90B564CF253B5679251A
+        5159B500DA4D813EE04DE36D0BB76E52FD4C0EC8A08D0E18FF006895C71A538F
+        E55EA41B7DC45D5EEC71FD05DC47C463596228BFEE34C29AAA4139C004F9D0D0
+        74A4C5C0567DCC78FDCED2C7C7FE1AE3ED9C7A9FF61661EC270BD767BB4F3571
+        FCCAFF0098F4293FDAA7D9D7FFD4DA8D7FECB9FA37FED67D85FF00BE9F7F7BF7
+        5EE8EEE077A6E7A2C2E060A6EA4DF99781727594915763F29D671D3CB0F9F2C8
+        B9231E4BB0682B21A06440DEA884E0328310370A7F71656AF3DC336EF0236806
+        8566AFE1C622209FCE9F3E80BB76EFB8C363B7A47CB17B2A0919432BDA508AC8
+        3551EE9582D33950DC2ABE8507B6729B8375FCACEADA3AEEADEC5A48B6375FFC
+        85EDCA1831198EB2A0CE65F37B7B6CF4475DD262A4CCD3F61435136CE6C776ED
+        64F5F8B3554D064F214D8F33A4D0D332FBBAD9DAEADA17F7B41424E74CD41FA9
+        E7FA55CF1C0381F602CBEEB7E139AE43CB57BAA8B55D7685A9F4E2A47F8D50D2
+        831A813A85071A6A9DFF000ADCC2E4EB3BC7E1AF6164B6267B6BB6E1EB1EC7DA
+        80E6ABB6C54355C9B3773E0B343C726D9DC39E8C3D126F5B32CAC80971A750B9
+        04D7104509022BC8E507CD438A7FBDA2F1F2A57E74E863B7DE5CDD87373B4CF6
+        A47012342C5BECF0A5940A79D48E38AF5B5E7C11EEECF7627C10F8A9BDF1DD5B
+        BEB354BB8BACBAB2A3F8951657ACD62ACA815B8BA4ACAE8E3AFEC3A3AB5A335B
+        03B132224E1393106BAFB374B4B57995CEED02B1B7182B3547E8F0A8888AFD84
+        8AF9F4169374DC20B59225E59BD9105F90195AD287FC70D080D74AC14FA95069
+        92BD1B8A3DF1BB13756E971D3BBFA478F0BB65FC6998EACBCB69372308E167EC
+        6556958ADACDA54123D5F5B51EC6D0DA5A0FDF36E0191FF0CFFD0E3FA3D6E1DE
+        3725DDB7571CAB7C5BC08301ECEB8337FCBD52A7CBF9D3A66CCEF1DD55AFB291
+        BA77B0206A8A3CBB2C73E57AB04B0C876C543A475421EC79923951CD982348BA
+        810188B12AECAD2D227BB61BC5B90AE9C167E1E20AD3F47FCDD3126EDB93CFCB
+        C4F2B5F0C3D017B3AFF6278D2E8D08F3C9F913D05555BCF714B8AC82547506FB
+        685731F6BE39727D637AAD798A7559E05FF487A5A9BC937A4BB239D06E838045
+        F259C284347BC401FC3AD409B145FF009A5C683ECCF1E9ABEDDB703B6DE0FEAC
+        DE8025A65ED33FA8323FC68E33F6E0E3A1C4EFADC589CB65FC5D31BEA1A78303
+        879CB4795EAB8A9357F10CF46915D3B0CCA67919B51FDBB05E75126DEC14B610
+        DE2DBABEF90976958656727E14FF0085701F6F4669BC6E29B95C81CA97DFD847
+        F8ECE828F2F9FD57135E14F2E816C76FEDFB9C8BAEA21D69BEA1F26526748066
+        7AD299601FDD6DCE596541D8413546A48243C8C4F02E0DC0BE6DB36ADBD7737F
+        AE81885009D33313FA91F9F85FE403A27B7DDB7236DCB8072DDE9FD534EFB41F
+        E813F1ADC8A62BC4FCBCFA979FCA7604587EC568BAAF7C4620C7D7AFDC0CFF00
+        57ABD420DB34D26BA648BB1E492652AFA6CFE33AC116B598B3049B433EDBAF72
+        8492C3B7C39B1DE78D61007F9B3D5F72DD3726DBB98C1E59BD03C3706AF67FEF
+        85C8A5D1A8A7E7C453A18B21BC77ACB035054F4EEFD9A56C357CAF908F2BD562
+        87CD0CD49E389C7FA47352B532F0EA12264D2AC75290AA42D6F6B609729345BC
+        4023F15680ACF5A1AD7FD06941F33E9C727A3C6DE37433A21E53BFCC6D9D765A
+        78AF13F575AF981438AE7C8D7D773FC7EE95F969B030BB13E467C441DC1B7A5D
+        D79CA6A38373C1D5B5397C0BD7E7F390545660B702761516736DCB1A9D6F3E3E
+        B219885045CF0245663633DCCF6BBE448EB029E1350D114F0F08D6BC323A0FDB
+        DF5D49656E9272B5E48A6EA5186B4AE6596BC6E4500F33F2C57AD4F7F9D0FF00
+        2C4FE585F013ADB319CD89B53E51F547786FD969297A53ACE9FBBFAFF35B42A2
+        52249F71EE8CF5154B7606F46DA1B72129195FBCA46A8AB96381275D4597769E
+        E9F346C9651C961BFC66762D4117D4466A08C9A78429424F1A9FDBD7ADF66B6D
+        DF72BDB6BEE5BB88208D108690DAB8EE0D51DB2CCC780A76E335391D233F9347
+        F29FF823FCC33A89371F64C9F31B7876B6C8DC19CC0F696D4DA7DC9D4382D848
+        9A4653686471F47B830188DE34B479AC34BE396D5D54BF734B385953D2A17CBE
+        EE739EEFB3CB3DEF33012AB856591EEDF0D5A103548A463CCFE5D3777CBFB7ED
+        5B959DBD8F2CCF34722B1D51FD220AA8AD2AF244C0F9F020F91EB685F8CFFCBF
+        FE227C21A1C8567C70F84151B5777D0E772B8393B2F3794EBBDEDDAB25341BAA
+        5C606A7DE7BBBB372B97C3502D3448264C7CB4692223398C93A491BB4FBB9824
+        DCF98A278DA2560949963158C1CAAC203127235569503A7ED2F6E60B49DE3E53
+        BBD62E1D356AB42D459CA819B9E0A00048F4273E67703EE36CEEE1C964BAC37A
+        4C0ED4DB15408DC5D5C22225C8EF6F12F99FB13CB3D4318FFCDD9483606F7F64
+        57124423B6B4B4DC205A4F20F827AE0455C086807CF38CE3A328F72DC8EE7B81
+        3CB5764FD3407FB4B3E1AEE6873759AE71C719F2E91F87C9676BB39B024C8EC4
+        DC7B661FE253567DC666BF66557DBC91ED3CF4AB45534FB7B76672AE3AA2A48B
+        AA34419082FF004B9A5C5AC02D77448EFE39494D345120AD6451505E3514FCEB
+        9E1D5E0BEBCB8BAD87C7D9AE2DE33231AC8D01CFD3CDDA445348C0E7D08C1A9E
+        1D2931B4E09DC4F61E8EECA3A727F1697B67184026F6B7ECFB8EADDC8B5BF8BC
+        CAA9FD8E07F97A1730EF43F6FF0083AFFFD5DA8D7FECB9FA37FED67D85FF00BE
+        9F7F7BF75EE8E860F7B6FDA3C4E229A83A5F75662969B235D0C792A7DD9D6B49
+        4D5B48B51948857D1C15FBBE9EB8ACA96758A58A190293A82952088AE2CAC1E6
+        99A4DE62462A31E1CC48345C122323E55048E809B6EE9BC4563631C3CB13CB1A
+        BB00C26B650C2B20AA869836464060A695AD2942056732B92A3EC8ECDEC7A2E8
+        4DDEDD8551B486C819EC97616CEC84787DB55187C2E52BF0987C3D5761566DCD
+        B70E572B8AA49F212D0D3472D7351D3B54991A9E2119FEDDCBDB74A9B65C5C6F
+        3194AE0049B23C439FECFF00963EDE9349BBEEE4F322FF0056A71A80E32DB76F
+        E828EE2263F6E3563CAB8EB5DAFF0085436D1EC5ECBF897D27DAD97EB6DD381A
+        2EA5ED7AE8AB32F95CC6CFAFA58B13BFF1347847090E0B70E4EA52393378EA08
+        CC9E311876552D761ECBB7AB0DA6DAC49B3BF8649D65505556406843F12C83D0
+        62B5E84361B96E371B9430DD6CF35BC6619082EF0B0255A2C011C8E7CCE69E9F
+        91D2FF0084FBFC92DF3BF7F95FF4A6D5C6F5AEE1DEB1F51EF1DC7D5F5F95C767
+        B64E3A9E8DB19D8E77462A95866F71E3EB4345B737451A2ABC615D8008C16F66
+        2CEC76CB9B34B997768A1BB0AEA50AC849010807B508E1E60FDA2BD33BBDEEE3
+        6B582D7629A787C689B5AC902A92665623BE456AD702A2849E34CF579345BF7B
+        09774EE6917A3378BB9C46DA090FF7BBAB03DD24DC247909DEFA63576202905B
+        F3702DCA77B0DBFE92D41DF21A6B7CF873FF0043FE17D17DBEEFBC0DDB7461CA
+        B725CC3076F8D6B51433649F1E943E54AF035A62B12AB7DF611C9EC3F2F466EE
+        474FE25AE35DE1D5930673B7A75294F20DEAAB5081AFEA3E3BAFAADFD9F6E258
+        EDE21DC34EF9153B7FD0E714EF1C7F4FFC15CFEDE999375DE3EA797F572B5C06
+        50F8135A9AFE89F84F8C2A3CEA74E3CAB8E81DDC3BD37F5262B311BF4C6E985A
+        9334DE32776F5B3AE8873D0B2995D377378A516219407D2C2D73F5F637B6B3B0
+        9DA03FBE623AE2FF007DCDE69E5FA7C3F67D9D357DB9EEDFBBEED5B96A71FA9C
+        7C6B623FB407349707C8800E7CCF1E8777DEBBF2B32D95825E8BDE6D4D5584C3
+        C4C53777557997FCB73DEBF19DF3600AB8646D46EC08205AE408969650C703A6
+        F90EB5918FF673D38263FB2FDBD19AEEDBC1DC2E8FF552EA8608853C6B4AFC53
+        67FB7A50D719F23503150569EB3B363A3D8017A677295FE2D288F56F1EAF5699
+        9B6CEE61E386FBD34C920D57FAA82A09FAD8117FD5ED0EFB896DD9036815A473
+        103BD327F4F87FABE7D135BEE3BC7D3F2FFF00C862E3129A7EADAF77E8CF81FA
+        DF9E69807CE80E0DDB9AECDA1DBBBEA5ABE94DCF045251D642921DE3D6320567
+        DBB0906A162DE2F2402EADF40FE900FE6DEDFDBDB68B9BBB04877B8CB820FF00
+        6730FC7E5FA7FE1A7F97A7372DC7773B7EFE1F96675531B0AF8B6DDB5847C549
+        89C71C571F3C01576BF63F644F3CB46FD25BC6B6920A4934CA777F582CD119A6
+        89441E1977A299217442756BF411A6C750203BBBED5B5C5E1CC9BD42B23367F4
+        E6A63CF11F1CFA67FC272BBBEF3E32D3956E59749FF46B50788F2F1B87CEB838
+        A1AD403787DE5BFA971F8F54E9BDD2D2D3EEACE96FF7F5F5B2052B9ECF0608E7
+        777EE4D15C5D6CA090406E0122C9AD36F95A463BC45A5A04FC1379A27FC2F81F
+        F50E89AC773DD96D6DF4F2DCE7FC6653FDADB0E32CB503F5B247A70241A1A509
+        D0A7FE143BB2FE4162FE654FD8DF25F7F6DFCB6F5ECDC4BE4BAE7AA76C7D94D4
+        3D51D278AABA8C7ECDC7D554D26E2CBC4B5990904CF3398D1EBAB855545C2685
+        F717DE5A456BE108EFE398D58515641A687CF5A2F135E1E9D0C36DBFB9BB96F1
+        67D9E6B6D3A72ED0B6B241E1E14927014E34E3C3A3ABFC837E2BFF00310F8AFD
+        CFD1BF2E76FF00436477DFC64F933B532BB5F7663309BD367E3F74536D3AF6AA
+        3B737DD56D9CFE6F133454F8ACC51C555148492F8EA891C695914B2886C9C5A1
+        91AEE358240035755546AC315D39E1F8751A1E1D6EEEED966555B091E74A9400
+        C63C43A685549714343F8C28C71EB72BAEADEC5C86332B5745D27BAB5CFBAB70
+        B4AB3EF3EAD8A0E77AD796712FF7CD992548F868CA90640406B10DEC4D6D3EDD
+        03C30CFBC47A5624A111CC4FF64388F0F87A1AF0F2AE3A09C1B96F1F4571A395
+        AE4D6EA6CF8D6A07FB92F51FDB56A3870A5781A67A6FA48FB11B75E6FEF7A637
+        63469B776C134D0EF2EAC0E7FDC96F3235C92EF658E247636BAEB6BAB702C09B
+        5C5E6DBF4708B7DD62D4647EE31CDFC317908F3F9D3CBA7E3DCF773BADFD795A
+        E6BF4D063C5B5A8EFB9A13FAF4A1C81424E0D40C55498CC66632FB8F64C59FEA
+        CDC5B3A965AFAE965ACAEDD5B132F8D8AA23D97B8B4D0D3C7B677164B29234CD
+        76590C4B1594DCADD5495C97860B4BEFA7DD6299C28E11C8188F153275A85C7A
+        56BF6E4F4A62BCBFB8BED863BBD8A6B64F15AACD2C0EB5FA69BB47872331AF10
+        4A81406B4341D217078E85C6F5A12ADE187BD311005F249AFC67BA31549A7C9A
+        FCB7F1CA45F55FFC7D86167915DE5A8D6DF21C6A0F0A5388F4E86141403CBAFF
+        D6DA8D7FECB9FA37FED67D85FF00BE9F7F7BF75EE8EEE032BDB10E1702B8AD89
+        B072144727590C1515BDA39DC5D58C799F2A16BAAA8A2EA6C9C2951E200B53C7
+        512D99AC2560B7220B98B6933DC78B7F70AFA05408158568B807C718AF9903EC
+        1D01F6EB9E644B0DB85B6CD67243E23005AEE446D3593B99459B8069C5559B27
+        89A740765725DAA95BDA3AF64EC47992494BC7FE93B3A9E5906DC80948E57EA7
+        B47A9BD3A9C581E6D6E3D8F2D63DA4C1B369BE9F4E914FD04E1AFF00E6BFF83A
+        452CFCC00F329FDD5665A991F5527FBE1781369FCCD3F6745DBF9A3F45F687CB
+        1F837DEFD303AFFAF9AAF3DD23BBF72ED99287B233D94ABA6DD5D7D5DB3F7E6D
+        A86831D37546385656D465B6E47022F9E0075152EBAAE005710EDA96FB8817B7
+        06612AE1A15153FA9C489DA80FAD0F1C03D1C2DCF30B6F1B509F69B3588C32D4
+        ADD48C40D50D68A6CD2A7D06A00E6A463AD6C7FE12CBF29772ED85F935F16E93
+        0B83CDD4E5331D79DCFB731B9EDE591DAEF4FF00C3F3D43B337B363E38368EE7
+        5AA9234A8C44B2C5A2172A86C49FA37B2D8DBDEDC4C935DB44446C45103D7B5A
+        BC5D29FCFF002E8C37E9B7386DADCEDF6304C4CF1EAF12668A9FAA94234C136A
+        F983A71C2A4D3ADD231D9CEDA9773EEA929B6375BCF24787DBABA17B6B70686A
+        88A6DC8AD4ACE9D3CE619A2993449A87A4FF00AC47BBC90ECFF4B6A0EE171A7C
+        47CF809FD0CFFB91D13C373CCE376DD4A6CD6264F020C7D64A0719A943F45FB6
+        A3F6F582A32DDBCD93EBD6976075DC323AE459A21DB3B8665A790EDC999A2794
+        74E46270AD75D68A0122F6B7BBA43B3887720370B823B7FD01057BC70FF18FF0
+        F4CBDCF331B8E5D2766B20D46A0FAC90FF00A09C122CBCBD40353F2E827DFD90
+        ED84A2DCC2A361EC1A71FC5F546B1F69E76A0CF0C995A57352AE7A8E158B5C8E
+        FF00B6C2EBA6C49BDFD8C7654DA592C4ADFDC13E1D3FB05142148A7FB91E94CF
+        4CEE173CC676FBDF1366B351E29FF89721AFEA0C8FF131E7E4687A1931399EDD
+        AAAF982EC5EBCF14BB63041EAC76C6E489FCA2AF3D178D214E9E79629000CC5F
+        5100D80B904FB085DC1B4444837D7189DE83E9D0F921CFF8C508E1D19C775CCE
+        772B80366B1A7D3C59FAC97F8E5A63E889AF127CB8509CF411C38DEEE349D733
+        0D97B0A7925CB3943FE9633AF2D3BFF75F744844B34BD531793C6148063FA9B1
+        E05FD8A16FF972BB9AB5E4E944C8FA75A1FD48C62939E3F3A74516D2F319B5E5
+        B6FDD3675329A0FAB9307C09F8FF0089FA5785734F2A9137725177A56EDFEC26
+        C8ED1D82129B1F90D026ED9DC350F3A0DB54CFE48517A95A3824624A5A46FAAD
+        C9B1166AD6F79660B8DBBE9AE2E35330E16E8BF8CF13E3D7F603F674E6E73732
+        9DBB993C4DA6CC2AC6F5FF001B90D4780B91FE27E98CD323D29D0B78D6EDBC4D
+        541494FB03AE6485E8EAA6A8C83F6DEE3591AA567A34483ED3FD0D1728F192C1
+        83054D362096BFB0CDD4BB55DEA964DC2E410400BF4E98143E7F53FB7D7EC1D1
+        C89F9A12E5146C961A7C363ABEB65E355C53E86B9E35E0294E27A2E1DADDBD51
+        F1E7A4377F7C76A6D2EB5C3EC8EBEACDE7BAF75646B3B8771C3F6F43439ADC72
+        4F1D145FE884475F5F5920115252ADA5A89E548C1527D994F7966AEF10DD6E15
+        16DD00A5BC79A225057EA2B5F2AF451B7CDCCBF496A5364B26ADDCA3FDCC9053
+        F565D47FDC2A5064FA9C703D7CEFB1145DE5FCF2FF009A267335FC296087B073
+        953B97298FA9CAD64786EB3E84EBEA50D4F80399871757250A516DBA48A8209B
+        EDDBCB93AC0FA09723D85E258EE2EA249A5611BC8016D209A13934D4339AD357
+        E7D0C6F66B8B4DBEF6E61811AE521660A5CAA9655269AB41A0C52BA4FAD3AFA5
+        2ED6C46FFD8589EAED8BB53AB7AC307B5B68ED64DB580C4D176AEE14A3C2E270
+        581C7E37178C8625E9A43243051C01032816D1723D5ECCD61D9843774DC2E680
+        AFFA0270A9FF00978E83725D7341BCDA4B6CB6352AE7FDCC930748C1FF0011FB
+        723D3A9B4394EE05DBB91687AFFAEA6BEEFCFA18DBB7370C2DE27DF95CB3D407
+        3D352460440B4813F532A85B863C3D243B39BA8EBB85C0FD14FF0088E87FD045
+        07FB91E7C3E47E5D25B7BAE671B75C15D92C987D64BFF132407FDCA6A9FF0070
+        A94193EA40F2269D4D8B23DB5FDEFDC43FB89D7448DABB4CDCF6B6E408DFEE53
+        7CE945FF008C36CEAD7BEA2469B116BF3ED968768FA2B6FF001FB9A78D27FA02
+        7F0C5FF2F1D2A4B9E66FDF1B8D367B1D7F4B0547D64B4A6BB9A50FD156BC6B51
+        418A139A4CA0ABEC1AACB75F7F7AB696CFC0523E46ADE56C16FF00CB6E9ADA7A
+        D3B2772E9A434D59D73B5292A29C5DC34EB50082A2D1B06255B78F6E48B71FA5
+        BB9A47D03E2895011E2A66A269083F223F3F5BC73EF72DD72DFEF2DB2DA088CC
+        7FB3B9799837D34F820DB42A471AB06E2050107004EDF1FEE437D8FC7FA7EC38
+        FF00D8EB85F64DD0C3CE9D7FFFD7DA8D7FECB9FA37FED67D85FF00BE9F7F7BF7
+        5EE8EA60B23DCE988C3261B677575563A2C9570A5AACA765EEEA0ADACC70A8CA
+        AA3C94149D4B91831F5F240558A7DCD4448432877E0FB10DC47B319A7335E5D0
+        90A8A85863201A2F999C122BFD104FA0E80DB6CDCCE2C6C05AEDDB7B40246D25
+        EE665665AC9C556D1823119F89C0208CE0F41F6E1C7776D6D4F64D6D26CCEAA8
+        E492184CF0FF00A50DDAE2393FBA946AD2827A7E013836D65414247172DC9106
+        DB7FB1C31ED504F7975A413A4F809C3C4383FE3069E95CF4924939999B994FEE
+        CB00748D5FE3531A7E82FF00CB98D58CFE1F4F9F5072D55DED8CAFA19B27B4BA
+        CF198AA6C0EE79F232643B6F71D1E2A1A147C13D65456555575641454B470C6A
+        4CAD2FA0A9B92029BAAF1B950DBDC4AD7F3121D33E021230F4FF004624FF0093
+        A5D2C9CD1FBC6CBFDD65887F0A5A0FAA9722B1573F498A63C8D6BE54CFCD4FB3
+        BBAF74FF002ECFE645DFBD87F10F7FF5B65FF836EEED0C66CADC7B1F3B1760EC
+        3C761FB0E3AC99B134192FE158CC767E7D8191C8A2425A034C2BF191B159116C
+        C07B99A0B5BEB96DBA766B7208562A14E975A10402C01152389A538F426B6171
+        77630FD7C0B1CE1C165562C01492A28C55490748352AB507875B837FC26C7BFB
+        BBBB8FE0CEEFF30DB3D85B9F65772EF6C36E0DC9D83D9BBB69773E4327BA7279
+        1ECD93219468FAFF00771AB4ACADDF32DA4354AE4C6F751707DB90AED8F656E2
+        EEE6747123E1224714A279B4C841FCBA27B96DF62DEB703B6D85A491B5BC1992
+        792320869C705B79411FED81FDB8BECA9C9F780C9EC2F2EC9EA63220C88FD9ED
+        4DE4229E4FEEECEA5A2F274CEBA78B55D807D6DA7D3F5E7DAC48B64F0771D37B
+        774EDE30478EF1FF002F19FE5D153CFCD22E797B56D9B79601E94BA9A8DFA27D
+        6CEAA3CE9DC7CBE7D07BD9755DD7FC2F23254ECCEAB45A8A8610BD2F666F19F4
+        A479D8DB4CC92750C0F24E9ACA315B29B0238E3D89B97BF72D5156F6EAABEB0C
+        638A7FCD73418AF54DC65E67FDDF77E26DBB7D0C86845CCC69FAA3041B41520E
+        2A280F1A7974E785ACEFE5DCE5E3D8DB05E961A1C196A793B3B79451A46B91CD
+        B93E57EA23008A4466E0292ACA4F370056F472C9B170DB84A2562F910C44D74A
+        FA5C57D3CFF674B629B9A3F78CE46D7624F831E3EAA618D52D33F47E79C5314A
+        D4D681454192EED141D740EC9EA76299698A15ED4DE4AB3B9DA9BA94AA86E992
+        D0008C5AEDAEFA74D8160407E48F65F1373FF1DBAF8057F423C7EA47FF002F19
+        F4F2F5F2A745D6D3F338B6E5B036BDBC8129A7F8D4C2A7C09F88FA3EDC54FE2E
+        14F3A8CDB9325DE276F76209365752A2BE36BFD6BDA7BCDCD3A7F76A9D49910F
+        4D20A970417B2141A485FA827DD6D63D93EA76DA5EDDD750FF00408F3DE7FE5E
+        31E9E7EBF2EAFB9CFCD476DE650FB66DC10C4F5A5D4C4A8F00571F46351F3E2B
+        E9F3E95B5199EF082AC5449B27A820A18686B2499A7EDBDE29246125A6733354
+        1E985A68E9A1855B5EA17B9041001F68845B1786C3EBAEF5547FA0474E07CBEA
+        2BFCFA3A33F367D4211B4EDBA74363EAE7AF15CD7E8A941E6295248C8A107E7E
+        9FCF53F9B46F0F979B9E97E17F4E3E25BA7FADBB03387776476167F2FB9A83B8
+        FB2FFBCB968F1D0626AA6DB5B7EB325B676DC95BE0A48D699D6BAB8B4EA4A884
+        04FB935A35D13672C8D0E8415650A6A1541C0771C47AFF00B2B36087718B6E55
+        DCEDE18EE7C695A88ECEB4791D81AB4719AD1BF87E7E741B087F23CFE5AFDB5F
+        00BE3BEFDDD7BD7AEBAE9BBFFBBF6760B3FBD1F726FCDC389CFF005FED7A8C66
+        66BB03D7D53458EEB0CFC34D5947E55A8CA431563DEB078D9AF128559676FB58
+        4DBE59EE6E166694D42C48C30568013329FCCAF9F0C64A777BDE606937EB6B4B
+        0B36B34B61467B8951BB924A92AB6D203C0603F01C738BE6A8CA7781CAED92DB
+        1BA9C158727E81DAFBC58C8C68610343FF00A1602354E49D40922C05BDD922D9
+        3C1BAA5F5DF15FF408F19FF9E8CF55927E6AFABDACFEEADBB01E83EAE6CF68F3
+        FA2C53EC35F974D98FC9778FF00C82C3B27A9749DD7B85BC9376A6F3D2AA77C6
+        41E588C71F4CEA69106A8D583056601C80A74FB7A48F64FA98CB5EDDD7C14E10
+        47FEFA1435FA8FCE9F957CFA4D6F3F357EEFB809B66DD4FAB9B26EA6FF009497
+        245059FDA01AFA353F0F53A0CA7777F7B77091B1BAA3C876C6D5531B76B6F0D3
+        1A8C9EF529219074C7EE090B11A42A95D17B9D402B6D16CBF476DFE3D754F164
+        FF00408FF862FF00978FF557E597A39F9A7F7C6E246D5B7EBFA582A3EAE6A01A
+        EE686BF459AE6A28294E26B874C756767D466F60C5BCB6CF5FE271EB93AA2F5B
+        B5F7C6E3DC3552570D9BB8D522871997EBBDB11C547282EC646AB6740A17436A
+        255A9136B583713677370D268187891053C54E2CB33E7FDAD0FA8E9E4977E7BD
+        E5D5DCECACE3804CDDD14F2C84B7D34F4A23DBC54539352E48C0A1AD4015B7FF
+        00E2E7BEFF00F16070FF00FBFDB0BEC93A18F9FE7D7FFFD0DA8D7FECB9FA37FE
+        D67D85FF00BE9F7F7BF75EE8ED60B1FDBEF86C1BE1F76F5A5350C993AC315365
+        3AEB7556D5D2630CF963A0D752769D0415F918E10AA58D3D3C4E4B3694F48F62
+        0B8936813DC09AD2E4B8419599002D45F23012057E6C47CFA036DD0F339B1DBC
+        DAEE3B7884C8D40F6D31654AC9F896ED43B018F8514E4E303A6FA8C777201D9A
+        63DE3D5CD2253A1412F59EEE58EA1FFBA54AC16731F6EB3D347AFD24A791B4FA
+        BEBC7B7124D9EBB556CEEA95FF007F478FD43FF2EF9FCE9E9D26920E671FD68D
+        3B9EDE5828AD6D6601BFC5D7D2F3B4797E2F5F974D5D95D59BC3B56864EB8ECA
+        ADE97DEBB1F786D3DD187DD5B673FD49BA6BB0F99C74D53B65A6C75663E5EDF3
+        0D651543ADDB5952A516C0DCD9849766FA4B9A595D53C44FF478FD1FFE5DFA30
+        960E6AFDE7B783BAEDFABC19B3F4936330E29F5B9AFAD4529C0D71ADCFCA4FF8
+        4BD7C79ED1C4E737FF004B769E27E36EE139CAF85B6FE2B6AEE5CDF53C54F0EE
+        EA9C5355C945BAFB1F3DB8B08131C048C94D5C2951D02AC6ABA9D935FBECB009
+        5C24B0C690EB2EF2A15148C39AFE9A5071CEAF9D3CBAB5B5FEF763612EE3BD6E
+        9626CA39DC391149085413B47ACC8D712001568D42A06285BF17597F957F5EEF
+        0FE4C9D77F2236A77477AF43EEAD9FBF3B0B0FBA36F643050EEE10474F80C3D7
+        60EAB312546E29B69BD0D4E7697ED09A514954B17DB7F9F70C2D8E3CD9F782E5
+        6D8C358EDF1B5C5D6A3A082496341511C0A86592B41420AFFA53D6357B89F7B0
+        E55E57DCFC0D8268AE6565D198A592498A1623E9E189C4AE06A6E284B6080071
+        13BB13FE146DF13F6AE5E9E183B0D737538396A22A46DB5806CA5353BBC2D453
+        0122515624DFB0C57D6CF6FAFD79F6075F793DD2BE321DAF936F3E9A400EA75B
+        684115A8A099BC41F9A8EA35FF008203DEBDDE6B59F64F6CB72FA68C5637956C
+        ED968CBA70B7120972BFC69F3E3D70D97FF0A33F89FBF65183C97628C34590A8
+        4046E2DBFF00C221699EAD2A45EA5B1F48503D42836D607E3E9EF69EF37BA5B6
+        4C27DC7936F3C1519645B699400299585B59C7A29EBD37DE03DEBB04963DFF00
+        DB3DCBE80F733C4B6770A287513A6DE43371CF6A9EAD67A97E7561BB8AB62CF6
+        D4EC9EAB8F6EE568282963CA536CFCE6EAF0BC13D5CB1CB58F8FECEC378A9C8A
+        E6B94818A9173C7D242E4DFBC2F256F68961BD5A4F15DABF71593C3D0580C490
+        49034A9C066A7EC1D0E791FEF57B4F34EE8F0DE6E36763295447125ACE648882
+        C478D0B5CC52C7F19A9D04FF00440CF46A3114BDBF5588EB1A9877BF54CA9539
+        3774929BADB76CD4CA1B68EEB732D2CBFE9741AA460348D5A0598B5EEA01C904
+        BBD82E46E1716D05C496CF1065659E22194C91D0822022878D413D6476DFFD61
+        B9B0E55B8B7DE36D782492AA56DA565CDBCE6A185E77822A07C3C6B5C50FB792
+        F6CE2768F69E4F31BF7A8683198DC365AB2A6B6B3AEF7550D1C58FA6DA94F3D4
+        54E4EB2A7B7C418E8E10AFADC6A4489439E6E05ADA5D945C6DA7E92E8770A933
+        478EF3FF002EF9F5CD3D3E7D29DCADF9A9B6EE6456DCB6F23C371416B3D58780
+        BFF2F87493C301BC8F1341A627F3A7FE7E5BCFB1C6F1F87DF0FF00B1B6DE6B62
+        574557B63B3FBD7626D5CE6D8ABDDB1CD20A7C96CDEBCAEAADF3B9E49B6E5585
+        F155E4A24864AB178E9DBC4CCEE4F71258B2816B6F321AE7548AE0FD948929FB
+        4F42DB18377495DF71BCB69574D17C3824888CE6BAAE260780F21F6F4237F22E
+        FE4ABD81B1075D7CFEF91B8ADB38ADCEB9FA7AEE84EA4EC1DA398CF361B8AB95
+        3B677662E9B74ED796877351BD2BFF0001A0A9F28A790FDECAA932D298CC369B
+        2B5B89EE22BD8E4A88B50D2EAA73A695AC6F50750F4A7CFA4BB9CFBA4B15AB6C
+        D776CB59CAB9962790514B06D3A268A8415232483C31E7B6ED35777065ABFB22
+        1FEF475842F16D6A39D3575C6ED6152AB8FCBA78E60BDB2A699448E06A4F21D2
+        DF4B8173CB9B2DA2CE0DA64F02E981988FED6314CA9FF7C67F3A74199A3E662D
+        CC44EE7B7D7E996BFE2B36468931FEE676FDBDDC6B4C50AEA7C6F747F16DA81F
+        7A7561D54B94F332F586EED514E28298A8814F6FE996263AC3172AC06922E6E3
+        D92AC9B2F83774B2BAE2BFE8D1F0A9E3FE2F8F2F5E973C1CD5F57B4EADD36EA9
+        57CFD2CD83A0701F59DC0E78D298343C0365063BBA7FBBD9068378F5512377E7
+        D4473759EF1F1B4037D5724F2B4B1F6E7916A1A3D722A052824B2162B76F6F49
+        26CBF53186B3BAFEC532268F8F842829F4FC38027F3A79749A0839AFF77CE63D
+        CF6E3FE392E0DACFC3EA9AA6A2F38F1205295A296A77753451F6E53EEBDC4F2E
+        F9EAD842ED6DA87CF3F59EE94472D93DF1A63743DC0AB1AA69BEA0CCCFAC8B0D
+        20B501DAE4B4B554DBEE98F8D2604C84FC317FCBBFFC57AE70A120E681BC6E3F
+        EED76FD5F4B067E926A1EFB9A0A7D6E299CD4D6BC053BA3D266378D265F6049B
+        C777EC2CBD28C8D47DCD16D3D8FBA30B2C75CDB377169969B2B94DF5B9229A8A
+        362CBE37A5591C303A94A9565276F8A4877116761708DA450C92C6D8F1138AAC
+        6841F986207A1EAC837B4BBE5D6DCEFACE48BC56AAC304B190DF4D37077B892A
+        A32285013506A294208EDDCAD03D56FF00AB5A853045DFB85964215F5A23F7AE
+        14AB345A7CB66BF1C7B216B1BB59520684891B870A1A0A9CD69C3E7D0CB5AE4D
+        715EBFFFD1DA8D7FECB9FA37FED67D85FF00BE9F7F7BF75EE8EC60313DBF361F
+        0CF89DFDD75418F391AE928E96BFA9F71E56B5287CF9531D1D657C1DC98A827A
+        858480D3C74D08665B8894358082E65DA04F3896C2E1A4D22A44E8A2B45C81F4
+        EC40AF9127ED3D01B6DB6E657B1B036DBCD9243E23150D6723B69AC9DACC2F50
+        134E2CAAB539A018E9B66C477313D943FD21759A930C62461D3FB9DB47FBF529
+        06A855BBBC062179B3920B7F87B7566D9FFDD5FF00BAFB9E38FF00184FF7E1E3
+        FE2DFE0E93C96DCCC7FAD03F7CD883A46AFF001397FE51D7E1FF001EC63D7567
+        E58E9F6AF11DD3FDE6C16AEC1EB0D7FC1F71016E9EDD5E33FE51B7B5137EF02E
+        A411C006D626F7E3DA749766FA4B8A6DF754D69FF1213D1FFE5DBA309ADB9A7F
+        79D8577AB0D7E0CDFF0010E5A7186B5FF1EAD78533EB5AE294A5F3D3E7B663A6
+        F66F61EDACE6E9DBF98C56C8CEEE58AAA5DB1B7ABB6B26E1CFFF0019C8D57F0D
+        9E9AB7776EF92A693175926842B346AF2216642555BDE08FBFFEF149CC1CD2FE
+        DF7236B58A275824264127893A2A890B1548E91404692BF8A4539A15039A3F78
+        2F7FB99F7FE64BCF66B94B7086668B70960768A368D659C4ACD2B483C694982D
+        98D000CBAE4146A9D07A209F15FF0093476E7F301ABA4F921F3FFB2EBF01B7B2
+        D4986DDBB07E29C78FDC5263A9F6AEE13919F0159DAD5D80DEBB23378EC957D2
+        D02D41C451D4453C31488B513C737969D263F6B3D8FD8F9476CB2DE7996CA6B9
+        DDEE96ACE5C24AC46926AED1C8553BBB6340B4F5CD3AC8DF65FEEDFB7F2A58A5
+        F5CCD149CDB2411493DCDC42D34B2789AC85AACD0189574922342000D4C64757
+        F1D4FF00053ABBE3EA75DE0FA73ABFE24EC0A7816B97EEF6F7C5A34996C84B1E
+        DE9BFCAB319C9BB7EAF3D93A96B16D73D5CD26A3CB9FCE41DAD9F2B5B417E2DB
+        62951469E134751DE381FA6AFE67AC878762DDACA7D812D6F36C4AEBC8B19013
+        FA472FFE3C493F98A1EA1FC8CF843D6BDCFD77BA20EE0EAFF895D8F03D73B2D4
+        E6FE2D68CFD1A4D99829E518DDCB4FDBA3398E9911DC09E9EA2294A9FA83CFB5
+        16DB6F2A6EB7F6D6B77B1CA51D686B3467F0120FFB8C083C381C75BDDB64DE27
+        DB2F1AE6FB6C93F54E7E81C30AC805037D69A0E39E34EB5F1F913FCA13B8BE0D
+        D76E8F929FCBFB7EE432FB5768D345BB7B03E29FD96E596826DAA25C84B99ABE
+        ADC867B78EF4CE646BF154942F3FF0AAC9A49E7895C53CEF2F8E9DA0AF78BEEF
+        DCBFCC3B54BBD72CC335BEF502B9472CAD282A0376BAC71EA53E71B86AD307C8
+        E3BFBC5F770DBB9CEC371DC6CDE2879AED61F120B8B789A2952BAFB6AD2CCD2A
+        1D03546E48614E34A746E7A2BF9AEAED3F8E31F7254D4D464F646C7C2E677E64
+        F0549B3E6DF9B8A8EAA836C6669AAF1385C547BE7612C34F533644CB33BD6324
+        0B19915082E1A04F617DE49397B9864F6EB9E16478A77104656411F87397568D
+        94BA49FA53E9D3A69DAEC287E2AE3B7DDD7DFAE66D8B9CB68F6879BB738206FA
+        F3146F346D224771247247118C09A1221BA67029AC84948A7E3AEB63F34BF9BD
+        7F306FE6C9B9EBFE3EF51E0331B6FAC373D7934DD35D3584CCC59ADE74705345
+        48955D93988B3595AAABC62C310927A692AA3C440C49935850E337CA8BB9A28A
+        C6DA4A70552C1D8924F1215479D3E11D752A149AC6DAEAE371BB899F2EECA863
+        401540345324840016A6AEC6B5F90EAF4FF94E7FC27A60F8E99DD9DF21BE54EE
+        BEABDD7DDF474EB98DB1D439ED8B98DF9B0FAD32893524D4194CA6528F7F6D0C
+        6EE6DE38F37B218AA71D4B21063692450FED6C160B14523DE6DD3BE45344A894
+        19E20C5213F6E3A66F8EED24D12EDBB85B44BA4D44903CB53514A15B9869F651
+        BEDEB6539703DC726CDA309D81D6A129F7666A6555E9FDCBA9BC7B8F3E26407F
+        D35948A231B369214B2802F7E7D9E59DCECE9BA106C2E7BA151FEE427FBED29F
+        F11B8D69D05AC6D7998D8DBE9DE6C828BB9BFE21C9527C59AB53F5BC0E694150
+        282A724A0A9E3EDBC764B7ECE37CF5DDDB6C431496EA8DC6E02BE37306311AFF
+        00A658C963228B962547F4F622B98F6ABAB6DBA216571FDB547EBA7F12D7FE23
+        FA7A53EDE9A9E0E630FBFF00FBB7B207E996BFE2921C689380FADE3F6923863A
+        51D7647BD67CBEDC90F6275D42561C8E88A9FA9770A4573470DC92DDC5248000
+        0D81663CFD6DF5490D872E25BDCAFEEBB86CAD499D49E3FF003CE07F2E974B1F
+        329BADB49DE2CAA03D2969253E11C7FC77A7DDA3FE9A72BB6B291FFA42EB3865
+        A6DD59A691DFA7B72CF24892EF4AF924E13BB29A01E4915D059414520F2DF528
+        DD60D96D2F6065DBEE4C6D0AD3FC61314897FE5DC9E143C727A62DA0E677DBEE
+        026F562A3EAA5FF887213FEE4B13FF001340A1351C2A079939E9BEB76B77E653
+        7B6E491F7875E315DBBB6963BF586723823A6FE27BC56068617EE9D619B4B17B
+        B1BF1F9BDD7DB6E1CB16BB6D9A0B6B8A991EBFAC2A4E98AB53F4DFB3A796D799
+        9F77BFFF0076D65E27D34153F492529AEE2941F5B5AD6B5C9F2C0A1AE67DB9BB
+        7095FB23FBD5BF3686E402BEA50D1EDCEBFCB6DAAD6AFF00EE8E7F44F2D6D5F6
+        3EEBA3829574BEB8453F909652AE0290DE86F92EFEB8DAED92C5169E2F2871A7
+        C44E00431927D0D69EA3D2C2DF7986EF603B86E76D341E2B623B7789EBF4D350
+        963752AD3D404E27040192E78191D2BF7CAAB10B2F77625241FEA90775E16500
+        FF00ACF183FEC3DB6555B41232323F653FC04F42AF3EBFFFD2DA8D7FECB9FA37
+        FED67D85FF00BE9F7F7BF75EE8EB60B66EF7ACC3E12A283B877562209F275B39
+        C7C1B5FAE2AE9A9A89A7CB4871F452D7ED19EB6208BA5166965A8934A9D5A8B1
+        204171796493DC2C9B444EC14675CC09345C9A4807CE8001E94A7404DBB6BDDE
+        5B1B0920E67B8891A463A4456AC156B21D2A5A12C3D033339A56A0D70DF3ECAD
+        F5FF00192FC7DCFBBD5E3823F1349B57AC2552FF00DD3A43AAA93FB931FDCA79
+        39D20C5E8F4DFF00B5EDD5BCB1FF007555D9E2A13FC737FBF0F0FD4C7F3CFECE
+        93C9B56ED5E67D3CD375A954718AD486FF001753DC3C015F4A295C62B5CF4F75
+        7B237C2EE5C0AB7756F223F836E2323B6D8EAED7A927DBB6647FEE305890DD8B
+        2956D5E9E469F53097B646D6E69B343FDA27E39BD1FF00E19D184DB46EE373B0
+        53CD7755F066CF85695E30F0FF0017A007CEA09C0A119AE9FDD7BB06ABE57F7F
+        FC79DBDBC6BA5A9C0EE0ED6FEF56EA966868EB62C84982FBFDDF51055D257C13
+        E3AAD327558AF13C72C5244E25219181D27927F771B6B7DF3DFBDA6CB7902679
+        EEA595839347F0D25BA75AD6BDE528686A41A56B9EB853F76187F7E7DE2F6EDB
+        777BB2D7F797B23976A3357F52E6523582A4B9535A820D4541E076BAD89B437A
+        1DE1BB28E1EE2DDD48F26036F3432C7B6BAD1C8923973AAA2559365324A91F93
+        52A8096008B9BF1D91DF6E6CBF77584A76784812B8A6B9B810BC3F53E5F3F2C7
+        5DCEB5DAB756DCF728D39A2E95FC1873E15A9F39695060A103CA943C6A78516B
+        51B277D8C9EC013774EEF96475C889E44DA9D5F0032FF7726264A5886C991691
+        1A504E8265B21D37FED7B0F25ED8F83B8E9D9A103B69DF31FC638FEA67F9673F
+        2EA8FB4EEFF53CBDAB9A6E4B307C886D053F44FC23C0341F23AB18AD73D42DDD
+        B137E3ECCDCAB3774EEDA8F2564CB4F19DA7D61144907F18A748E19D5365EBA8
+        941562D2868CB335F48B58BFB76E1629B95930D9A214A13FA937F0F97EA607CB
+        3F6F5EDC369DE06D97ACFCD572C3C5C0F06D40A78A06690549E24905413F8470
+        E91982D9FBC7FBE455BB7B760A77A0C3C250EDAEB4790BD556E6E125E4976549
+        1BC623202A18FD2496B9B8004BB85DD9B6D7253688B5558FC7379043FEFCAFF3
+        F974A22DAF743B94EBFD67B903C18F3E15AD72D2F998294F41A6B524D4F01A9D
+        F7774B50FC76EDAF937D5B452FDF6C4ABDCE3214D4FF006F478FA36A0EC4DB98
+        CDD191C6D3D063A1871D414B4E772CB4EB0431AC50A20455005BDF173EF0B141
+        B4FBEBBB5A6CE042F05E248AA849D1A825C22D78F66AA0A9A8038F5C27FBCAC2
+        DB1FDE0A5B0DAAF08DCAD67B7935AD14EA648AEA3345A0050BE00E1420757F9F
+        1DBF97FF00477C3BEBFDFBB4BA1A69BAEB1670B5D1D56568367F5FE4F74E70C5
+        B7E19A25DD3BAF29B56BB7167C3D5BBB9F2542A00C15556DABDF6A2DDECAD4ED
+        EB61B1C1E2975A92F2D4F79A9AF88334A71AFAFCBAEE66EB61BBC9B7F30349CC
+        D7055627A2F856F4A7820E93FA553524E415C1A71EE2799F60D73656275EF5DF
+        11D01A4A80D4A767F5DBD479BCF4C525190FEE4FA6248C9531F8096241D434D8
+        968DCAE05BB03CBB6E66A8CF8B2D2943F87C5E3F3D5F97468769DCBEA140E6AB
+        AF0F49C7836B5AD453BBC0E14E234E4D0D452872E0F62EF1ABD9B8F8683BB376
+        B44DB8771C218ED7EB39E39218B3BB8CB46A1B6609A09E58D42993531537212C
+        4282F9EFEDA2DD5E4B8D8E212688C91AE61C553FE19423FC3EBE7D16586D3BBB
+        58DB18F9A6E17FC6A5047836A4504B3569FA350C40E249009274D28005B36CFD
+        DE6BF7B23F6D6EAB0C2E34866DB9D70DC350E5C113AFF73D44F10600E9F41B5C
+        5F9B8171BCB5105932ED51575B7E39BD5787EA71FDBF674C5C6D9B986DFBFE44
+        973516EBFE856D9EC930DFA191F66934A8AF9814B78F5EEF289F69CBFE98375C
+        9E14AF8E4FF7EAF5844D67A08155A17876547E04122F2A4480836E2D7217D977
+        4B4692F50ED3151803FDA4E721BCEB2671E78E8C27DA7775B9DAF5734DCB02AF
+        FE856B50748E14831E75043796453294D8FB4B7C1A3C9C74FDC9BAE91A5CFE76
+        DFEFD6EB5A88D920DEF525E368A5D9DCCB2D387FDCD434C87585B0D1ECCF7CB9
+        B122166D9E26D289F8E61C62FF009A9E4698F4C57CFA4B6DB5EEE6CA7F0F99EE
+        14FD4C9FE836A4505C3038F06B523CEB40D9D34EDEA767305BFDB7B6E6A01DC9
+        BC560836EED84046DEEB659263F7FBC09FB868B65469342AC7D29A45B9B9371A
+        69B71DB576CB39CECB0991A490FC536311F0FD4C1F53D3E36CDD86EDB827F59E
+        EB50B6833E15AD4F7DC60D20A5079500393527147AC2ED1A9DBD3EC0CCEE3ECB
+        CBEF4924ABAB8A7C4E430DB2F1D466B25D9BB8996A20A6C160683234F3432A69
+        556A8789439B8365609AEAFE6BB9371B5B3DAD6DE3005183484D04A9C5998A90
+        47A004FF002E9D4B0BDB5BBE5E9AEF7C96E54CAC0AB47022D4DB4C75011C6AC2
+        845002E450E6B83D164C1FFC5C77AFFE271C57FEFE8C47B73CBA1579F5FFD3DA
+        8D7FECB9FA37FED67D85FF00BE9F7F7BF75EE8EC607636EAADC461AA69BB97B1
+        31104D91AFA9871D8FC4F52CB4949134F9575C7C52653AC3255F2D1468DA0196
+        779C8504CA4DC9105CDF5AA4F3AB6CF6EEC14024B4F53F0E7B66515FB001F2E8
+        0DB6ED3B84B6361247CCF7D1219188555B42AB990E905ED598AD31DCC5BCCB57
+        A6C9B616ED27B287FA6CECA5B431072B88E9D0CDFEFD3A4B952DD50CB1B7F4E0
+        807F07DBAB7F69FEEAFF00DD2DB71FE2B8C7EA1FF87F49A4DA3702799C7F5A6F
+        B0A2BD9679FF00175FF974C7A63FC3D227736DCDE559BB71703F74F634904141
+        B8A2835E23A952EB1D4E0559E48E1EB0863792465BDEC348E2DEC4FB6358C1B7
+        CAE365B6F119A327BA7F30F8A9989A0FE7D2B9F6BDC7F78D9A9E67BD27C29725
+        2CFD62F216A067ECEB550F8E5B9ABBA5BE506FCE87DC9595381EC9E84ED6CA53
+        631CAE3D32590C2D264A438FCA63532747598F963CEEDDA88EA21692096268EA
+        012845C7BE3A6EDB16E5ECA7BDBB47312DA6A86CB720C95A85914310632C0821
+        6E2DD8806A38E0D48EB891CD5C99BC7B11EFD6C9CCB0A48B05A6EA0C72285153
+        139564AB2B20F1E125575295AE286A075B47F5962B2FB9771CD9AC2777F60BD0
+        66705B724A7AE8313D4BE509549B8156368A7EB19A28AA69E6B2BAB292AEA411
+        71EFAF10F32EC9CC9CA5B76F7B56DF6B36DF3A9910EA9F8761208135430CAB29
+        CA9041EBB37CAD731F34C637BD939C2F24DBEEAD60749152CEB46F17B4836A42
+        B21A86522AAD5078743054EC1DDC994D82A7BBBB32536C92AC92623A73C971B7
+        A7F5C9E3EA78A391DADCD9556E7803E80A12FED0C3B89FDC96C3E1FC5714F8C7
+        FC3FA377DA371173CBC3FAD37C6A1E954B3A8FD13E96801FCC7ECEB86E3D81BB
+        936BE699BBC3B36556C96B092623A6878FFDCE538F1C6D1F53211082A480DA98
+        5EDA8F1EF76D7F686EE01FB92D81D1FC571FC07FE1FD6B70D9F715DAEF49E6AB
+        F2BE2F02967FEFD1E62D01A79D3FC9D049B8F0797D9794DCB9CCB775F605163F
+        018CA1A8A895B13D4DEA4A5C8E75A25863FF00465A9AA6429A2355275B30005E
+        DECEB79E68D8F64E599F7BDDEC2DA2DBA28DDDD8B4FF00C09803C6EE66345551
+        92D40327A2FDFAE63E56B7DEB7DDE79BEF21DBAD2D55DD8A59F00D2D1547D2E5
+        C9C2819666000E1D6AF3DFF9FC9F7AFCA8EB7F8FDB7F2555B87B2BBE3B3F0941
+        97AB93F859C9E3B6DC534232B9BCB8C5D0E3F170C5B6F686366AAA978E9A1816
+        2A56611AAF1EF8F9B5EC5B97BC9EF36F5CC42CB4C379B8B3B01A8AA076016252
+        4962208405AEA271C6B5EB8BDC99C8BBD7BF1EFBEE9BEC8923C371B8FEA48C14
+        D3510A16AAAA87E9EDD4062AA170700823ADA7B75F5D18B0DBF8277A765C8CD4
+        35A742E2BA965805F6ED38B2CB1F55C6B14371CFA9D8124DED603B1D63BADE34
+        BB76AE5EB5A02325A707E33E5E3E4FE43AED66E7B4DE26DDCC27FACF7AD489F0
+        52D33FA20D316A283CB19F3AF4A0CDF58E66827A69A8FBE7B06AA4686A13ECD7
+        15D41244636929DBCEE62EB3690489A42A9D414827D24F21BB2DE45C09126E5D
+        B74414CEAB819CE333746D26CF7CB3A11CD37BF09C68B3A711FF002EBC7E75FC
+        BA6CEB4D87BC66C2C063EE7EC9A4806EBCAE930E27A89C493C799DC4D306FBAE
+        ACA81A648EC1C2E92030B11616AF31DFD92DC00767B6693C11C5A7E0563A709C
+        79D69D15EDDB46E2F696FA799EF907D5CBC16CF88925AF1B43C7CC7CF14A0E91
+        B96D87BAA0CA761D30EDDEC36783114F19D38AEA9D4C23A3CD200A17AC88520A
+        DEE01F6776FB85ABDB6D529DAADC2B357E29FCCA7FC3BA6AE36ABE5937F0798E
+        F4D2DD6BDB699EC93FE5DB1F97432663AF3796423DB8BFE9A7B2A79A7C7D6CA9
+        0C986E9D8C3CBF614B328902755C4DAC32716641726E2DEC1B69B9595B5C5C13
+        B3DB0457009D57071523FDFE7A309B67DC8DCED75E69BE24ABD3B2CFF847A5A7
+        48BDB1D4FBFE1C7D4563771760D0C51EE9DC21FC58FEA1927B2EF0C84522AEBE
+        AEAB899657041047009D241B1073B96FDB54BFA2BB4C0CE614A66E29FD9A91FE
+        8E0E3FD55E92DB6CDB8B58CE47335EAAFD54BC16D2B8B96AF1B53C48CFDB414C
+        514F5BD43B9723BC770CABDD9D8B0D51DB1B55A599F09D4922CA0E43794683C7
+        1F59C0B1B20887A85EF7E41B7B2DB5E6182D6C2D636D8EDDA2F1A4A0D538A622
+        F3F18D78F0E94A6CDB836EFB829E67BDD42D6035D1675357B9C62D40C538D2B9
+        CD7149586EA9C96DFCE6C1ABCE7666F1DEF00CA54C1FC333B8CD834146F29D9F
+        B8A44AB9E4DB1B37035F25447E222C26485B59D519E2DEB9E631756FB8C76BB5
+        436EDA0772B4AC7FB44C0D72328FD84FA1E9C4DB2EAD6F397A49F7BB9B943330
+        D322DB81FEE34C6A4C5046C48A7AD326A385021DBF8CA0FE35BEEA7ED63337FB
+        30187018DC803FD3A6153D3193E35F4F1C0F617FADBA31087C73E18FF571E3FC
+        FA18E85D55A66BD7FFD4DA8D7FECB9FA37FED67D85FF00BE9F7F7BF75EE8EAE0
+        BAC29F2788C2D69DF3DA340D5392ADAC9A9F17BEF2B4744CAD519599A8529175
+        C34D8FD440090889942285602E0882E37368E79D3E86D580500168949E0A2B5E
+        24FDB5FB3A026DDCBE97163612FEF8DC232F231212E1D569590E90B90ABFE974
+        90060815AB74FD574C4F6584DF9DAD1B2411885E3EC0CD1785BFBA74843A791A
+        4491C39D5FBA245D5C5B4FA7DBABBA37FBABAD8DA904E7F497FDF87F67E54FDB
+        9E9349CBD1D799E9BBEE20A28A1172FF00F28EA6A6B5073FC408F2A531D0759C
+        EAC829378D052BEF4ECDF4516E3D5AB7DE649947DCE09A299D8B990318DAE34B
+        2A9D66E0FA6C30B2DD8CBB69956CADB8C7FE84BE8F51FB7FC1D2A9B97E35DCAC
+        D3F7ADFD3C297FE243D4E62F3AD7F6501F31814A95FE65BFCAEAA3BE769633E5
+        67C5DDE799C3FCD2EB1ACC8515052EE7DC1F738DEE7DB749BBF25152EC1DC75F
+        5890FF000FCB63854B2E1F252BF8954FDBD4931B2CB0411EEDFB5969EE4C5716
+        571B644B70215D2E8A12A1630C0EA070E08ED3820E2A0529147B93EC9F2CFB89
+        CA37F65B9F8D35EBCD228677D4F5FA87542AE6855909055AB5A8A9353ABAAECF
+        89FF00CE1303B3F373F46FCA9A5DF3F1B3BA36AD74785DCFB7B72CD9ED933C59
+        8A22F18792D35090C4EA92267D48E8C1D4B2B02713796F7FF74BD89BBBADBE5B
+        19370E5B04EAA45E36381F1AD88D6AF4A0F160CB7A00075869B34FEF07DDF6E6
+        EB6CBBB4BFDC794D0E67B4F10CAAAB5A7D4DAC6449AD46049086D44D7401C6F7
+        7637CB1F8F5BDE9F6A65A0EEDDE75B16323A83535345DC75354D92FB9C53D12C
+        E51A6A45A79BCCE24611945B9207A7D3EE68DABEF57C917115C43B8DBD8DBDDB
+        8154D28A57BAB94942B01E54624FCEB9EA66D97EF45ED6DEBED8BBC733DE5B5E
+        C20F888F7AC921AA15AF872F84D19AE48C0F2E18EBBEC9F95FF1DB6BEDBCBFDE
+        7786F8A759AAA4AC5ACCBF714B14743025645571D3454F04AEB2C4890681E42D
+        27A892EC6C7DFB71FBD6724D9BAFEECB7B19EE8250205466634A57447AD8E4F0
+        523D31D6F987EF43ED5C3697367B5734DEDDDFBB12A82F4C8F4D4080B1421D9F
+        853CDAA72C4D3AA25F96BFCE2303BD3707FA12F8A743BDFE467736F2AF186DB7
+        B676A4FB8B7AB4996999E283C6B254E49DBEDBEE19DDC10B1C659D995412215E
+        62DF7DD2F7D2E6D36D8ACE5B0E5CAF6D62F04907CE1B603533918F126155F423
+        A86B79B8F77FEF05770EDD65677FB6F294AC3F5AEBC41232F97D3DAC85A42D42
+        C049385D07F0904D2C97F95AFF002A7C9748C3B63E56FCA1DE19BCCFCC0EE5AC
+        C945918B6C6E1FB2C3F506CEC9EDBDCD5326C0DBF90A357972198AD92921397A
+        F86458DDA35A682F4EB23D4E53FB61EDBEDDED86DB77656DB744D7F1C00333A8
+        90A92F196353505DABDCD9AE687CCE657B5DECA72D7B7BB0F2C59ED4D3433B4A
+        C19E3728E418272C59C77333328676D5938A915ADB9EEBE83C6FF04EC39E97B0
+        7B4E009415F2C3149BDB27511D3DB6DD3378A0BBC64C7AC16B4DE63A98F3A6CA
+        26CB1E6DB8136D892EDB68C7500488D413DE727073F653F6E7A93B72E5D8E3DB
+        B989C6EDB81D11B900CEC78420D3E62BFC5A8E69C2802C63F8F9875C8432CFD8
+        1DB32C7F6B521A923DF995868DDFCF4CCB2B8265ABF2C69755D332AE9637526C
+        550BF37DD344CB1EDB66AD519F0949E078701FB41FF39C1E598BEA17FDDC6E3A
+        341C7D43D2B55CFF00154701DD4CE4134220EDDEA4A14C0E1E1837D76B52A26E
+        CCF29FB6EC0CC47E4861DC3B85FC1229D51F8E5550AECAA92B28BEBD44B162EF
+        7895EE67924B3B56630A718978944FF0790E03D298E8A2C39751ECAD48DE7715
+        3F572834B87150259B14C815A0A900379EAA924F75BD55451D576288F7C769A1
+        1B72824465DFF9AD4923633360C8A599BC8DA806B4BE45D43F4D8906A9BAC853
+        6C2D676C7F548FEC9786A4FD9F953AADC72F46B27315377DC7B6D948FF001893
+        8E8978FAFD8D51F2A5417A9FA9E9572BB597FBFBDB05453E4D2453D879B2263F
+        610699253AF5AC885491E328B7637045804EBBB3186ECFD05A56ABFE84B8C9FF
+        00566BD2D939723177B58FDF3B950ABD7FC65F3DA335E23FDA900F9838A36507
+        54D349B7F20EBBFF00B66171BB37010F0F61660308E2DF35E3C0164F245E2922
+        4F1B128642849D5AFD7EDE93756173183616847829C625F38867D7ECF2F9531D
+        27B7E5C46B09D977ADC9585DCBC2E1F80B9714A1A8C8C134D5E75D5DDD3841D5
+        548776EE041BEBB542AED7DAAC9A7B0B3B7477C9EF60CEAE652ECC42AF0C5946
+        91602EDA9B6DD5FE8ED8FD0DAFF6B27FA12FF0C5FEAFF50E9E8F97623BBEE09F
+        BDF71005AC06BF532572F73E75A9E0280D40F2193573C7EC3876CE6B6056AEED
+        DFF9E9864EAA9244DD3BB7219BA7A8326CDDC6CD553D14C23A215A5A2BEB8E38
+        F49660A00247B6A4BF3730EE29F496F1AE807B230A47EAA601E34FB49E9E8F67
+        5B0BDE5D9FF79DECCE66607C699A406B6D39D454D143638AAAD334001A7404ED
+        FF00F8B9EFBFFC581C3FFEFF006C2FB24E867E7F9F5FFFD5DA8D7FECB9FA37FE
+        D67D85FF00BE9F7F7BF75EE8EBE07AAB0D94C3E16B66DC9D9B4F24D91AEAF30E
+        37B477F62E8E095E7CAC9A21A2A0CFD3D347440C85569F4F802D868F4AD84173
+        BA4D14F3A0B6B620281986224E17892A4D7E7C7E7C7A02EDDCBB6B73636133DF
+        5FAB348CD44BBB84506B21C2AC8001E5A69A69E5C3A6D9FA970AE7B294EE6ED2
+        20C11290BDAFD868D28FEE9D2291AA3DC4922311C5E32AD7E41BF3EDD4DD661F
+        BAFF00C5AD78FF00BE22C7EA1FE87F87A4D272E5A93CCE0DFEE14551FF0012EE
+        73FE2EBC69254F5D6E2E89C26437260A4A7DD3D991D4AE1F3E8679FB3B7ECEAE
+        AB3EDF091CACD9E6F55870C433707FC7DAADBB99AE2D6D6E51ED2D8C5E226043
+        10A61EB4EDFE58E8C26E5AB5FDE362A2FEFF00FB29726EEE09E3162A64FF0055
+        3A4962BE3DE30E191EBF75F63789377CEC60A6ECEEC0D5295DFB28D4D2B67227
+        58CFEB23D484716D3C7B35B8E6F7F18ADBD95BEB307130C38FD1F4D27ECF2E91
+        47CB56C6C016BDBEA7D5914FAAB81FF1288AFF0069F9FA7CA98E807EFCFE565F
+        0ABE5A6E1CF52FC87EAEABED0A8A1C36063C467B706EDDD0DBA307154CF9E2F0
+        6177453E4E0CEE3A9D4C6A7C51D408DC81AD5B81EC23BDDCDBEF9B6DA45B96D3
+        66E41701842AB26027E34D2C3F234F97553C99B35F6EDB825E1B9974430905E7
+        95C8A996B9663E83AAD1CDFF00C261FF0097E2E6B6E2ED1ECDF991D6B419A92B
+        8D462364F74ED78E868D61C64B5D1C548DB9FABB73641156640BFBB3C8C578BD
+        F9F71C5CFB67CA7B82DDCD7363A99294A88DB8B533AD18F0F9F418DC7DA4E4AD
+        C6E76A17DB62CBF51AB56B485C8A465850BC4C78FAD71D70A8FF0084C37F2FEC
+        6E3AB32FB97B3FE64F64A52D624630FBEFBA36ACD8B9E21948E9744E36C7566D
+        7C9159216B9295286E6E08F7BDB3DB3E52B5BB884363A548AF688D3F0D78A229
+        E3F3EB4BED1F25ECD673DE6DBB688A647A0D090A63585FC1129E1F3E3D58F748
+        FF002BEF883F127315747F19FA8AB3AD26ACDB98AA6CAE7B6D6E8DE0FB9F2E0E
+        4332645CCEE7A8CC54E66B11FC69E879FC62C0050000255E586DAF65DB996DAC
+        2CE37F11BB9A28D9C8D298D6E19C8AD715A7CBA165B7266D165B8DC2D97D547F
+        A319AA4F32D6AD256BA5C0FC23CBA1C701D1E638FAD65399ECA8224CE5F53F69
+        EF7591123DB7B96462186E17A82CC8845DEF7BFF005B1029BEE648197778C25B
+        3318BCA08FCDD07F0538F49ADB97A03072F1FACBE01A523FDCAB8C7E84E71FA9
+        8E1D095B93A8B08BB7BB108DCDDA8C64C7641D95FB67B164595BFBB54C96556D
+        C67C484201A62D0B7B9B6A2490ADAEEF39B9DB3FC5AD70C3FD021C779FE87F87
+        A7B73E5BB54DB798DC5FEE24889CE6F2E483FA038832FE54141F9F4B17EA0C23
+        57C551FDEAED7D4B4B5310D3DB7D8A29C2BCF4B2106986E214AD2929E9764322
+        A8214852C0A21BBCFE1B2FD2DA52A3FD021AF03E7A2BFCE9FCBA396E58B43708
+        FF00BC772AE86FF899754E2B8A78B4FCC8AF9034AF48EC0F51E125C2E295B73F
+        6A284DD99F71E2ED9EC688868B706E1757768F71AB48AE7F523968DC1B1522C3
+        DAEB8DDA713CD4B6B5FEC53FD0213C513FA1FE0C8E89F6FE5AB37B3B526FF701
+        FE37370BCB91C259B389471F3AE0D4D475C6BFA9F0DF73D86BFDE6ED16076DD0
+        73FE95BB0AEF7C666D0A02BB8414E3FD4693737BDEDEFD1EEB368DB4FD35AFF6
+        A7FD022FE24FE8755B9E5CB50FCC5FE3FB81A5B2FF00C4BB9CF64B83FA9C3A7A
+        9FA8B08B95DB16DD1DAADA20C9A063DB3D86DA4350403D60EE2D1239D02CCE19
+        87363726EC2EEF3986EBFC56D78AFF00A045EA7FA1FE0E96C9CB5682EB6BFF00
+        761B8FC2FF00F132E71DA3FE1BFE1A9E9B283A8B09360321AB73F6A807766E07
+        D1176D76343CC5BE2BD94868771A4BA18A02CB7D0E09520A12BEDD93769D6E63
+        A5B5AFF629C6084F1887AA7ECF31F6F49ADF96AD1F6FB826FF0071A7D5CD8179
+        72385CBE71283F339A1F30454753E0EA5C29DDDB817FBD1DA5FF001EBED5F58E
+        D5EC00CD7C9EF61A2E3700034FE0A80C2FF5FA59B6DDA6FA3B63F4B6BFDAC9FE
+        8117F0C5FD1E9F8F96ED0EEFB8A7EF0DC3FDC580D7EAEE2A6AF73827C4E0298F
+        4A9E9CE83AFB1BB5737B06AE8F39BF322F164EAE88536E6DFF00BC374D2AC6DB
+        3771DE4929B70663211CD589E2004D206945DBD576376A4DC25BA87714782050
+        501AA451A1FED13CD1463E431D3D1ECB6FB75EF2ECB15D5E39F19974CB713CCA
+        07D34FE52BB64529A8D5B8E73D00FB7FFE2E7BEFFF0016070FFF00BFDB0BEC97
+        A1979FE7D7FFD6DA8D7FECB9FA37FED67D85FF00BE9F7F7BF75EE8E9E0BA67AE
+        B3188C36472182AC9AB2AB235D90A99A3DCBBAE944B53254656677962A3CE410
+        BC2F2C8498994C37B7A385B086E379DC619A78E39D4205007646683B785549AF
+        CF8FCFA026DBCAFB25D58D8CF35A3995E4666225996A6B21C85900A57F0D34F0
+        C60754F9FCEBFE69756FF2A5F869DADDF185D8347BBBB7B7C6F4DB3D3BD0FB5B
+        3DB9F79FF77EA3B0B736CC9F26F9FDC31516756B5F6E6CCDB383C865278616A7
+        35D514D0D17DC533D5AD4475977ADCBC2B10B70356963F027939FE8FD9D5AD39
+        4F6292F77B47B36D1AD00FD59B00C295A7EA7CFAD2A7E2EEC8FF00851C7F35AD
+        83BE7E5374F7CCEEF5DB9B471B97DC38DC4D2E2FE41F667406137A6530AB473E
+        7F17D6FB1FA6B1F8CD95478FC4D455C1486AAB62C5638D487852A1E4A7AA1090
+        DC6E3223C9D93494A162B4216B5A56AC334A9A28269E591515C763B7C462856D
+        E20C54E904024814AE4827CC5493D5E57FC27FBB37F9C6663B426E88FE64BD07
+        DEBBDBE3A6631F5B93DB3DEDDDF26476B76875A6F6C365B1793A5C5E6339599F
+        C36F7EC0D97BAA38AAE9A45ADA6C8D55356CB0BAD4A51ACD115761BFBACCD1DA
+        5EEA3A1AB550C07691C594814F4AFD9D156EBCB9B45DC48F359807C58FE1674F
+        F455A8A232D6B9AD78F9F56AD90FE795FC85303BBBBA31795F9654D4F94EB1C4
+        4B0EECC154F5DFCB8C5E412BF68EE7A8D9F9CC3EDA932BD7D8DA1DD59E19FCFD
+        3C51536227AAA89A11255A83494D3D44262DBF6E260B7559C6B0CC7E08F35D34
+        FC3F23D218F9336517D7D2BD9B7D3BC7185FD59AB55F1357092A3E219C7F2E84
+        CDD1FCD5FF009396CFF8BDD1DF353717C81A7C2742F63D7EF5C075F57E5717DF
+        91EFCDF99FD9B4753B7B7661B6F75A55631BB133F26DBDC318A2AFC90A097154
+        D54C865AD0B224AD65DFF702978A6E175B52802478EED5E4B418FB07974D3F26
+        6D1E3ED2459B148C36B3E2CC6B58F48A932127BBCC927CFD7A2F9D6FFCFB3F90
+        FF0077EE5A4EAADABF23723B5F756F4CBC50602BFB3B6BFC83D81B4AA3295398
+        A36A5C5D4EF6DD1434DB676BFDC443F69ABAAE8680152824577447B41BF6E2B3
+        C4F24CA230B4F823FE123345CE7CCE7D7AD5EF25ECED61751C566E6667A8FD69
+        8E3583415930028C01403C874797E6B7F301FE54FF00CB9BB1B6BED1F997DC95
+        1D3DB97B1B6643B8F656297687C99EC48F2D85C566F2B4592C879BAAB69EF9C4
+        E31E3ACA98D34D53D3D448B62AAC82E19FDFBB8B4091ADC2EA0C49EC8F810A06
+        74FC8F4A979436417B34A6C9BC231201FAB352A1A4271E253815CD3A2978EFE7
+        61FC8BCF79ECBF8D51FCAAC0C9BE31BBE65D995BB9BED7BD4F519DCC68F3FB6D
+        318DDCB363C75E55E39F2F59105CC7F119302C0AC82B481A83CFCC1B8335E389
+        86975C7E9C7FC4A7869C601E9141C93B48836857B36D71392FFAB3647852AFFB
+        F33DCCBFEA1D6BD5FF000AB6F97DF29BE1CFCDCE9BEB7F8B3F227B9FA2F616E6
+        F8E18BDCF9EDB1D79D93BB70D88CD676AF7B6EEC5CD97ADA75CAC8B355498DC7
+        C3016B81A221C5EE4963EE179732869673A940A528BE64FE1A67E7D1FDA6C7B5
+        5AADCC315929899B21897E28A29572C40F9034AD4D2A4F5B14D07F3CCFE44D90
+        EFBC1F433FCABC157EFF00AECD45B066DDD4343DE83A55B78D657414269FFD2B
+        C78F8BAB67C4CF94802479E8AB24C188E50EB5E206760FC7BDEEA2DD54CC00C1
+        CA475E07CCAEAF3E1FB7A4AFCA3B0BDC78C6CDB811FDB4C054906BA449A6B8C1
+        A547004027A16339FCCC3F94375D7CA3C37C0CDFFDED59B67E55CBDCB81EB6A7
+        EAFC96C5F95D4C93EF4EC8CDC751D7F841D810EC93D6D351EE34DDD8D30553E6
+        9B18C95281E50A0E95936FF7E649644B85D06351F046721541FC38E073D15D97
+        26ECE6D60592D1F5ADC48C6934C3B7C490A834932284541C7A8C752BE67FF31D
+        FE549F043BA725F1FF00E4AF74BEC1EE6DEDB176A6E2DB7B0719B3BE50F66652
+        A313B8EA3746DDC24DF71D43B377D6331B95CB6571D2470D0CB514F9175F1CDE
+        2F1CB048EF5BEFB7045AFD45DE954625888E33E6A73DBE80FAFF003EB52F266D
+        464DDCC764D4922554FD597E20AE0D3F5319619C7F2EB5D8C7774F68D47F3F6A
+        0EA06FE6D910EBC7F94F16017E06B45F331624C0498346FF00468725374DFF00
+        A155269BFCA4BB6E5FB0D5C1A8F271EC392EE57EB7123A6B2BAEBE26A5D34AFF
+        000D7F2A69A57E5D099366DAFE992DCD9A787A694A1D5C3F8BE2AFCEB5F9F572
+        BB83F9F27F201D9392DDDB1376FCB8AAC66ECDB1BF776E2F3B411F4E7CE5A934
+        194C4EF7C97DDD10C9623A9AA28AA63A5780C64C13C94F22AE952D19B13D3BFE
+        E0658E449D7C3F0D47C11F94614F15F5F3FCFA0EC5C95B38B596292CDC4A6791
+        852698769999D72241F848047A76914A8E8EBFC1BF9CDFCAF3F98F6F8ED7C67C
+        32EDB9FB96B7ADF68EC4ABDE743FDD5F923D74F83A7CD6577D458EA98DBB576B
+        EC58723F7AF4CEA7EC5A7923F18F269052EDB6FDB888208FEA07882473F047C0
+        8403F0FC8FFA8F4EAF26ECC2FEEE6364DF4ED044ABFAB2FC4AD316FF0044A8C3
+        A67F670EAC731DD61B2B66E6F60D7EDFC4D550D6C793ABA0F354E77716564FB6
+        7D9BB8CC91CBFC632D5FE7919A052649354848B96B927DD64DCEF6F20DC63B89
+        414D00D02A2E7C44E1A5453EC18EB51EC3B5ED97BCBB3D9DBB2CDE332926495C
+        D0DB4F5AEB76A9A8193535F3AF403EDF923393DF967436F9018727D4BC0FF4ED
+        85E4F3C0E7D9368714AA1CFCBA1954578F5FFFD7DA8D7FECB9FA37FED67D85FF
+        00BE9F7F7BF75EE8E0E1BAEBA53258BC45566B0FB4EA323FC52BF2152D599155
+        9A0C97DCE559EAC44D5E9F6B56B3CAC352AAB2EB205AE47B134FB96F714D3243
+        34A23D000A0C1145C70C8A751EEDFB0F2ADC5958C975676ED3F88CC753643564
+        EEA6AED6A9E2284548F3EB522FF857C7C7A5DC1F07B64764F54E2E9EA305D37F
+        2376DE73B0E93059096AA1A4DB1BABADEB367D2EE8C8D2254D4254AE37736471
+        D4493302D0257BD884327B2DDC6E2F66FDDAF7ACE4786EA2A29425C9A7014AD3
+        A3AD86D76AB3BDDEE2DB5225ACB1FC26A48F053E649A7550DF03FE52FC39EFAF
+        E45F2FC00DCDF343AFBE027C9EEABEC9DC597A9ED0DEE37361323B93AF331DD3
+        8FEDFA7CAECEC9EDBC8E166DD191AD8F215184A8C7D2D6AE5123A1567A76A6F1
+        3B207B8B986DAE61881657915B4D681A8A5726878638F46F26DF6D26E76DB834
+        0A66489D351C91A8A1007C8E935A7E7E5D147FE457D97BBB23FCF4BE35754CBF
+        27FB0FE43F4AD26F7F9138AC56E8DC7B83B1B19B4BB2B0983F8F1DD755B7377C
+        9B0F7D65A6AFC3C75F59414F90A5A7AF8855D24CB1B3059505A914934712CA89
+        E14E57201AD2B822A38E0907D7A76F2DED6784C77112343AD4E40A61C107E441
+        C83E47A0A7F95BFC31EA1F9DDFCEEF73743F7BE3E2CC75137687C9BDE7BC3072
+        E6325838B3106D8C9EED6C252495F88A9A0AE34D06E5ADA2A99A25A9A759E181
+        E37764668E46184AF6D6F142CCB23E915001231534AD78814E18AF4ACB24619D
+        D8041EA683F6F571BFF0A3BC9FF2E1F81B3FC4AF869B67E146DAF905BC763FC7
+        77CD6C6C96F4EE7EEDD9FD7BD41B0739BD77163F13478FC17556F7DB198DE3B8
+        773EE4C1E5AA72124B9AA3745A5A66A9FBBF245E0DC9693072897324454E70A4
+        9AE73A94FEDA7D9D27B578E58D2742A4B805A86B9A0F9E29E9D6BC3FCD93ACFB
+        97ADB76F4041DE3B4BE06F536EBCF7541CAE1BA2FE0FE336C53A757ECA35B4AB
+        B757B8733B71F703EE0DD1B8CB4F2D04F59B9771D4494B04931A91E7BC89F6C3
+        1959BC25B8D151DD292751F5504D40F5C2F118C74A9BED1F975699FF000A8D6A
+        5A8AAFE55D928275ABAACBFC10DB393CA571AA7AD9EBF2756DB7E4AAACABA992
+        599E5AAA863A9D8B5D89B9E4FB556F24B21D52925BC3402BE9DD4E93C30DBC1E
+        22DBA800B1269FC478F55FDFCD8B64FF002BEDB5D0FF00CB8F3BFCBFB756D9CB
+        765EEEE87C9E4BE516DEDBF98CFE733780DC6B8DEBE6C10ED2FE3397AEA4DB9D
+        9126E6A8DCA951434C819E18C315828931BF71686278CB169D9F5004D69456A9
+        A85A01DB4A7ECF527A781246450D4FECF2E857FE7D757BA32580FE51597DF91C
+        A37F663F9507C6DC8EF8A9AC9A7A8CBE4B734C738B5D93DC32552A557F792B92
+        3492BD641AE3AB2E9C8504DA395E677666240000FF004A2A053E54E1D2782182
+        13388114069096A79B102A4FCFA9DFF0A3AF809F197F97A7C9EF8EBD55F17F6D
+        7F7676C6E4F8AFB47746F041B8F706E439DDEF16F0DE786AFDCB5B51B8B359DA
+        8A4CC64F1D414C9550D3CB0D26A8559208DDA46766CE3B98D596E656766A302C
+        00C30E028076E31F6F1E946B8DF319040C60D723FCBD58EFFC29C3E2AD6EC483
+        E127F323EA096A319B824DB5B37ACFB3B398868A4AEC36FEDA7255EF2EA4DF35
+        2636A99BF884CF4992A49EB6A9422BD2E361B92E8BED649673DAF80D32FE8DC4
+        48C0FCF42EA15C648A1C7A1E8BF6F92168648A365D4B2CA08AF01E23D31D035F
+        CBAE8B35FCF03F9EB6F7F9B3D81B5A1DBBD49D370EDBEEAC96DC9E60D81C0CBD
+        71B7309B37A436452BD4CB511D3D5D7EE2DBCDB89A125854FF000BAED4E65935
+        37AD6092EEEACECA425E49641A8F1ED1F17E5C17EC3D5AE9A0B1DBEE4C615234
+        8DB48AD05684D07CEBD22E929A8DBFE15894D490AC5F62FF0038628224590F87
+        C0DB3551144A1F578F491C86BDBF3ED995452446C0F1883F2FD4E94A2C660450
+        0785A07D94A7AF457BF9BF764FC1AEF0F96D37C56FE5EDD3BD1DB070B8EEE4DC
+        58EEC2F969BCB736DDD8D41DA1BFB29B8F234F907A6EC1DE39EC7ECED97D2BB6
+        2A6A65926CD55CD1CD99A8433AC894690AD5FA68ADE19A4B8B7798C01000B52D
+        E42A42FCCF01E43D3CB7009047A65235EA6FD9A8E91F92D2BF3EB745FF0084F6
+        7C1AFE5CFF0015BAD7B0363F577CA4F8B7F2CFE40EE1DADB3771F7A6ECEA0EF7
+        EB9EC89236FBCDC3494D8B8315B2B77652B36FEC6C0D54FE1A1FB98E37A996A1
+        E698F9651144B6D0DD5BA41796F39178E581451528A3491E4726A6A7D453CBA2
+        9DC2DACEFA59ADB74810D8AA2152C4805C99030E201A0098F9FCFAD86E87ADFA
+        B307B8B64D4EDD4DBF8F10646AA8A9A830D5F145151637FB9D9F1241E24AC955
+        29D1E2441A5542AD80201B7B107EF8DD65B5BD8DE37690A025994925BC54C8C7
+        1F3E8860D9F60B0BEE5F6DB2DE08E412B2D10FC2BF4D35401520004018000E1D
+        01983A5DB272BBD57CD0204EFCC4AE91552E8969CF776214ABC8643E8543A830
+        6078FAFB2C13EF4158947351FC22A3EC14F4C70F3E86948B50C8E3D7FFD0DA8D
+        7FECB9FA37FED67D85FF00BE9F7F7BF75EE8E1E236D7414D8AC0CFB8301D3D2E
+        4EA73358649B358AD94F5F519A927CC312D257406A65CB492873F53313A8FF00
+        AAF6269AE37F135C2DBCF7822083E16928168BE869A7F970EA3DB1B4E4C365B6
+        BDF5AED7F50D336645835190993F8854B935FE91CFCFA426FDEA8F8BDBF36AF7
+        66D0DD7B4FA5EB36EE670F36373949518AD8EB4D2E36AF64D3A55D3D7AC90085
+        E8A7A2959658E6062920621C14247B6EE1378BF836DB5BA37524321A693E21AF
+        EA1181EB5E1E75EAD6E79636CB8E65BDB45DBA19A201959442BA696EADC45283
+        CCE463AD6DFB57FE1277FCAF377F6252D6ED0DE99AEBEC666FF8F67DF6FEDBED
+        095318F143598776A7A7A4CE4FB9A5A5C7C6725644A3969A28524D2A157C6108
+        D76ADD84334AAD3695655A3475A54379D067B7CEA4FEDE850DBF6D22EED6D85F
+        DB9F1637707C54E086318CE41D7C7ECEACA3E08FF270FE5ADF00F133EF0EA9DB
+        1D772F6055E664DB551D87BB33F45BA7717A777C7829A969B3FBB72D98AEC7C5
+        5668632F4344F4948D511AB783CA357B596FB3EE31DE28F0AE64984258511853
+        5445AA15401E7C695A79D3A2EB8DF366BDDB834F7B686337623A19232095B911
+        81934A9D3C3D7A073E1F7F244FE5F7F0F7E67EEAF955B3F7A0CC6F37A4DD95F9
+        6A2DCBBBDB71EDDC8C1DAB579AAADC30E4B0B9135188FB68DE94B47E8554B71C
+        29F6FC1CB9CC10ADB5D450CE0EB2100014A95000A1146AF774A25DDF64BB9AFF
+        006FBC9ED5ED122466D6C8CA43EBA86049141A2B914FD9D09BFCCB3F93A7C05F
+        E672DD2959BDABB6DED0CFED4C4E5B0DB5F73F5B6E5C66D39E9707578DA4CC55
+        51252E2246C26428E738C89E31554353E15D4D018C49217ADFED7BDC935EDC5D
+        2DC8BB4A54BAB313DD4A12C09C12781E383D25B1DCF61DBA2D96CAC25B38ED26
+        53411B46AB88F5540421720711E5D102CCFF00C2587F955C1D3B8DDB74D9856C
+        F6D3DD195A9CDEF68BB3B20773672AEBE5C7617F85E6F2899C30C549411C30C9
+        0D0C34F490433BB4822124D2B3A18B65DD5EE23467B80CE80FF678A50B540D3F
+        6E735F5C74B2E39976986CEEAE5370B56F0A4287F55307585A1EEC1C8C1A1C8C
+        67AA45FF008540FC27EC6C3F61FC01E95F8CDD57DB7DEBB47A0BE2441D6736E4
+        EBCD83BA3B26A29E8B6EE76970BB75776E6F6760B231C99D9B0F8850F3559155
+        53E33239762CC539592D9CFD5928080175F6D695C0AFA5780E15E8CA0B8DBD9A
+        45B59A12DF13682BE648D469EA41C9E34EAD5BE3AFFC26EBF96667329F1A7BDF
+        73E22A6862DDBB7FAF739BA3A8B3DBF336FB5A3DE2FB51371671B25B7337947C
+        97EE67315379F133D49C722C9240D47E151129DDB72B6E72D84D712CF392B0EB
+        D3E1D0E4A8D350B81DDC78FCEBD17CDCC1B7472D8A0BB834CD314AF88BE49238
+        2339AE8FE7D5907F32AFE483F043E7DEF44EE0EC4DC54B89C974D759D375F61B
+        0BB3F7B536DAC753E1F0B049BA2F594785A98626CA4B2662477927058C4C9C69
+        00FB62DB66BFBABBDAE02278E3974AFC04F6EA2A29A81C790A63A4726F9B3D8D
+        AEFD3DADDDA6A84B310AF18EF1123F750F13826B9A107D3A69FE603FC963E0FF
+        00F313EDDD89D89DDDBA1A87706CCEB3A6D898DA2DA5BD69F6CAC987C5E66A32
+        53649B198BAAA74ABAA9B259A97CB3C8AD62E8A7900139BFE5CDCAEC25C42F32
+        950A84942C2801A0A9534C701D2B8375D9AD65FA58EEAD519833E9578D49C805
+        B48209C9156A71A0273D1BAF91FF000B7E1C7CB3F88553F173B360DBB16D4DCD
+        578FDB7579EC7E436E6333D24FB4B75D4D6E0AB69B354B3D3E4865FF0089E0A9
+        DB524BADD9596C43302B6FF63DFAE6DD36F67768A0891930E74D113802080284
+        D71C0E7A27DB2FF61B544BD12DA473CD752AB3868D4B5659401AAA09248000A9
+        CF484FE5CFFCACBE0EFF002E6D81F21B6875036D5DC69BF21C7EE1CFE4F7C65F
+        17BA7294F3526DACC5263A84D46E09EAA7A4A1C6C2934D0270AAF553B824486C
+        4D63B6EF3B45EEDB39FA8170F281550CB550EB81A40A8249AFEC3D39BAEE3B16
+        E30EF76D772D9C91416FA80731B692C92127B89A600CE319E8ACD3FF0024BF84
+        D4FF003FB01F3CE9B78CB0F6FE47B32A3B6A97C5BE5460A2CBD2E2A1A454A5DB
+        8952312F878292745F124651574F22E3DABB8E53BD98DF5C319F40352BA0FC4C
+        49CB52B5AFCFA304DF76A8CEDF689776BE1C886803A534AA8F845684508E0280
+        53A2A3B9FF00E12B9FCB22BA0DC7BCEB37A6665AAACDEB9F82ABCBDB793814D4
+        CFBBEBB1611843948A18EA25A865023017D6C140BD87B25B5E5FDD2E2F63B459
+        675568838FD207FD0C3FF0F002B9F41D5939976A3692DCBDFDB0D370F17F6A9C
+        5663101F1713418E3534E8FF007F2C3FE4E9F08FF974F747696E5EAFC8E3F32F
+        BEBADB0383CE6377B6EAA7DDD897A4FE379CAEA798516E39EB21A69E09710FA6
+        4502EACC3F1ECD1F61DD36BB58EFE2B8B833990AD554A100043C500AD4B0E9AB
+        8DCB63DC6E2E76FBE36725B2451BD2468D855CCABC1891809C7E67AB91C0EDFE
+        9B93786CC9B6862BADA9A78ABDA2C4C7B3E8B6C5279B0F26C9DC333CD4B260A3
+        8DAA28242B11BA1311057EA34FB5F7173BDC1B65D78D25CE965ABB485CD184A8
+        003AB8119E39E3E75E8A6D6DF9656F39725D9A0B00CD21D260584553E9663831
+        F14E1C3B787CBA0A306D8A4CD6F6C78A7A5769BBFB12AD1A43132450A778E20D
+        E62174A21B0500FD4B0F61802FDA36B932481578124D4938C7AE32698A0E873D
+        9A82D071EBFFD1DAE7B28275877D6C3EE4C9E17399BC46CBABDCB3D6506DFA7A
+        4A8CBD4266B67EE2DB918A38B215B8DA3768E7CCABB079E31A15AC6F607DD7BA
+        61CAFF00311F8ED1642ACD6FC64EE4AEAC9A5924AAABFF00473D5151254CB239
+        69259A79FB096699E57E496B92793ED52DF5EAAAAADE4A147001DA83ECCF45CF
+        B3ED123BC926D76CD2312493121249E2492B524F9D7A6E1FCC5BE368D36F8B3D
+        C8347296EB3EA2F49BEABAFF00C644F4FAB9E3F3EEDFBC2FFF00E53A6FF7B6FF
+        003F55FDC9B363FDD45AE3FE149FF40F5EFF008715F8D9623FD958EE4B12091F
+        E8CFA8AC48BD891FE913922E7FDBFBD7EF0BFF00F94E9BFDEDBFCFD6BF726CBC
+        3F745AD3FE6947FF0040F488CD7F307E80C9563BC7F1ABB661A78C78A187FD1D
+        F55A3040BA18C8137E152EDF4FA9016C3E9EC63B74B7705BC64DDCBE2B0A93AD
+        BCF34E3E5FE1CF49DF68D9CB1236BB61E5FD927FD03D74DF3C3E32AD1853F1B7
+        BA4572A6B563D77D43F6C252012A23FF0048465119200D57D5C5FF00C3DA44DF
+        77B7B8A299BE9EB4E2F5A7AD6B4AFCBF2F9F573B26CC14576DB6AFFCD34FFA07
+        A8F8CFE605D0341591D41F8D7DB0F117515311EBCEAC6134458170CADBF34B38
+        FAA93F4600FB31BB9AF2E6078FEAE5D74ED3ADB07CBCFF0023F2E9B1B46CF5CE
+        D76C47FCD24FFA07A107FE1C5FE36DC1FF006567B96EA34A9FF469D4770B622C
+        0FFA44E058FB04FEF0BFFF0094D9BFDEDBFCFD2AFDC9B360FEE8B5FF009C51FF
+        00D03D37D57F301F8B35C51ABBE23F6AD6325F435575474D5414BDAFA0CDD80E
+        56F61F4F746BDBC7357BB949F9B31FF2F575DA76A41A536CB703E51A0FF27486
+        A8F9E9F1ED2AA734FF001A3B6218BCF218A23D75D568522F2EB8919177E141A0
+        01C0245C7B1D5AEE17925A407EB25A141F89BD287CFA46FB3ED3A9ABB6DBD7FE
+        69A7FD03D08E3F98C7C6DD28FF00ECAD7727A541523AD3A8C851FAFD07FD21DC
+        0B9B8B7B059BCDC048D17D6CBAB553E36E3C3D7FC3D28FDCBB3501FDD16BFF00
+        3893FE81E93953FCC0BE2A4CDA97E2C77226B70D208BAFFAAA041F8D6912F623
+        C5A80FC00A3D88E1B9E6554EEDCDEA0601724FD95FF64F4D1DA363FF00A355BD
+        3FE6927FD03D36E43E7C7C637881C6FC66EE78AA0B00ED51D7FD526368749565
+        3A7B0646B8B0B7E2DED459EE3BF33B7D5DCC82203F8CD6BF937557D9F65FC3B6
+        5BD7FE69A7FD03D4FDB9FCC0BE3CE3FEE1EA7E3176FD4249E2F078BAE3AA2408
+        D1B485D8197B0230A6E47E9BDC8FF0F65DBDEE9765A1896FA5D62B5EF6F3A501
+        CF578B65DA0E4ED56C4797E927FD03D304BF3BBA09E69FC3F19BB7444D339553
+        D73D5D70BAD8A07037E32EA507FA9E7F3ECDE3DEA5F0217937370C541CC86BC3
+        3E7D36764DAAAC06D56FC7FDF49FF40F4B5AEFE617F1CEB319252FFB2BBDC6B5
+        2F4D1C625FF46DD4A1564454B7AC7617904775B7D2F6FC7E3D85A1DD6EEDEF44
+        82FA6312B9E0ED9191EBE9D3FF00B93672B8DA6D8353FDF49FF40F49DC57CF1F
+        8F945574F5551F1A3B85840EEC618FAD3AA2456D7194600C9D89180581FAE9FC
+        7B31BCE65B89E19218E79FB8712E479D7C89FF000F545D8B69046ADAED88FF00
+        9A49FF0040F433ECDF9BFD01BAB2B1FF0007F8EFDB5B7F232AB538C8B6C9EBAC
+        44E2395D4BC72D56237EC950F117504A9D42E2F6F6509BB6E489E1FD6C863AD7
+        4B31615FB1AA3A550ED9B6DBBF896F610C7252954455343F3001E85DC2E231F4
+        FB5F78EE9186AD5C657EFAC5EF738CD0832B263E1EC5C56E81444FDCF8CD6AD3
+        43A40F3E8F20FD76F57B60DEDD34A931989917870A0AE38529FCBA59A572298E
+        BFFFD2DD3BB87FCC4DFF00163FA3FF00C5C3FD63F5F7EEBDD112CA7FC0B93FE6
+        5D7EA6FF0039FABEBF9F7EEBDD377FE8B7F7EEBDD7BFF45BFBF75EE83A9FFCFC
+        DFF1E07F9D93E9F4FD67E9FE1EC7D0FF0063171F847F83A46789E3D62FFD007D
+        BBFB7AD7EDE9E31FF8FF009955F5FF0094EFD7F41F4FF1FE9FE3ECB2F7CFFDC9
+        E1F83874EA7E5F9F4B11F41FF32DBE83E9F4FF0061FE1EC20789E9475DFF00E8
+        B7F7AEBDD2172BFF00170A9FF997DFA93FCDFE9FF369F4FF0089FF001F634DB3
+        FDC1B7E3C0FF0084F4964F8DB8F4B0A1FF0080549FF32E7FE03C3FAFF57F9B5F
+        AFB0A5E7FB9775FF00351BFC27A50BF0AFD9D226B7FE05CFFF0032EBFCE1FF00
+        80DFE67FE40FF0FEBFE3EC6569FEE343F1FC3F8B8FE7FEAE1D266F88F5C29BFC
+        FC7FF32EBF50FF00813FE63FE9E7FB4FBBCFFD93FC7C3F0FC5F97CFAD0E23A10
+        22FF00369FF32D3F42FF009AFF0037F41FA3FDA3FA7F87B02CBFDA3FC5C4FC5C
+        7F3F9FAF4AC701D73FFD16FEDBEB7D7BFF0045BFBF75EEBDFF00A2DFDFBAF742
+        3EC2FF0081F0FF00C789FAD7FE027EBFF61FE3FF0013EFDD7BA3EF4DFF001E46
+        47FE2DBFF0120FA7FC05FF0081307EAFF0FE9FE3EFDD7BAFFFD9}
+      Stretch = True
+      IsControl = True
+    end
+    object ProductName: TLabel
+      Left = 154
+      Top = 16
+      Width = 48
+      Height = 16
+      Caption = 'GVedit'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -13
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+      IsControl = True
+    end
+    object Version: TLabel
+      Left = 138
+      Top = 40
+      Width = 86
+      Height = 13
+      Caption = 'Version: 0.99 beta'
+      IsControl = True
+    end
+    object Label1: TLabel
+      Left = 116
+      Top = 55
+      Width = 134
+      Height = 13
+      Caption = 'Graphviz Editor for Windows'
+      IsControl = True
+    end
+  end
+  object OKButton: TButton
+    Left = 201
+    Top = 124
+    Width = 75
+    Height = 25
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    TabOrder = 1
+  end
+end
diff --git a/windows/gvedit/UAbout.h b/windows/gvedit/UAbout.h
new file mode 100644 (file)
index 0000000..d75e135
--- /dev/null
@@ -0,0 +1,33 @@
+//----------------------------------------------------------------------------
+#ifndef UAboutH
+#define UAboutH
+//----------------------------------------------------------------------------
+#include <vcl\System.hpp>
+#include <vcl\Windows.hpp>
+#include <vcl\SysUtils.hpp>
+#include <vcl\Classes.hpp>
+#include <vcl\Graphics.hpp>
+#include <vcl\Forms.hpp>
+#include <vcl\Controls.hpp>
+#include <vcl\StdCtrls.hpp>
+#include <vcl\Buttons.hpp>
+#include <vcl\ExtCtrls.hpp>
+#include <jpeg.hpp>
+//----------------------------------------------------------------------------
+class TfrmAbout : public TForm
+{
+__published:
+       TPanel *Panel1;
+       TImage *ProgramIcon;
+       TLabel *ProductName;
+       TLabel *Version;
+       TButton *OKButton;
+        TLabel *Label1;
+private:
+public:
+       virtual __fastcall TfrmAbout(TComponent* AOwner);
+};
+//----------------------------------------------------------------------------
+extern PACKAGE TfrmAbout *frmAbout;
+//----------------------------------------------------------------------------
+#endif    
diff --git a/windows/gvedit/UEditor.cpp b/windows/gvedit/UEditor.cpp
new file mode 100644 (file)
index 0000000..a3a5c72
--- /dev/null
@@ -0,0 +1,275 @@
+//---------------------------------------------------------------------------
+
+#include <vcl.h>
+#pragma hdrstop
+
+#include "UEditor.h"
+#include "Umain.h"
+#include "Application.h"
+
+//---------------------------------------------------------------------------
+#pragma package(smart_init)
+#pragma resource "*.dfm"
+TfrmEditor *frmEditor;
+//---------------------------------------------------------------------------
+__fastcall TfrmEditor::TfrmEditor(TComponent* Owner)
+        : TForm(Owner)
+{
+}
+//---------------------------------------------------------------------------
+
+
+void __fastcall TfrmEditor::RSelectionChange(TObject *Sender)
+{
+        int LineNumber = SendMessage(R->Handle, EM_LINEFROMCHAR, R->SelStart, 0);
+        int ColNumber = (R->SelStart - SendMessage(R->Handle, EM_LINEINDEX, LineNumber, 0));
+        StatusBar1->Panels->Items[0]->Text=IntToStr(LineNumber+1)+":"+IntToStr(ColNumber+1);
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmEditor::FormClose(TObject *Sender,
+      TCloseAction &Action)
+{
+        if (!isEditor) //if preview
+        {
+                this->Editor->Editor=NULL;
+                delete this;
+        }
+        else
+        {
+                if (!modified)
+                {
+                        delete this->Editor;
+                        delete this;
+
+                }
+                else
+                {
+                        int a=MessageDlg(FileName+" has changed , do you want to save changes?",mtInformation, TMsgDlgButtons() << mbYes<<mbNo << mbCancel, 0);
+                        if(a==mrYes)
+                        {
+                                if(Save())
+                                {
+                                        delete this->Editor;
+                                        delete this;
+                                }
+                                else
+                                        Abort();
+
+
+                        }
+                        if(a==mrNo)
+                                delete this;
+                        if(a==mrCancel)
+                                Abort();
+                }
+        }
+}
+//---------------------------------------------------------------------------
+
+
+void __fastcall TfrmEditor::FormActivate(TObject *Sender)
+{
+/*        frmMain->Caption=SOFTWARE_SHORT_NAME;
+        frmMain->Caption = frmMain->Caption + " editing "+FileName;*/
+        R->Color=clWhite;
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmEditor::FormDeactivate(TObject *Sender)
+{
+        R->Color=clSilver;
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmEditor::RChange(TObject *Sender)
+{
+        modified=true;
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmEditor::BitBtn5Click(TObject *Sender)
+{
+        Image1->Align=alNone;
+        Image1->Width=Image1->Picture->Width ;
+        Image1->Height=Image1->Picture->Height;
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmEditor::BitBtn4Click(TObject *Sender)
+{
+        Image1->Align=alClient;
+}
+//---------------------------------------------------------------------------
+
+
+void __fastcall TfrmEditor::FormCreate(TObject *Sender)
+{
+        Engine=-1;
+}
+//---------------------------------------------------------------------------
+
+
+void __fastcall TfrmEditor::SB1Click(TObject *Sender)
+{
+        Image1->Align=alNone;
+        Image1->Width=Image1->Picture->Width ;
+        Image1->Height=Image1->Picture->Height;
+        
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmEditor::SB2Click(TObject *Sender)
+{
+        Image1->Align=alClient;
+        
+}
+//---------------------------------------------------------------------------
+
+
+
+void __fastcall TfrmEditor::BitBtn2Click(TObject *Sender)
+{
+        if(Image1->Picture)
+        {
+                if(SDB->Execute())
+                {
+                        try{
+                                Image1->Picture->SaveToFile(SDB->FileName);
+                        }
+                        catch(...)
+                        {
+                                ShowMessage ("File could not be saved, disk might be read only"); 
+
+                        }
+
+
+                }
+
+
+        }
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmEditor::FindDialog1Find(TObject *Sender)
+{
+        int FoundAt, StartPos, ToEnd;
+        // begin the search after the current selection
+        // if there is one
+        // otherwise, begin at the start of the text
+        if (R->SelLength)
+                StartPos = R->SelStart + R->SelLength;
+        else
+                StartPos = 0;
+
+        // ToEnd is the length from StartPos
+        // to the end of the text in the rich edit control
+
+        ToEnd = R->Text.Length() - StartPos;
+        FoundAt = R->FindText(FindDialog1->FindText, StartPos, ToEnd, TSearchTypes()<< stMatchCase);
+        if (FoundAt != -1)
+        {
+                R->SetFocus();
+                R->SelStart = FoundAt;
+                R->SelLength = FindDialog1->FindText.Length();
+        }
+        else
+        {
+                if (R->SelLength)
+                {
+                        int a=MessageDlg("There is no more "+FindDialog1->FindTextA+" in the document , do you want to start over?",mtInformation, TMsgDlgButtons() << mbYes<<mbNo << mbCancel, 0);
+                        if(a==mrYes)
+                        {
+                                R->SelLength=0;
+                                FindDialog1->Execute();
+                        }
+                }
+                else
+                        ShowMessage ("Could not find specified text in the document");
+
+        }
+
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmEditor::ReplaceDialog1Find(TObject *Sender)
+{
+        int FoundAt, StartPos, ToEnd;
+        // begin the search after the current selection
+        // if there is one
+        // otherwise, begin at the start of the text
+        if (R->SelLength)
+                StartPos = R->SelStart + R->SelLength;
+        else
+                StartPos = 0;
+
+        // ToEnd is the length from StartPos
+        // to the end of the text in the rich edit control
+
+        ToEnd = R->Text.Length() - StartPos;
+        FoundAt = R->FindText(ReplaceDialog1->FindText, StartPos, ToEnd, TSearchTypes()<< stMatchCase);
+        if (FoundAt != -1)
+        {
+                R->SetFocus();
+                R->SelStart = FoundAt;
+                R->SelLength = ReplaceDialog1->FindText.Length();
+        }
+        else
+        {
+                if (R->SelLength)
+                {
+                        int a=MessageDlg("There is no more "+ReplaceDialog1->FindTextA+" in the document , do you want to start over?",mtInformation, TMsgDlgButtons() << mbYes<<mbNo << mbCancel, 0);
+                        if(a==mrYes)
+                        {
+                                R->SelLength=0;
+                                ReplaceDialog1->Execute();
+                        }
+                }
+                else
+                        ShowMessage ("Could not find specified text in the document");
+
+        }
+
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmEditor::Timer1Timer(TObject *Sender)
+{
+        long GENERIC_ACCESS = 268435456;  //  &H10000000
+        long EXCLUSIVE_ACCESS = 0;
+        long OP= 3;
+        void* ll_handle;
+        static int counter=0;
+        AnsiString filename=tempFolder+"__temp.jpg";
+        counter++;
+
+        if ((FileExists(filename)) || (counter == 10000))
+        {
+                if (counter==10000)      //could not create the preview
+                {
+                        frmMain->Memo1->Lines->Add("preview file for "+FileName+" could not be created!!");
+                        frmMain->Memo1->SelStart=frmMain->Memo1->Text.Length()-1;
+                        SendMessage(frmMain->Memo1->Handle, EM_SCROLLCARET,0,0);
+                        counter=0;
+                }
+                else
+                {
+                                Timer1->Enabled=false;
+                                try {
+                                        Image1->Picture->LoadFromFile(filename);
+                                }
+                                catch(...)
+                                {
+                                        Timer1->Enabled=true;
+                                        counter=0;
+                                }
+
+                }
+
+        }
+}
+//---------------------------------------------------------------------------
+
diff --git a/windows/gvedit/UEditor.dfm b/windows/gvedit/UEditor.dfm
new file mode 100644 (file)
index 0000000..b08ae90
--- /dev/null
@@ -0,0 +1,178 @@
+object frmEditor: TfrmEditor
+  Left = 566
+  Top = 254
+  Width = 734
+  Height = 509
+  Caption = 'frmEditor'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIChild
+  OldCreateOrder = False
+  Position = poDefault
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDeactivate = FormDeactivate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel
+    Left = 0
+    Top = 0
+    Width = 726
+    Height = 456
+    Align = alClient
+    Caption = 'Panel1'
+    TabOrder = 2
+    object ScrollBox1: TScrollBox
+      Left = 1
+      Top = 34
+      Width = 724
+      Height = 421
+      Align = alClient
+      BevelInner = bvNone
+      BevelOuter = bvNone
+      TabOrder = 0
+      object Image1: TImage
+        Left = 0
+        Top = 0
+        Width = 720
+        Height = 417
+        Align = alClient
+        Proportional = True
+      end
+    end
+    object Panel3: TPanel
+      Left = 1
+      Top = 1
+      Width = 724
+      Height = 33
+      Align = alTop
+      BevelOuter = bvSpace
+      BorderStyle = bsSingle
+      TabOrder = 1
+      DesignSize = (
+        720
+        29)
+      object SB1: TSpeedButton
+        Left = 545
+        Top = 3
+        Width = 81
+        Height = 22
+        Anchors = [akTop, akRight]
+        GroupIndex = 1
+        Caption = 'Real Size'
+        OnClick = SB1Click
+      end
+      object SB2: TSpeedButton
+        Left = 631
+        Top = 3
+        Width = 81
+        Height = 22
+        Anchors = [akTop, akRight]
+        GroupIndex = 1
+        Down = True
+        Caption = 'Fit To Screen'
+        OnClick = SB2Click
+      end
+      object BitBtn2: TBitBtn
+        Left = 4
+        Top = 2
+        Width = 65
+        Height = 25
+        Caption = 'Save'
+        TabOrder = 0
+        OnClick = BitBtn2Click
+        Glyph.Data = {
+          76010000424D7601000000000000760000002800000020000000100000000100
+          04000000000000010000130B0000130B00001000000000000000000000000000
+          800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333330070
+          7700333333337777777733333333008088003333333377F73377333333330088
+          88003333333377FFFF7733333333000000003FFFFFFF77777777000000000000
+          000077777777777777770FFFFFFF0FFFFFF07F3333337F3333370FFFFFFF0FFF
+          FFF07F3FF3FF7FFFFFF70F00F0080CCC9CC07F773773777777770FFFFFFFF039
+          99337F3FFFF3F7F777F30F0000F0F09999937F7777373777777F0FFFFFFFF999
+          99997F3FF3FFF77777770F00F000003999337F773777773777F30FFFF0FF0339
+          99337F3FF7F3733777F30F08F0F0337999337F7737F73F7777330FFFF0039999
+          93337FFFF7737777733300000033333333337777773333333333}
+        NumGlyphs = 2
+      end
+    end
+  end
+  object StatusBar1: TStatusBar
+    Left = 0
+    Top = 456
+    Width = 726
+    Height = 19
+    Panels = <
+      item
+        Text = '1:1'
+        Width = 100
+      end
+      item
+        Width = 50
+      end>
+    SimplePanel = False
+  end
+  object Panel2: TPanel
+    Left = 0
+    Top = 0
+    Width = 726
+    Height = 456
+    Align = alClient
+    Caption = 'Panel2'
+    TabOrder = 0
+    object R: TRichEdit
+      Left = 1
+      Top = 1
+      Width = 724
+      Height = 454
+      Align = alClient
+      Font.Charset = ANSI_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -13
+      Font.Name = 'Courier New'
+      Font.Style = []
+      HideSelection = False
+      ParentFont = False
+      PlainText = True
+      ScrollBars = ssBoth
+      TabOrder = 0
+      WantTabs = True
+      WordWrap = False
+      OnChange = RChange
+      OnSelectionChange = RSelectionChange
+    end
+  end
+  object SDB: TSaveDialog
+    Filter = 'Bitmap File|*.bmp'
+    Left = 120
+  end
+  object FindDialog1: TFindDialog
+    OnFind = FindDialog1Find
+    Left = 176
+    Top = 128
+  end
+  object ReplaceDialog1: TReplaceDialog
+    Options = [frDown, frHideUpDown, frReplace, frReplaceAll]
+    OnFind = ReplaceDialog1Find
+    Left = 224
+    Top = 128
+  end
+  object Timer1: TTimer
+    Enabled = False
+    OnTimer = Timer1Timer
+    Left = 160
+    Top = 296
+  end
+  object SDB2: TSaveDialog
+    Filter = 'Dot File|*.dot'
+    Left = 64
+    Top = 104
+  end
+end
diff --git a/windows/gvedit/UEditor.h b/windows/gvedit/UEditor.h
new file mode 100644 (file)
index 0000000..7c08940
--- /dev/null
@@ -0,0 +1,131 @@
+//---------------------------------------------------------------------------
+
+#ifndef UEditorH
+#define UEditorH
+//---------------------------------------------------------------------------
+#include <Classes.hpp>
+#include <Controls.hpp>
+#include <StdCtrls.hpp>
+#include <Forms.hpp>
+#include <ComCtrls.hpp>
+#include <ExtCtrls.hpp>
+#include <Dialogs.hpp>
+#include <Buttons.hpp>
+#include <jpeg.hpp>
+//---------------------------------------------------------------------------
+class TfrmEditor : public TForm
+{
+__published:   // IDE-managed Components
+        TStatusBar *StatusBar1;
+        TSaveDialog *SDB;
+        TPanel *Panel2;
+        TRichEdit *R;
+        TPanel *Panel1;
+        TScrollBox *ScrollBox1;
+        TImage *Image1;
+        TPanel *Panel3;
+        TSpeedButton *SB1;
+        TBitBtn *BitBtn2;
+        TSpeedButton *SB2;
+        TFindDialog *FindDialog1;
+        TReplaceDialog *ReplaceDialog1;
+        TTimer *Timer1;
+        TSaveDialog *SDB2;
+        void __fastcall RSelectionChange(TObject *Sender);
+        void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
+        void __fastcall FormActivate(TObject *Sender);
+        void __fastcall FormDeactivate(TObject *Sender);
+        void __fastcall RChange(TObject *Sender);
+        void __fastcall BitBtn5Click(TObject *Sender);
+        void __fastcall BitBtn4Click(TObject *Sender);
+        void __fastcall FormCreate(TObject *Sender);
+        void __fastcall SB1Click(TObject *Sender);
+        void __fastcall SB2Click(TObject *Sender);
+        void __fastcall BitBtn2Click(TObject *Sender);
+        void __fastcall FindDialog1Find(TObject *Sender);
+        void __fastcall ReplaceDialog1Find(TObject *Sender);
+        void __fastcall Timer1Timer(TObject *Sender);
+private:       // User declarations
+public:                // User declarations
+        __fastcall TfrmEditor(TComponent* Owner);
+        bool isEditor; //I use same class for preview , false for preview window
+        bool modified;
+        bool NeedFileName;
+        AnsiString FileName;
+        TfrmEditor *Editor;     //for preview windows this stores the editor file of preview
+        //Setting Window values
+        int Engine;
+        AnsiString OutputFile;
+        int OutputType;
+        bool Preview;
+        AnsiString Options;
+        AnsiString tempFolder;
+
+        bool TfrmEditor::ChangeFileName(AnsiString NewFileName,bool newfile=false);
+        bool TfrmEditor::SaveAs();
+        bool TfrmEditor::Save();
+        bool SwitchToPreview();
+};
+//---------------------------------------------------------------------------
+extern PACKAGE TfrmEditor *frmEditor;
+//---------------------------------------------------------------------------
+bool TfrmEditor::SwitchToPreview()
+{
+        StatusBar1->Visible=false;
+        Panel2->Visible=false;
+        Timer1->Enabled=true;
+        Image1->Picture=NULL;
+}
+
+bool TfrmEditor::ChangeFileName(AnsiString NewFileName,bool newfile)
+{
+        //if newfile is true even save commands runs like save as..
+
+        FileName=NewFileName;
+        Caption="Graphviz Layout("+NewFileName+")";
+        NeedFileName=newfile;
+        isEditor=true;
+        return true;
+
+
+}
+bool TfrmEditor::SaveAs()
+{
+        SDB2->FileName=FileName;
+        if(SDB2->Execute())
+        {
+                try{
+                        R->Lines->SaveToFile(SDB2->FileName);
+                        ChangeFileName(SDB2->FileName,false);
+                        modified=false;
+                        return true;
+                }
+                catch(...)
+                {;}
+        }
+        else
+                return false;
+
+}
+bool TfrmEditor::Save()
+{
+        if (NeedFileName)
+                return SaveAs();
+        else
+        {
+                try{
+                        R->Lines->SaveToFile(FileName);
+                        modified=false;
+                        return true;
+                }
+                catch(...)
+                {
+                        ShowMessage("Unexpected error, could not save the file");
+                        return false;
+                }
+        }
+}
+
+
+
+#endif
diff --git a/windows/gvedit/UPreProcess.cpp b/windows/gvedit/UPreProcess.cpp
new file mode 100644 (file)
index 0000000..9963dba
--- /dev/null
@@ -0,0 +1,66 @@
+//---------------------------------------------------------------------------
+
+#include <vcl.h>
+#pragma hdrstop
+
+#include "UPreProcess.h"
+#include <SysUtils.hpp>
+#include <windows.hpp>
+#include <stdio.h>
+#include <IniFiles.hpp>
+
+//---------------------------------------------------------------------------
+#pragma package(smart_init)
+#pragma resource "*.dfm"
+TfrmPre *frmPre;
+//---------------------------------------------------------------------------
+__fastcall TfrmPre::TfrmPre(TComponent* Owner)
+        : TForm(Owner)
+{
+}
+//---------------------------------------------------------------------------
+void __fastcall TfrmPre::FormShow(TObject *Sender)
+{
+        TIniFile *ini;
+        AnsiString FileName=ExtractFilePath( Application->ExeName)+"Settings.ini" ;
+        if(FileExists(FileName))
+        {
+                ini = new TIniFile(FileName);
+                PreprocCmd=ini->ReadString( "Settings", "PreCmd", "");
+                PreprocPath=ini->ReadString( "Settings", "PrePath", "");;
+                PreprocPathEdit->Text=PreprocPath;
+                PreprocEdit->Text=PreprocCmd;
+                 delete ini;
+        }
+        else
+        {
+                ShowMessage ("Settings.ini could not be located!");
+                Close();
+
+        }
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmPre::Button3Click(TObject *Sender)
+{
+        TIniFile *ini;
+        AnsiString FileName=ExtractFilePath( Application->ExeName)+"Settings.ini" ;
+        if(FileExists(FileName))
+        {
+                ini = new TIniFile(FileName);
+                ini->WriteString( "Settings", "PreCmd", PreprocEdit->Text);
+                ini->WriteString( "Settings", "PrePath", PreprocPathEdit->Text);
+                 delete ini;
+        }
+        Close();
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmPre::Button4Click(TObject *Sender)
+{
+        Close();        
+}
+//---------------------------------------------------------------------------
+
diff --git a/windows/gvedit/UPreProcess.dfm b/windows/gvedit/UPreProcess.dfm
new file mode 100644 (file)
index 0000000..024dd88
--- /dev/null
@@ -0,0 +1,98 @@
+object frmPre: TfrmPre
+  Left = 399
+  Top = 288
+  BorderStyle = bsSingle
+  Caption = 'Preprocessor Settings'
+  ClientHeight = 103
+  ClientWidth = 383
+  Color = clBtnFace
+  DefaultMonitor = dmPrimary
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  OnShow = FormShow
+  DesignSize = (
+    383
+    103)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel2: TPanel
+    Left = -3
+    Top = 0
+    Width = 384
+    Height = 72
+    BevelInner = bvRaised
+    BevelOuter = bvLowered
+    TabOrder = 0
+    DesignSize = (
+      384
+      72)
+    object Label9: TLabel
+      Left = 17
+      Top = 23
+      Width = 22
+      Height = 13
+      Caption = 'Path'
+    end
+    object Label8: TLabel
+      Left = 16
+      Top = 44
+      Width = 70
+      Height = 13
+      Caption = 'Command Line'
+    end
+    object Label10: TLabel
+      Left = 6
+      Top = 4
+      Width = 66
+      Height = 13
+      Caption = 'Pre-Processor'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsUnderline]
+      ParentFont = False
+    end
+    object PreprocEdit: TEdit
+      Left = 111
+      Top = 42
+      Width = 266
+      Height = 21
+      Anchors = [akLeft, akTop, akRight]
+      TabOrder = 0
+    end
+    object PreprocPathEdit: TEdit
+      Left = 111
+      Top = 19
+      Width = 266
+      Height = 21
+      Anchors = [akLeft, akTop, akRight]
+      TabOrder = 1
+    end
+  end
+  object Button4: TButton
+    Left = 229
+    Top = 74
+    Width = 75
+    Height = 25
+    Anchors = [akRight, akBottom]
+    Caption = 'Cancel'
+    TabOrder = 1
+    OnClick = Button4Click
+  end
+  object Button3: TButton
+    Left = 305
+    Top = 74
+    Width = 75
+    Height = 25
+    Anchors = [akRight, akBottom]
+    Caption = 'OK'
+    Default = True
+    TabOrder = 2
+    OnClick = Button3Click
+  end
+end
diff --git a/windows/gvedit/UPreProcess.h b/windows/gvedit/UPreProcess.h
new file mode 100644 (file)
index 0000000..ad0ffe4
--- /dev/null
@@ -0,0 +1,35 @@
+//---------------------------------------------------------------------------
+
+#ifndef UPreProcessH
+#define UPreProcessH
+//---------------------------------------------------------------------------
+#include <Classes.hpp>
+#include <Controls.hpp>
+#include <StdCtrls.hpp>
+#include <Forms.hpp>
+#include <ExtCtrls.hpp>
+//---------------------------------------------------------------------------
+class TfrmPre : public TForm
+{
+__published:   // IDE-managed Components
+        TPanel *Panel2;
+        TLabel *Label9;
+        TLabel *Label8;
+        TLabel *Label10;
+        TEdit *PreprocEdit;
+        TEdit *PreprocPathEdit;
+        TButton *Button4;
+        TButton *Button3;
+        void __fastcall FormShow(TObject *Sender);
+        void __fastcall Button3Click(TObject *Sender);
+        void __fastcall Button4Click(TObject *Sender);
+private:       // User declarations
+public:                // User declarations
+        __fastcall TfrmPre(TComponent* Owner);
+        AnsiString PreprocCmd;
+        AnsiString PreprocPath;
+};
+//---------------------------------------------------------------------------
+extern PACKAGE TfrmPre *frmPre;
+//---------------------------------------------------------------------------
+#endif
diff --git a/windows/gvedit/UPreview.cpp b/windows/gvedit/UPreview.cpp
new file mode 100644 (file)
index 0000000..527e2fb
--- /dev/null
@@ -0,0 +1,18 @@
+//---------------------------------------------------------------------------
+
+#include <vcl.h>
+#pragma hdrstop
+
+#include "UPreview.h"
+//---------------------------------------------------------------------------
+#pragma package(smart_init)
+#pragma resource "*.dfm"
+TfrmPreview *frmPreview;
+//---------------------------------------------------------------------------
+__fastcall TfrmPreview::TfrmPreview(TComponent* Owner)
+        : TForm(Owner)
+{
+}
+//---------------------------------------------------------------------------
+
+
diff --git a/windows/gvedit/UPreview.dfm b/windows/gvedit/UPreview.dfm
new file mode 100644 (file)
index 0000000..b45fe6d
--- /dev/null
@@ -0,0 +1,112 @@
+object frmPreview: TfrmPreview
+  Left = 586
+  Top = 326
+  Width = 696
+  Height = 480
+  Caption = 'Preview'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel
+    Left = 0
+    Top = 0
+    Width = 688
+    Height = 30
+    Align = alTop
+    TabOrder = 0
+    object BitBtn1: TBitBtn
+      Left = 3
+      Top = 3
+      Width = 75
+      Height = 25
+      Caption = 'Save'
+      TabOrder = 0
+    end
+    object BitBtn2: TBitBtn
+      Left = 450
+      Top = 3
+      Width = 32
+      Height = 25
+      TabOrder = 1
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000130B0000130B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+        33033333333333333F7F3333333333333000333333333333F777333333333333
+        000333333333333F777333333333333000333333333333F77733333333333300
+        033333333FFF3F777333333700073B703333333F7773F77733333307777700B3
+        33333377333777733333307F8F8F7033333337F333F337F3333377F8F9F8F773
+        3333373337F3373F3333078F898F870333337F33F7FFF37F333307F99999F703
+        33337F377777337F3333078F898F8703333373F337F33373333377F8F9F8F773
+        333337F3373337F33333307F8F8F70333333373FF333F7333333330777770333
+        333333773FF77333333333370007333333333333777333333333}
+      NumGlyphs = 2
+    end
+    object BitBtn3: TBitBtn
+      Left = 484
+      Top = 3
+      Width = 32
+      Height = 25
+      TabOrder = 2
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000130B0000130B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+        33033333333333333F7F3333333333333000333333333333F777333333333333
+        000333333333333F777333333333333000333333333333F77733333333333300
+        033333333FFF3F777333333700073B703333333F7773F77733333307777700B3
+        333333773337777333333078F8F87033333337F3333337F33333778F8F8F8773
+        333337333333373F333307F8F8F8F70333337F33FFFFF37F3333078999998703
+        33337F377777337F333307F8F8F8F703333373F3333333733333778F8F8F8773
+        333337F3333337F333333078F8F870333333373FF333F7333333330777770333
+        333333773FF77333333333370007333333333333777333333333}
+      NumGlyphs = 2
+    end
+    object BitBtn4: TBitBtn
+      Left = 162
+      Top = 3
+      Width = 97
+      Height = 25
+      Caption = 'Fit To Screen'
+      TabOrder = 3
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000120B0000120B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00330000000000
+        033333777777777773333330777777703333333773F333773333333330888033
+        33333FFFF7FFF7FFFFFF0000000000000003777777777777777F0FFFFFFFFFF9
+        FF037F3333333337337F0F78888888887F037F33FFFFFFFFF37F0F7000000000
+        8F037F3777777777F37F0F70AAAAAAA08F037F37F3333337F37F0F70ADDDDDA0
+        8F037F37F3333337F37F0F70A99A99A08F037F37F3333337F37F0F70A99A99A0
+        8F037F37F3333337F37F0F70AAAAAAA08F037F37FFFFFFF7F37F0F7000000000
+        8F037F3777777777337F0F77777777777F037F3333333333337F0FFFFFFFFFFF
+        FF037FFFFFFFFFFFFF7F00000000000000037777777777777773}
+      NumGlyphs = 2
+    end
+  end
+  object StatusBar1: TStatusBar
+    Left = 0
+    Top = 427
+    Width = 688
+    Height = 19
+    Panels = <>
+    SimplePanel = False
+  end
+  object ScrollBox1: TScrollBox
+    Left = 0
+    Top = 30
+    Width = 688
+    Height = 397
+    Align = alClient
+    TabOrder = 2
+  end
+end
diff --git a/windows/gvedit/UPreview.h b/windows/gvedit/UPreview.h
new file mode 100644 (file)
index 0000000..f0f64ee
--- /dev/null
@@ -0,0 +1,31 @@
+//---------------------------------------------------------------------------
+
+#ifndef UPreviewH
+#define UPreviewH
+//---------------------------------------------------------------------------
+#include <Classes.hpp>
+#include <Controls.hpp>
+#include <StdCtrls.hpp>
+#include <Forms.hpp>
+#include <Buttons.hpp>
+#include <ComCtrls.hpp>
+#include <ExtCtrls.hpp>
+//---------------------------------------------------------------------------
+class TfrmPreview : public TForm
+{
+__published:   // IDE-managed Components
+        TPanel *Panel1;
+        TStatusBar *StatusBar1;
+        TScrollBox *ScrollBox1;
+        TBitBtn *BitBtn1;
+        TBitBtn *BitBtn2;
+        TBitBtn *BitBtn3;
+        TBitBtn *BitBtn4;
+private:       // User declarations
+public:                // User declarations
+        __fastcall TfrmPreview(TComponent* Owner);
+};
+//---------------------------------------------------------------------------
+extern PACKAGE TfrmPreview *frmPreview;
+//---------------------------------------------------------------------------
+#endif
diff --git a/windows/gvedit/USettings.cpp b/windows/gvedit/USettings.cpp
new file mode 100644 (file)
index 0000000..5e80671
--- /dev/null
@@ -0,0 +1,728 @@
+//---------------------------------------------------------------------------
+
+#include <shlobj.h>
+
+#define NO_WIN32_LEAN_AND_MEAN 1
+#include <vcl.h>
+#pragma hdrstop
+
+#include "USettings.h"
+#include "Umain.h"
+#include "UEditor.h"
+#include "windows.h"
+#include "SysUtils.hpp"
+
+#include <stdio.h>
+#define countof( array ) ( sizeof( array )/sizeof( array[0] ) )
+
+//---------------------------------------------------------------------------
+#pragma package(smart_init)
+#pragma resource "*.dfm"
+TfrmSettings *frmSettings;
+
+#define BUFSIZE 4096 
+HANDLE hChildStdinRd, hChildStdinWr,  
+   hChildStdoutRd, hChildStdoutWr, 
+   hInputFile, hStdout;
+bool preprocflag=false;
+
+BOOL CreateChildProcess();
+VOID WriteToPipe(VOID);
+VOID ReadFromPipe(VOID);
+VOID ErrorExit(LPSTR);
+bool preproc();
+
+
+//---------------------------------------------------------------------------
+__fastcall TfrmSettings::TfrmSettings(TComponent* Owner)
+        : TForm(Owner)
+{
+}
+//---------------------------------------------------------------------------
+int TfrmSettings::Init(bool silent)
+{
+
+        DeleteFile(ExtractFilePath(Application->ExeName)+"__temp.dot");
+        DeleteFile(ExtractFilePath(Application->ExeName)+"__temp2.dot");
+        DeleteFile(ExtractFilePath(Application->ExeName)+"__temp.jpg");
+
+        int Engine;
+        AnsiString OutputFile;
+        int OutputType;
+        bool Preview;
+        AnsiString Options;
+
+        TfrmEditor* Ed=((TfrmEditor*)frmMain->ActiveMDIChild);
+   if(Ed)
+   {
+
+            ComboBox2Change(NULL);
+        if(!Ed->isEditor) //if preview window is highlighted make teditor the active
+        {
+                Ed->Editor->Show();
+                Ed=((TfrmEditor*)frmMain->ActiveMDIChild);
+        }
+
+
+
+        if((Ed) && (Ed->isEditor))
+        {
+                Edit1->Text=ChangeFileExt(Ed->FileName,"."+ComboBox2->Items->Strings[ComboBox2->ItemIndex]);
+                //load editor window values
+                if (Ed->Engine != -1)
+                {
+                        ComboBox1->ItemIndex=Ed->Engine;
+                        Edit1->Text=Ed->OutputFile;
+                        ComboBox2->ItemIndex=Ed->OutputType;
+                        CheckBox1->Checked=Ed->Preview;
+                        Memo1->Text=Ed->Options;
+                }
+                if(!silent)
+                        return ShowModal();
+
+                else
+                {
+                        if (Ed->Engine != -1)
+                                Button3->Click();
+                        else
+                                return ShowModal();
+                }
+
+        }
+    }
+}
+
+void __fastcall TfrmSettings::Button6Click(TObject *Sender)
+{
+                AnsiString FileName="http://www.graphviz.org/doc/info/attrs.html";
+                AnsiString action="open";
+                ShellExecute(NULL, action.c_str(),FileName.c_str(), NULL, NULL, SW_SHOW); //read me file, if exists it shows
+
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmSettings::Button2Click(TObject *Sender)
+{
+        AnsiString Scope[]={"G","N","E"};
+        if(Edit3->Text.Trim()!="")
+        {
+                Memo1->Lines->Add("-"+Scope[ComboBox3->ItemIndex]+ComboBox4->Items->Strings[ComboBox4->ItemIndex]+"=\""+Edit3->Text+"\"");
+
+        }
+        else
+        {
+                ShowMessage ("You need to specify a value");
+                Edit3->SetFocus();
+        }
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmSettings::BitBtn2Click(TObject *Sender)
+{
+        if(Memo1->Text.Trim() !="")
+        {
+                int a=MessageDlg("Are you sure that you want to clear attributes?",mtInformation, TMsgDlgButtons() << mbYes<<mbNo << mbCancel, 0);
+                if(a==mrYes)
+                {
+                        Memo1->Lines->Clear();
+                }
+        }
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmSettings::FormCreate(TObject *Sender)
+{
+        LoadAttrs(ComboBox1->Items->Strings[ComboBox1->ItemIndex],ComboBox3->Items->Strings[ComboBox3->ItemIndex]);
+        //load Graphviz bin Folder
+
+        AnsiString binPath;
+        AnsiString FileName=ExtractFilePath( Application->ExeName)+"Settings.ini" ;
+        TIniFile *ini;
+        ini = new TIniFile(FileName);
+        preprocflag=false;
+        if(FileExists(FileName))
+                binPath=ini->ReadString( "Settings", "binPath", "");
+        if(!FileExists(binPath+"\\dot.exe"))
+        {
+                binPath=frmMain->ReadFromRegistry("\\SOFTWARE\\ATT\\GRAPHVIZ","InstallPath")+"\\bin";
+                if(!FileExists(binPath+"\\dot.exe"))
+                {
+                        if(!FileExists(ExtractFilePath(Application->ExeName) + "\\dot.exe"))
+                        {
+                                ShowMessage ("Gvedit could not locate dot.exe.please modify graphviz bin folder manually");
+                        }
+                        else
+                                Edit2->Text=ExtractFilePath(Application->ExeName);
+                }
+                else
+                        Edit2->Text=binPath;
+        }
+        else
+                Edit2->Text=binPath;
+
+
+        //get default settings
+        preprocflag=false;
+        if(FileExists(FileName))
+        {
+                ComboBox1->ItemIndex=ini->ReadInteger( "Settings", "Layout", 0);
+                ComboBox2->ItemIndex=ini->ReadInteger( "Settings", "Output", 0);
+                CheckBox1->Checked=(ini->ReadInteger( "Settings", "Preview", 0) > 0);
+                SD1->InitialDir=ini->ReadString( "Settings", "InitialDir1", "");
+                SD2->InitialDir=ini->ReadString( "Settings", "InitialDir2", "");
+                OD1->InitialDir=ini->ReadString( "Settings", "InitialDir3", "");
+        }
+        //fix graphviz fontconfig file
+        AnsiString path= ExtractFilePath(Application->ExeName);
+        path=StringReplace(path,"\\bin","\\etc\\fonts",TReplaceFlags () << rfReplaceAll);
+        path=path+"fonts.conf";
+        if(!ini->ReadBool("Settings","init",false))
+        {
+                if(FileExists(path))
+                {
+
+                               char a[512];
+                       char bf[512];
+                       char fontFolder[512];
+                           LPITEMIDLIST pidl;
+                    if (SHGetSpecialFolderLocation(Handle,CSIDL_FONTS,&pidl) == NOERROR)
+                    {
+                        SHGetPathFromIDList(pidl,fontFolder)  ;
+                        Memo2->Lines->LoadFromFile(path);
+                        Memo2->Text=StringReplace(Memo2->Text,"#WINDOWSFONTDIR#",AnsiString(fontFolder),TReplaceFlags () << rfReplaceAll);
+                        Memo2->Lines->SaveToFile(path);
+                        ini->WriteBool("Settings","init",true);
+                    }
+                }
+        }
+        delete ini;
+
+
+
+
+
+
+}
+//---------------------------------------------------------------------------
+
+
+void __fastcall TfrmSettings::ComboBox3Change(TObject *Sender)
+{
+        LoadAttrs(ComboBox1->Items->Strings[ComboBox1->ItemIndex],ComboBox3->Items->Strings[ComboBox3->ItemIndex]);
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmSettings::Button1Click(TObject *Sender)
+{
+        //set extensions for save dialog
+       // JPG|*.jpg|JPEG|*.jpeg
+        SD1->Filter=ComboBox2->Items->Strings[ComboBox2->ItemIndex]+" Files |*."+ComboBox2->Items->Strings[ComboBox2->ItemIndex]+"|All Files|*.*";
+        if(frmMain->ActiveMDIChild)
+                SD1->FileName=ChangeFileExt(((TfrmEditor*)frmMain->ActiveMDIChild)->FileName,"."+ComboBox2->Items->Strings[ComboBox2->ItemIndex]);
+        if(SD1->Execute())
+        {
+                Edit1->Text=SD1->FileName;
+
+        }
+}
+//---------------------------------------------------------------------------
+
+
+void __fastcall TfrmSettings::ComboBox2Change(TObject *Sender)
+{
+        AnsiString FileExtension;
+        if(frmMain->ActiveMDIChild)
+        {
+                FileExtension="."+ComboBox2->Items->Strings[ComboBox2->ItemIndex];
+                if(FileExtension.UpperCase().Trim()==".XDOT")
+                        FileExtension=".dot";
+                if(FileExtension.UpperCase().Trim()==".PS2")
+                        FileExtension=".ps";
+                Edit1->Text=ChangeFileExt(Edit1->Text,FileExtension);
+        }
+        //set cairo check box ,enable disable according to file type
+        //cairo supports
+        if(
+        (ComboBox2->Items->Strings[ComboBox2->ItemIndex].UpperCase()=="PS")
+                        ||
+        (ComboBox2->Items->Strings[ComboBox2->ItemIndex].UpperCase()=="PS2")
+                        ||
+        (ComboBox2->Items->Strings[ComboBox2->ItemIndex].UpperCase()=="PNG")
+                        ||
+        (ComboBox2->Items->Strings[ComboBox2->ItemIndex].UpperCase()=="PDF")
+                        ||
+        (ComboBox2->Items->Strings[ComboBox2->ItemIndex].UpperCase()=="SVG") )
+        {
+                CheckBox2->Enabled=true;
+
+        }
+        else
+                CheckBox2->Enabled=false;
+
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmSettings::BitBtn1Click(TObject *Sender)
+{
+        SD1->Filter="";
+        if(SD1->Execute())
+        {
+                try
+                {
+                        Memo1->Lines->SaveToFile(SD1->FileName);
+                }
+                catch(...)
+                {
+                        ShowMessage ("File could not be saved! , make sure that disk is not read only");
+                }
+
+        }
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmSettings::BitBtn3Click(TObject *Sender)
+{
+        if(OD1->Execute())
+        {
+                try
+                {
+                        Memo1->Lines->LoadFromFile(OD1->FileName);
+                }
+                catch(...)
+                {
+                        ShowMessage ("File could not be opened!");
+                }
+        }
+}
+//---------------------------------------------------------------------------
+
+bool runproc(AnsiString szExeName,AnsiString szCommandLine,AnsiString tempFile,AnsiString engine,AnsiString outFile,bool silent)
+{
+/*        AnsiString tempfile="";
+        if (!preprocflag)
+                tempfile="\""+ExtractFilePath(Application->ExeName)+"__temp.dot"+"\""; //to replace with real name in error messages
+        else
+                tempfile="\""+ExtractFilePath(Application->ExeName)+"__temp2.dot"+"\""; //to replace with real name in error messages*/
+
+        szCommandLine =szCommandLine+" "+tempFile;
+        AnsiString szTempFile="tempfile.txt";
+        SECURITY_ATTRIBUTES sa = { sizeof(SECURITY_ATTRIBUTES) };
+        sa.bInheritHandle = TRUE;
+        //creating pipe
+        HANDLE hStdoutRd, hStdoutWr;
+        if ( !CreatePipe ( &hStdoutRd, &hStdoutWr, &sa, 0 ))
+                return 0;
+
+        STARTUPINFO si = { sizeof(STARTUPINFO) };
+        PROCESS_INFORMATION pi;
+        si.dwFlags = STARTF_USESTDHANDLES+STARTF_USESHOWWINDOW;
+        si.hStdError = hStdoutWr;
+        si.wShowWindow=SW_HIDE ;
+        if ( !CreateProcess ( szExeName.c_str(), szCommandLine.c_str(), NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS,
+                          NULL, NULL, &si, &pi ))
+                return 0;
+
+        CloseHandle ( hStdoutWr );
+        //create temp file
+        if (!silent)     //for preview we dont need stdioerr
+                return 0;
+        HANDLE hTempFile;
+        hTempFile = CreateFile ( szTempFile.c_str(), GENERIC_WRITE, 0, NULL,
+                             CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
+        if ( INVALID_HANDLE_VALUE == hTempFile )
+                return 0;
+        BYTE buff[1024];
+        DWORD dwRead, dwWritten;
+        //write to temp file
+        while ( ReadFile ( hStdoutRd, buff, countof(buff), &dwRead, NULL ) && dwRead != 0 )
+                WriteFile ( hTempFile, buff, dwRead, &dwWritten, NULL );
+
+        CloseHandle(hStdoutRd);
+        CloseHandle(hTempFile);
+        //now read the ouptput and delete the temp file
+        if (FileExists(szTempFile))
+        {
+                TStringList* tmpString=new TStringList();
+                tmpString->LoadFromFile(szTempFile);
+                if(tmpString->Text.Trim() !="")
+                {
+                        tmpString->Text=StringReplace(tmpString->Text,tempFile,((TfrmEditor*)frmMain->ActiveMDIChild)->FileName,TReplaceFlags () << rfReplaceAll);
+                        frmMain->Memo1->Text=frmMain->Memo1->Text+tmpString->Text;
+                        frmMain->Memo1->SelStart=frmMain->Memo1->Text.Length()-1;
+                        SendMessage(frmMain->Memo1->Handle, EM_SCROLLCARET,0,0);
+                        DeleteFile(szTempFile);
+
+                }
+                else
+                {
+                        frmMain->Memo1->Lines->Add(engine+" has created "+outFile+" sucessfully.");
+                        frmMain->Memo1->SelStart=frmMain->Memo1->Text.Length()-1;
+                        SendMessage(frmMain->Memo1->Handle, EM_SCROLLCARET,0,0);
+                        DeleteFile(szTempFile);
+                }
+                if (preprocflag)
+                        DeleteFile(tempFile);
+                   delete tmpString;
+        }
+}
+
+void __fastcall TfrmSettings::Button3Click(TObject *Sender)
+{
+/*
+WIN32 API for getting temporary file folder
+
+DWORD WINAPI GetTempPath(
+  __in   DWORD nBufferLength,
+  __out  LPTSTR lpBuffer
+
+)
+
+WIN32 get unique file name
+UINT WINAPI GetTempFileName(
+  __in   LPCTSTR lpPathName,
+  __in   LPCTSTR lpPrefixString,
+  __in   UINT uUnique,
+  __out  LPTSTR lpTempFileName
+);
+
+
+*/
+
+        char tempPath[1024];
+        char tempFileIn[1024];
+        char tempFileOut[1024];
+        GetTempPath(1024,tempPath);
+        AnsiString tempFolder=AnsiString(tempPath);
+        AnsiString filter="";
+        if((CheckBox2->Enabled) && (CheckBox2->Checked))
+                filter=":cairo";
+
+        //need to create a temp dot file to get the final changes without saving it
+//        AnsiString tempfile="\""+ExtractFilePath(Application->ExeName)+"__temp.dot"+"\"";
+//        ((TfrmEditor*)frmMain->ActiveMDIChild)->R->Lines->SaveToFile(ExtractFilePath(Application->ExeName)+"__temp.dot");
+        AnsiString tempfile=tempFolder+"__temp.dot";
+        ((TfrmEditor*)frmMain->ActiveMDIChild)->R->Lines->SaveToFile(tempfile);
+
+        AnsiString ExeFileName=Edit2->Text+"\\"+ComboBox1->Items->Strings[ComboBox1->ItemIndex]+".exe";
+        AnsiString Params=" -T"+ComboBox2->Items->Strings[ComboBox2->ItemIndex]+filter;
+        AnsiString Params2=" -Tjpg";
+
+        Params=Params+" -o\""+Edit1->Text+"\""+" -K"+ComboBox1->Items->Strings[ComboBox1->ItemIndex];
+        Params2=Params2+" -o\""+tempFolder+"__temp.jpg\""+" -K"+ComboBox1->Items->Strings[ComboBox1->ItemIndex];
+        Memo1->Text=Memo1->Text.Trim();
+        for (int ind=0; ind < Memo1->Lines->Count;ind ++)
+        {
+                Params = Params +" " +Memo1->Lines->Strings[ind];
+                Params2 = Params2 +" " +Memo1->Lines->Strings[ind];
+
+        }
+
+//        ShowMessage(Params);
+//        ShowMessage(Params2);
+        frmMain->Memo1->Lines->Add("executing->"+ExeFileName+" "+Params);
+        preproc();
+
+//bool runproc(AnsiString szExeName,AnsiString szCommandLine,AnsiString tempFile,AnsiString engine,AnsiString outFile,bool silent)
+        runproc(ExeFileName,Params,tempFolder+"__temp.dot",ComboBox1->Items->Strings[ComboBox1->ItemIndex],Edit1->Text,true);
+        runproc(ExeFileName,Params2,tempFolder+"__temp.dot",ComboBox1->Items->Strings[ComboBox1->ItemIndex],Edit1->Text,false);
+
+
+
+        TfrmEditor* Ed=((TfrmEditor*)frmMain->ActiveMDIChild);
+        if (CheckBox1->Checked) //need preview
+        {
+                        if (!Ed->Editor) //if preview window is already created
+                        {
+                                Ed->Editor=new TfrmEditor(Application);
+                                Ed->Editor->Editor=Ed;
+                        }
+                        Ed->Editor->tempFolder=tempFolder;
+                        Ed->Editor->SwitchToPreview();
+                        Ed->Editor->Caption="Preview:"+Ed->FileName;
+                        Ed->Editor->Show();
+                        Ed->SB2->Click();
+                        Ed->SB1->Click();
+
+
+
+
+        }
+        //update Editor Setting values
+        Ed->Engine=ComboBox1->ItemIndex;
+        Ed->OutputFile=Edit1->Text;
+        Ed->OutputType=ComboBox2->ItemIndex;
+        Ed->Preview=CheckBox1->Checked;
+        Ed->Options=Memo1->Text;
+        //updating settings file
+        TIniFile *ini;
+        AnsiString FileName=ExtractFilePath( Application->ExeName)+"Settings.ini" ;
+        if(FileExists(FileName))
+        {
+                ini = new TIniFile(FileName);
+                ini->WriteInteger( "Settings", "Layout", ComboBox1->ItemIndex);
+                ini->WriteInteger( "Settings", "Output", ComboBox2->ItemIndex);
+                ini->WriteInteger( "Settings", "Preview", CheckBox1->Checked);
+                ini->WriteString( "Settings", "InitialDir1", SD1->InitialDir);
+                ini->WriteString( "Settings", "InitialDir2", SD2->InitialDir);
+                ini->WriteString( "Settings", "InitialDir3", OD1->InitialDir);
+                ini->WriteString( "Settings", "binPath", Edit2->Text);
+
+                 delete ini;
+        }
+
+        ModalResult=1;
+}
+
+
+
+
+void __fastcall TfrmSettings::Button4Click(TObject *Sender)
+{
+        ModalResult=-1;
+
+}
+//---------------------------------------------------------------------------
+
+
+
+void __fastcall TfrmSettings::Button5Click(TObject *Sender)
+{
+        preproc();
+}
+//---------------------------------------------------------------------------
+
+
+
+bool preproc()
+{
+        //check if anything defined
+
+
+
+        TIniFile *ini;
+        AnsiString FileName=ExtractFilePath( Application->ExeName)+"Settings.ini" ;
+        preprocflag=false;
+        if(FileExists(FileName))
+        {
+                ini = new TIniFile(FileName);
+                frmSettings->PreprocCmd=ini->ReadString( "Settings", "PreCmd", "");
+                frmSettings->PreprocPath=ini->ReadString( "Settings", "PrePath", "");;
+                 delete ini;
+        }
+        else
+        {
+                ShowMessage ("Settings.ini could not be located!");
+                return false;
+
+        }
+        if (frmSettings->PreprocCmd.Trim() =="")
+                return false;
+
+   SECURITY_ATTRIBUTES saAttr;
+   BOOL fSuccess;
+   AnsiString hinputfile=ExtractFilePath(Application->ExeName)+"__temp.dot";
+// Set the bInheritHandle flag so pipe handles are inherited.
+
+   if (!FileExists(hinputfile))
+   {
+      ErrorExit("Temporary file is missing!");
+      return 0;
+   }
+   saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
+   saAttr.bInheritHandle = TRUE;
+   saAttr.lpSecurityDescriptor = NULL;
+
+   if (! CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &saAttr, 0))
+      ErrorExit("Stdout pipe creation failed\n");
+
+// Ensure the read handle to the pipe for STDOUT is not inherited.
+
+   SetHandleInformation( hChildStdoutRd, HANDLE_FLAG_INHERIT, 0);
+
+// Create a pipe for the child process's STDIN.
+
+   if (! CreatePipe(&hChildStdinRd, &hChildStdinWr, &saAttr, 0))
+      ErrorExit("Stdin pipe creation failed\n");
+
+// Ensure the write handle to the pipe for STDIN is not inherited.
+
+   SetHandleInformation( hChildStdinWr, HANDLE_FLAG_INHERIT, 0);
+
+// Now create the child process.
+
+   fSuccess = CreateChildProcess();
+   if (! fSuccess)
+      ErrorExit("Create process failed with");
+
+// Get a handle to the parent's input file.
+
+   if (hinputfile.Trim() =="")
+      ErrorExit("Please specify an input file");
+
+   hInputFile = CreateFile(hinputfile.c_str(), GENERIC_READ, 0, NULL,
+      OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL);
+
+   if (hInputFile == INVALID_HANDLE_VALUE)
+      ErrorExit("CreateFile failed");
+
+// Write to pipe that is the standard input for a child process.
+
+   WriteToPipe();
+
+// Read from pipe that is the standard output for child process.
+
+   ReadFromPipe();
+
+   return 0;
+}
+BOOL CreateChildProcess()
+{
+        AnsiString Line=frmSettings->PreprocCmd;
+        Line=Line.Trim();
+        //need to parse the line assuming first word is the exe name , left is command line
+        int ind=1;
+        AnsiString szExeName="";
+        AnsiString szCommandLine="";
+        while ((ind <= Line.Length()) && (Line.SubString(ind,1)!=" "))
+        {
+                szExeName = szExeName + Line.SubString(ind,1);
+                ind ++;
+        }
+        //if preproc exe path is specified use it
+        if (frmSettings->PreprocPath.Trim() !="")
+                szExeName =frmSettings->PreprocPath+"\\"+szExeName;
+        //else use application path
+        else
+                szExeName =ExtractFilePath(Application->ExeName)+szExeName;
+        szCommandLine=Line.SubString (ind+1,Line.Length()-ind);
+
+   PROCESS_INFORMATION piProcInfo;
+   STARTUPINFO siStartInfo;
+   BOOL bFuncRetn = FALSE;
+
+// Set up members of the PROCESS_INFORMATION structure.
+
+   ZeroMemory( &piProcInfo, sizeof(PROCESS_INFORMATION) );
+
+// Set up members of the STARTUPINFO structure.
+
+   ZeroMemory( &siStartInfo, sizeof(STARTUPINFO) );
+   siStartInfo.cb = sizeof(STARTUPINFO);
+//   siStartInfo.hStdError = hChildStdoutWr;
+   siStartInfo.hStdOutput = hChildStdoutWr;
+   siStartInfo.hStdInput = hChildStdinRd;
+   siStartInfo.dwFlags |= STARTF_USESTDHANDLES;
+
+// Create the child process.
+
+   bFuncRetn = CreateProcess(szExeName.c_str(),
+      szCommandLine.c_str(),     // command line
+      NULL,          // process security attributes
+      NULL,          // primary thread security attributes
+      TRUE,          // handles are inherited
+      0,             // creation flags
+      NULL,          // use parent's environment
+      NULL,          // use parent's current directory
+      &siStartInfo,  // STARTUPINFO pointer
+      &piProcInfo);  // receives PROCESS_INFORMATION
+
+   if (bFuncRetn == 0)
+      ErrorExit("CreateProcess failed\n");
+   else
+   {
+      CloseHandle(piProcInfo.hProcess);
+      CloseHandle(piProcInfo.hThread);
+      return bFuncRetn;
+   }
+}
+
+VOID WriteToPipe(VOID)
+{
+   DWORD dwRead, dwWritten;
+   CHAR chBuf[BUFSIZE];
+
+// Read from a file and write its contents to a pipe.
+
+   for (;;)
+   {
+      if (! ReadFile(hInputFile, chBuf, BUFSIZE, &dwRead, NULL) ||
+         dwRead == 0) break;
+      if (! WriteFile(hChildStdinWr, chBuf, dwRead,
+         &dwWritten, NULL)) break;
+   }
+
+
+// Close the pipe handle so the child process stops reading.
+
+   if (! CloseHandle(hChildStdinWr))
+      ErrorExit("Close pipe failed\n");
+   if (! CloseHandle(hInputFile))
+      ErrorExit("Close pipe failed for temporary file\n");
+}
+
+VOID ReadFromPipe(VOID)
+{
+   DWORD dwRead, dwWritten;
+   CHAR chBuf[BUFSIZE];
+   preprocflag=false;
+// Close the write end of the pipe before reading from the
+// read end of the pipe.
+
+   if (!CloseHandle(hChildStdoutWr))
+      ErrorExit("Closing handle failed");
+
+// Read output from the child process, and write to parent's STDOUT.
+
+        TStringList* tmpString=new TStringList();
+   for (;;)
+   {
+      if( !ReadFile( hChildStdoutRd, chBuf, BUFSIZE, &dwRead,
+         NULL) || dwRead == 0) break;
+        tmpString->Text=tmpString->Text+chBuf;
+        /*      if (! WriteFile(hStdout, chBuf, dwRead, &dwWritten, NULL))
+         break;*/
+
+   }
+
+     if(!CloseHandle(hChildStdoutRd))
+              ErrorExit("Closing handle failed");
+
+     if (tmpString->Text.Trim() !="")
+     {
+        preprocflag=true;
+        tmpString->SaveToFile(ExtractFilePath(Application->ExeName)+"__temp2.dot");
+     }
+/*     if (frmSettings->CheckBox3->Checked)
+     {
+        TfrmEditor* Editor=new TfrmEditor(Application);
+        Editor->ChangeFileName("Untitled"+IntToStr(frmMain->FileSeq++),true);
+        Editor->R->Text=tmpString->Text;
+        Editor->modified=true;
+     }*/
+   delete tmpString;
+}
+
+VOID ErrorExit (LPSTR lpszMessage)
+{
+   ShowMessage(lpszMessage);
+}
+void __fastcall TfrmSettings::FormClose(TObject *Sender,
+      TCloseAction &Action)
+{
+/*        AnsiString tempfile="";
+                tempfile=ExtractFilePath(Application->ExeName)+"__temp.dot";
+                        DeleteFile(tempfile);
+                tempfile=ExtractFilePath(Application->ExeName)+"__temp2.dot";
+                        DeleteFile(tempfile);*/
+
+
+}
+//---------------------------------------------------------------------------
+
+
+
diff --git a/windows/gvedit/USettings.dfm b/windows/gvedit/USettings.dfm
new file mode 100644 (file)
index 0000000..e713172
--- /dev/null
@@ -0,0 +1,388 @@
+object frmSettings: TfrmSettings
+  Left = 362
+  Top = 229
+  BorderIcons = []
+  BorderStyle = bsSingle
+  Caption = 'Graphviz Settings'
+  ClientHeight = 465
+  ClientWidth = 372
+  Color = clBtnFace
+  DefaultMonitor = dmPrimary
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poDesktopCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel
+    Left = 0
+    Top = 0
+    Width = 372
+    Height = 465
+    Align = alClient
+    TabOrder = 0
+    DesignSize = (
+      372
+      465)
+    object Bevel2: TBevel
+      Left = 4
+      Top = 134
+      Width = 364
+      Height = 51
+      Anchors = [akLeft, akTop, akRight]
+    end
+    object Bevel1: TBevel
+      Left = 4
+      Top = 2
+      Width = 364
+      Height = 129
+      Anchors = [akLeft, akTop, akRight]
+    end
+    object Label1: TLabel
+      Left = 16
+      Top = 8
+      Width = 68
+      Height = 13
+      Caption = 'Layout Engine'
+    end
+    object Label2: TLabel
+      Left = 16
+      Top = 35
+      Width = 82
+      Height = 13
+      Caption = 'Output File Name'
+    end
+    object Label3: TLabel
+      Left = 16
+      Top = 58
+      Width = 78
+      Height = 13
+      Caption = 'Output File Type'
+    end
+    object Label4: TLabel
+      Left = 16
+      Top = 83
+      Width = 92
+      Height = 13
+      Caption = 'Graphviz Bin Folder'
+    end
+    object Label5: TLabel
+      Left = 7
+      Top = 139
+      Width = 31
+      Height = 13
+      Caption = 'Scope'
+    end
+    object Label6: TLabel
+      Left = 136
+      Top = 139
+      Width = 28
+      Height = 13
+      Caption = 'Name'
+    end
+    object Label7: TLabel
+      Left = 8
+      Top = 164
+      Width = 27
+      Height = 13
+      Caption = 'Value'
+    end
+    object ComboBox1: TComboBox
+      Left = 111
+      Top = 4
+      Width = 58
+      Height = 21
+      Style = csDropDownList
+      Anchors = [akLeft, akTop, akRight]
+      ItemHeight = 13
+      ItemIndex = 0
+      TabOrder = 0
+      Text = 'dot'
+      Items.Strings = (
+        'dot'
+        'neato'
+        'twopi'
+        'circo'
+        'fdp')
+    end
+    object Edit1: TEdit
+      Left = 111
+      Top = 31
+      Width = 201
+      Height = 21
+      Anchors = [akLeft, akTop, akRight]
+      TabOrder = 1
+    end
+    object ComboBox2: TComboBox
+      Left = 111
+      Top = 55
+      Width = 201
+      Height = 21
+      Style = csDropDownList
+      Anchors = [akLeft, akTop, akRight]
+      ItemHeight = 13
+      TabOrder = 2
+      OnChange = ComboBox2Change
+      Items.Strings = (
+        'cmapx'
+        'dot'
+        'xdot'
+        'fig'
+        'gd'
+        'gd2'
+        'gif'
+        'hpgl'
+        'imap'
+        'jpg'
+        'mif'
+        'mp'
+        'pcl'
+        'pic'
+        'plain'
+        'plain-ext'
+        'png'
+        'ps'
+        'ps2'
+        'svg'
+        'svgz'
+        'vrml'
+        'vtx'
+        'wbmp')
+    end
+    object Button1: TButton
+      Left = 317
+      Top = 31
+      Width = 45
+      Height = 21
+      Anchors = [akTop, akRight]
+      Caption = '...'
+      TabOrder = 3
+      OnClick = Button1Click
+    end
+    object CheckBox1: TCheckBox
+      Left = 40
+      Top = 107
+      Width = 145
+      Height = 17
+      Caption = 'Preview Output File'
+      Checked = True
+      State = cbChecked
+      TabOrder = 4
+    end
+    object Button3: TButton
+      Left = 293
+      Top = 438
+      Width = 75
+      Height = 25
+      Anchors = [akRight, akBottom]
+      Caption = 'OK'
+      Default = True
+      TabOrder = 5
+      OnClick = Button3Click
+    end
+    object Button4: TButton
+      Left = 213
+      Top = 438
+      Width = 75
+      Height = 25
+      Anchors = [akRight, akBottom]
+      Caption = 'Cancel'
+      TabOrder = 6
+      OnClick = Button4Click
+    end
+    object Edit2: TEdit
+      Left = 111
+      Top = 79
+      Width = 201
+      Height = 21
+      Anchors = [akLeft, akTop, akRight]
+      TabOrder = 7
+    end
+    object ComboBox3: TComboBox
+      Left = 43
+      Top = 136
+      Width = 85
+      Height = 21
+      Style = csDropDownList
+      ItemHeight = 13
+      ItemIndex = 0
+      TabOrder = 8
+      Text = 'Graph'
+      OnChange = ComboBox3Change
+      Items.Strings = (
+        'Graph'
+        'Node'
+        'Edge')
+    end
+    object ComboBox4: TComboBox
+      Left = 168
+      Top = 136
+      Width = 109
+      Height = 21
+      Style = csDropDownList
+      Anchors = [akLeft, akTop, akRight]
+      ItemHeight = 13
+      ItemIndex = 0
+      TabOrder = 9
+      Text = 'URL'
+      Items.Strings = (
+        'URL'
+        'bb'
+        'bgColor')
+    end
+    object Memo1: TMemo
+      Left = 4
+      Top = 188
+      Width = 364
+      Height = 246
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      TabOrder = 10
+    end
+    object Button2: TButton
+      Left = 285
+      Top = 137
+      Width = 75
+      Height = 22
+      Anchors = [akTop, akRight]
+      Caption = 'Add'
+      TabOrder = 11
+      OnClick = Button2Click
+    end
+    object Button6: TButton
+      Left = 285
+      Top = 161
+      Width = 75
+      Height = 22
+      Anchors = [akTop, akRight]
+      Caption = 'Help'
+      TabOrder = 12
+      OnClick = Button6Click
+    end
+    object Edit3: TEdit
+      Left = 42
+      Top = 160
+      Width = 233
+      Height = 21
+      Anchors = [akLeft, akTop, akRight]
+      TabOrder = 13
+    end
+    object BitBtn1: TBitBtn
+      Left = 90
+      Top = 438
+      Width = 41
+      Height = 25
+      Hint = 'Save Attributes'
+      Anchors = [akLeft, akBottom]
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 14
+      OnClick = BitBtn1Click
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000120B0000120B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+        333333FFFFFFFFFFFFF33000077777770033377777777777773F000007888888
+        00037F3337F3FF37F37F00000780088800037F3337F77F37F37F000007800888
+        00037F3337F77FF7F37F00000788888800037F3337777777337F000000000000
+        00037F3FFFFFFFFFFF7F00000000000000037F77777777777F7F000FFFFFFFFF
+        00037F7F333333337F7F000FFFFFFFFF00037F7F333333337F7F000FFFFFFFFF
+        00037F7F333333337F7F000FFFFFFFFF00037F7F333333337F7F000FFFFFFFFF
+        00037F7F333333337F7F000FFFFFFFFF07037F7F33333333777F000FFFFFFFFF
+        0003737FFFFFFFFF7F7330099999999900333777777777777733}
+      NumGlyphs = 2
+    end
+    object BitBtn2: TBitBtn
+      Left = 6
+      Top = 438
+      Width = 41
+      Height = 25
+      Hint = 'Clear Attributes'
+      Anchors = [akLeft, akBottom]
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 15
+      OnClick = BitBtn2Click
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000130B0000130B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0033333333B333
+        333B33FF33337F3333F73BB3777BB7777BB3377FFFF77FFFF77333B000000000
+        0B3333777777777777333330FFFFFFFF07333337F33333337F333330FFFFFFFF
+        07333337F33333337F333330FFFFFFFF07333337F33333337F333330FFFFFFFF
+        07333FF7F33333337FFFBBB0FFFFFFFF0BB37777F3333333777F3BB0FFFFFFFF
+        0BBB3777F3333FFF77773330FFFF000003333337F333777773333330FFFF0FF0
+        33333337F3337F37F3333330FFFF0F0B33333337F3337F77FF333330FFFF003B
+        B3333337FFFF77377FF333B000000333BB33337777777F3377FF3BB3333BB333
+        3BB33773333773333773B333333B3333333B7333333733333337}
+      NumGlyphs = 2
+    end
+    object BitBtn3: TBitBtn
+      Left = 48
+      Top = 438
+      Width = 41
+      Height = 25
+      Hint = 'Load from file'
+      Anchors = [akLeft, akBottom]
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 16
+      OnClick = BitBtn3Click
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000130B0000130B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0033333333B333
+        333B33FF33337F3333F73BB3777BB7777BB3377FFFF77FFFF77333B000000000
+        0B3333777777777777333330FFFFFFFF07333337F33333337F333330FFFFFFFF
+        07333337F3FF3FFF7F333330F00F000F07333337F77377737F333330FFFFFFFF
+        07333FF7F3FFFF3F7FFFBBB0F0000F0F0BB37777F7777373777F3BB0FFFFFFFF
+        0BBB3777F3FF3FFF77773330F00F000003333337F773777773333330FFFF0FF0
+        33333337F3FF7F37F3333330F08F0F0B33333337F7737F77FF333330FFFF003B
+        B3333337FFFF77377FF333B000000333BB33337777777F3377FF3BB3333BB333
+        3BB33773333773333773B333333B3333333B7333333733333337}
+      NumGlyphs = 2
+    end
+    object CheckBox2: TCheckBox
+      Left = 244
+      Top = 107
+      Width = 97
+      Height = 17
+      Caption = 'Apply cairo filter'
+      Enabled = False
+      TabOrder = 17
+    end
+    object Memo2: TMemo
+      Left = 336
+      Top = 72
+      Width = 177
+      Height = 57
+      Lines.Strings = (
+        'Memo2')
+      TabOrder = 18
+      Visible = False
+      WordWrap = False
+    end
+  end
+  object SD1: TSaveDialog
+    Filter = 'JPG|*.jpg|JPEG|*.jpeg'
+    Options = [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing]
+    OptionsEx = [ofExNoPlacesBar]
+    Left = 232
+    Top = 64
+  end
+  object SD2: TSaveDialog
+    Left = 256
+    Top = 64
+  end
+  object OD1: TOpenDialog
+    Left = 184
+    Top = 176
+  end
+end
diff --git a/windows/gvedit/USettings.h b/windows/gvedit/USettings.h
new file mode 100644 (file)
index 0000000..cfb0016
--- /dev/null
@@ -0,0 +1,152 @@
+//---------------------------------------------------------------------------
+
+#ifndef USettingsH
+#define USettingsH
+//---------------------------------------------------------------------------
+#include <Classes.hpp>
+#include <Controls.hpp>
+#include <StdCtrls.hpp>
+#include <Forms.hpp>
+#include <ExtCtrls.hpp>
+#include <Buttons.hpp>
+#include <Inifiles.hpp>
+#include <StrUtils.hpp>
+#include <Dialogs.hpp>
+struct prop
+{
+        AnsiString Name;
+        AnsiString Default;
+        AnsiString Scope;
+        AnsiString Engine;
+};
+
+//---------------------------------------------------------------------------
+class TfrmSettings : public TForm
+{
+__published:   // IDE-managed Components
+        TSaveDialog *SD1;
+        TSaveDialog *SD2;
+        TOpenDialog *OD1;
+        TPanel *Panel1;
+        TBevel *Bevel2;
+        TBevel *Bevel1;
+        TLabel *Label1;
+        TLabel *Label2;
+        TLabel *Label3;
+        TLabel *Label4;
+        TLabel *Label5;
+        TLabel *Label6;
+        TLabel *Label7;
+        TComboBox *ComboBox1;
+        TEdit *Edit1;
+        TComboBox *ComboBox2;
+        TButton *Button1;
+        TCheckBox *CheckBox1;
+        TButton *Button3;
+        TButton *Button4;
+        TEdit *Edit2;
+        TComboBox *ComboBox3;
+        TComboBox *ComboBox4;
+        TMemo *Memo1;
+        TButton *Button2;
+        TButton *Button6;
+        TEdit *Edit3;
+        TBitBtn *BitBtn1;
+        TBitBtn *BitBtn2;
+        TBitBtn *BitBtn3;
+        TCheckBox *CheckBox2;
+        TMemo *Memo2;
+        void __fastcall Button6Click(TObject *Sender);
+        void __fastcall Button2Click(TObject *Sender);
+        void __fastcall BitBtn2Click(TObject *Sender);
+        void __fastcall FormCreate(TObject *Sender);
+        void __fastcall ComboBox3Change(TObject *Sender);
+        void __fastcall Button1Click(TObject *Sender);
+        void __fastcall ComboBox2Change(TObject *Sender);
+        void __fastcall BitBtn1Click(TObject *Sender);
+        void __fastcall BitBtn3Click(TObject *Sender);
+        void __fastcall Button3Click(TObject *Sender);
+        void __fastcall Button4Click(TObject *Sender);
+        void __fastcall Button5Click(TObject *Sender);
+        void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
+private:       // User declarations
+public:                // User declarations
+        __fastcall TfrmSettings(TComponent* Owner);
+        int TfrmSettings::Init(bool silent=false);
+        bool LoadAttrs(AnsiString Engine,AnsiString Scope);
+        bool DeleteIniKeys(TComboBox*);
+        void TfrmSettings::RunDosInMemo(String DosApp,TMemo* AMemo) ;
+//        bool TfrmSettings::runproc(AnsiString szExeName,AnsiString szCommandLine,bool silent);
+        AnsiString PreprocCmd;
+        AnsiString PreprocPath;
+
+//        bool TfrmSettings::preproc(AnsiString Line,bool silent);
+
+};
+//---------------------------------------------------------------------------
+bool TfrmSettings::LoadAttrs(AnsiString Engine,AnsiString Scope)
+{
+        ComboBox4->Items->Clear();
+        TStringList* props=new TStringList();
+        props->LoadFromFile(ExtractFilePath(Application->ExeName)+"props.txt");
+        for(int ind=0;ind <props->Count;ind++)
+        {
+                int tokenindex=0;
+                AnsiString a="";
+                AnsiString DATA[4];
+                for(int ind2=1;ind2 <=props->Strings[ind].Length();ind2++)
+                {
+                        a=props->Strings[ind].SubString(ind2,1);
+                        if(a !=",")
+                        {
+                                if (a != "\"")
+                                        DATA[tokenindex]=DATA[tokenindex]+a;
+                        }
+                        else
+                                tokenindex++;
+                }
+
+                if (  AnsiContainsText(DATA[2],Scope) || AnsiContainsText(DATA[2],"ANY_ELEMENT"))
+                {
+                        if ( AnsiContainsText(DATA[3],Scope) || AnsiContainsText(DATA[3],"ALL_ENGINES"))
+                        {
+                                ComboBox4->Items->Add(DATA[0]);
+                        }
+                }
+
+
+        }
+        ComboBox4->ItemIndex=0;
+
+
+
+}
+bool TfrmSettings::DeleteIniKeys(TComboBox* A)
+{
+        bool go;
+        AnsiString a="";
+        AnsiString data="";
+        AnsiString data2="";
+        for (int ind=0;ind < A->Items->Count;ind++)
+        {
+                data=A->Items->Strings[ind];
+                go=false;
+                data2="";
+                for (int ind2=1;ind2 <=data.Length();ind2++)
+                {
+                        a=data.SubString(ind2,1);
+                        if (go)
+                                data2=data2+a;
+                        if(a=="=")
+                                go=true;
+                }
+                A->Items->Strings[ind]=data2;
+        }
+
+}
+
+
+
+extern PACKAGE TfrmSettings *frmSettings;
+//---------------------------------------------------------------------------
+#endif
diff --git a/windows/gvedit/Umain.cpp b/windows/gvedit/Umain.cpp
new file mode 100644 (file)
index 0000000..d3186b5
--- /dev/null
@@ -0,0 +1,412 @@
+//---------------------------------------------------------------------------
+
+#include <vcl.h>
+#pragma hdrstop
+
+#include "Umain.h"
+#include "UEditor.h"
+#include "Application.h"
+#include "USettings.h"
+#include "UAbout.h"
+#include "cgraph.h"
+#include "UPreProcess.h"
+//---------------------------------------------------------------------------
+#pragma package(smart_init)
+#pragma resource "*.dfm"
+
+#define SoftNAME        "GVexec"
+TfrmMain *frmMain;
+//---------------------------------------------------------------------------
+__fastcall TfrmMain::TfrmMain(TComponent* Owner)
+        : TForm(Owner)
+{
+}
+//---------------------------------------------------------------------------
+void __fastcall TfrmMain::New1Click(TObject *Sender)
+{
+        TfrmEditor* Editor=new TfrmEditor(Application);
+        Editor->ChangeFileName("Untitled"+IntToStr(FileSeq++),true);
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::Label1Click(TObject *Sender)
+{
+        this->ActiveMDIChild->Caption="this is active";
+
+}
+//---------------------------------------------------------------------------
+
+
+
+void __fastcall TfrmMain::FormCreate(TObject *Sender)
+{
+        FileSeq=1;
+        AnsiString g=SoftNAME;
+//        ODB->InitialDir=ReadFromRegistry("\\SOFTWARE\\ATT\\GRAPHVIZ\\","InstallPath")+"\\graphs";
+/*        if (!FileExists(ODB->InitialDir+"\\dot.exe"))
+        {
+                ShowMessage (ODB->InitialDir+"\\dot.exe");
+                ShowMessage ("Could not locate dot.exe , please make sure that dot.exe is in the same folder with GVedit");
+                Application->Terminate();
+        }*/
+//        ODB->InitialDir=ExtractFilePath(Application->ExeName);
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::Open1Click(TObject *Sender)
+{
+        if(ODB->Execute())
+        {
+                if(FileExists(ODB->FileName))
+                {
+                        TfrmEditor* Editor=new TfrmEditor(Application);
+                        Editor->ChangeFileName(ODB->FileName,false);
+                        FileSeq++;
+                        Editor->R->Lines->LoadFromFile(ODB->FileName);
+                        Editor->modified=false;
+                }
+        }
+
+}
+//---------------------------------------------------------------------------
+
+
+void __fastcall TfrmMain::SaveAs1Click(TObject *Sender)
+{
+        if(this->ActiveMDIChild)
+        {
+                TfrmEditor* Ed=((TfrmEditor*)this->ActiveMDIChild);
+                if(Ed->isEditor)
+                        Ed->SaveAs();
+                else
+                        Ed->Editor->SaveAs();
+
+        }
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::Save1Click(TObject *Sender)
+{
+        ToolButton5->Click();
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::ToolButton1Click(TObject *Sender)
+{
+        frmSettings->Init(true);
+}
+//---------------------------------------------------------------------------
+AnsiString TfrmMain::ReadFromRegistry(AnsiString RBKey,AnsiString RKey)
+{
+
+/*      example
+        RBKey="\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment"
+        RKey="Path"
+*/
+        AnsiString S="";
+        TRegistry *Registry = new TRegistry();
+        try
+        {
+            Registry->RootKey = HKEY_LOCAL_MACHINE;
+          // False because we do not want to create it if it doesn't exist
+            if(Registry->OpenKey(RBKey,false))
+            {
+                    S=Registry->ReadString(RKey);
+            }
+            Registry->CloseKey();
+            delete Registry;
+            return S;
+          }
+          catch(...)
+          {
+            delete Registry;
+            return S;
+          }
+}
+void __fastcall TfrmMain::Undo1Click(TObject *Sender)
+{
+
+        TfrmEditor *Ed=((TfrmEditor*)this->ActiveMDIChild);
+        if (Ed)
+        {
+                if (Ed->isEditor)
+                        Ed->R->Undo();
+        }
+}
+//---------------------------------------------------------------------------
+
+
+void __fastcall TfrmMain::Cut1Click(TObject *Sender)
+{
+        TfrmEditor *Ed=((TfrmEditor*)this->ActiveMDIChild);
+        if (Ed)
+        {
+                if (Ed->isEditor)
+                        Ed->R->CutToClipboard();
+        }
+
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::Copy1Click(TObject *Sender)
+{
+        TfrmEditor *Ed=((TfrmEditor*)this->ActiveMDIChild);
+        if (Ed)
+        {
+                if (Ed->isEditor)
+                        Ed->R->CopyToClipboard();
+        }
+
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::Paste1Click(TObject *Sender)
+{
+
+
+        TfrmEditor *Ed=((TfrmEditor*)this->ActiveMDIChild);
+        if (Ed)
+        {
+                if (Ed->isEditor)
+                        Ed->R->PasteFromClipboard();
+        }
+
+}
+//---------------------------------------------------------------------------
+
+
+void __fastcall TfrmMain::SaveCommandlogtofile1Click(TObject *Sender)
+{
+        if( (Memo1->Text.Trim() !="")&& (SDB->Execute()))
+                Memo1->Lines->SaveToFile(SDB->FileName);
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::Clear1Click(TObject *Sender)
+{
+        Memo1->Lines->Clear();
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::Cascade1Click(TObject *Sender)
+{
+        this->Cascade();
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::Tile1Click(TObject *Sender)
+{
+        this->Tile();
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::DotProcess1Click(TObject *Sender)
+{
+        frmSettings->Init(true);
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::Settings1Click(TObject *Sender)
+{
+        frmSettings->Init();
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::ToolButton2Click(TObject *Sender)
+{
+        frmSettings->Init();
+}
+//---------------------------------------------------------------------------
+
+
+void __fastcall TfrmMain::ToolButton3Click(TObject *Sender)
+{
+        TfrmEditor* Editor=new TfrmEditor(Application);
+        Editor->ChangeFileName("Untitled"+IntToStr(FileSeq++),true);
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::ToolButton6Click(TObject *Sender)
+{
+        if(ODB->Execute())
+        {
+                if(FileExists(ODB->FileName))
+                {
+                        TfrmEditor* Editor=new TfrmEditor(Application);
+                        Editor->ChangeFileName(ODB->FileName,false);
+                        FileSeq++;
+                        Editor->R->Lines->LoadFromFile(ODB->FileName);
+                        Editor->modified=false;
+                }
+        }
+
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::ToolButton5Click(TObject *Sender)
+{
+        if(this->ActiveMDIChild)
+        {
+                TfrmEditor* Ed=((TfrmEditor*)this->ActiveMDIChild);
+                if(Ed->isEditor)
+                        Ed->Save();
+                else
+                        Ed->Editor->Save();
+
+        }
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::AboutGraphvizEditor1Click(TObject *Sender)
+{
+        frmAbout->ShowModal();
+}
+//---------------------------------------------------------------------------
+void TfrmMain::UpdateMainForm()
+{
+        //Updates buttons enabled/disabled respectively to active editor
+        TfrmEditor* Ed=((TfrmEditor*)this->ActiveMDIChild);
+        if(Ed)
+        {
+                ToolButton1->Enabled=true;
+                ToolButton2->Enabled=true;
+
+                ToolButton5->Enabled=Ed->modified;
+                Save1->Enabled=Ed->modified;
+                SaveAs1->Enabled=Ed->modified;
+        }
+        else
+        {
+                ToolButton1->Enabled=false;
+                ToolButton2->Enabled=false;
+
+                ToolButton5->Enabled=false;
+                Save1->Enabled=false;
+                SaveAs1->Enabled=false;
+
+        }
+
+
+}
+
+void __fastcall TfrmMain::FormClose(TObject *Sender, TCloseAction &Action)
+{
+        //check all editors before closing
+        TfrmEditor* EdStart=((TfrmEditor*)this->ActiveMDIChild);
+        if(EdStart)
+        {
+                TfrmEditor* Ed=((TfrmEditor*)this->ActiveMDIChild);
+                do
+                {
+                        Ed->Close();
+                        Ed=((TfrmEditor*)this->ActiveMDIChild);
+                }while (Ed);
+
+
+        }
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::Find1Click(TObject *Sender)
+{
+        if(this->ActiveMDIChild)
+        {
+                TfrmEditor* Ed=((TfrmEditor*)this->ActiveMDIChild);
+                if(!Ed->isEditor)
+                        Ed=Ed->Editor;
+                Ed->FindDialog1->Position = Point(0, 0);
+                Ed->FindDialog1->Execute();
+
+        }
+
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::Replace1Click(TObject *Sender)
+{
+        if(this->ActiveMDIChild)
+        {
+                TfrmEditor* Ed=((TfrmEditor*)this->ActiveMDIChild);
+                if(!Ed->isEditor)
+                        Ed=Ed->Editor;
+                Ed->ReplaceDialog1->Position = Point(0, 0);
+                Ed->ReplaceDialog1->Execute();
+
+        }
+
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::Timer1Timer(TObject *Sender)
+{
+        static int ct=0;
+        Panel1->Color= (Panel1->Color==clRed)? clBtnFace:clRed;
+        ct++;
+        if(ct==10)
+        {
+                ct=0;
+                Timer1->Enabled=false;
+                Panel1->Color=clBtnFace;
+        }
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::Close1Click(TObject *Sender)
+{
+        if(this->ActiveMDIChild)
+        {
+                TfrmEditor* Ed=((TfrmEditor*)this->ActiveMDIChild);
+                if(Ed->isEditor)
+                        Ed->Close();
+                else
+                        Ed->Editor->Close();
+
+        }
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::Help2Click(TObject *Sender)
+{
+                AnsiString FileName="GVedit.html";
+                AnsiString action="open";
+                ShellExecute(NULL, action.c_str(),FileName.c_str(), NULL, NULL, SW_SHOW); //read me file, if exists it shows
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::Graphvizonnet1Click(TObject *Sender)
+{
+                AnsiString FileName="http://www.graphviz.org";
+                AnsiString action="open";
+                ShellExecute(NULL, action.c_str(),FileName.c_str(), NULL, NULL, SW_SHOW); //read me file, if exists it shows
+
+}
+//---------------------------------------------------------------------------
+
+
+void __fastcall TfrmMain::PreprocessorSettings1Click(TObject *Sender)
+{
+        frmPre->ShowModal();
+}
+//---------------------------------------------------------------------------
+
+
+void __fastcall TfrmMain::Button1Click(TObject *Sender)
+{
+        try{
+                Image1->Picture->LoadFromFile("c:/gg.jpg");
+        }
+        catch(...)
+        {
+                ;
+        }
+}
+//---------------------------------------------------------------------------
+
+
diff --git a/windows/gvedit/Umain.dfm b/windows/gvedit/Umain.dfm
new file mode 100644 (file)
index 0000000..9f428f3
--- /dev/null
@@ -0,0 +1,2536 @@
+object frmMain: TfrmMain
+  Left = 457
+  Top = 111
+  Width = 1138
+  Height = 855
+  Caption = 'GVedit v:0.99 beta'
+  Color = clGray
+  DefaultMonitor = dmPrimary
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsMDIForm
+  Menu = MainMenu1
+  OldCreateOrder = False
+  Position = poScreenCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Splitter1: TSplitter
+    Left = 0
+    Top = 710
+    Width = 1130
+    Height = 3
+    Cursor = crVSplit
+    Align = alBottom
+  end
+  object Image1: TImage
+    Left = 0
+    Top = 37
+    Width = 1130
+    Height = 673
+    Align = alClient
+    Center = True
+    Picture.Data = {
+      0A544A504547496D6167652C9E0000FFD8FFE000104A46494600010201004800
+      480000FFE111F94578696600004D4D002A000000080007011200030000000100
+      010000011A00050000000100000062011B0005000000010000006A0128000300
+      00000100020000013100020000001B0000007201320002000000140000008D87
+      69000400000001000000A4000000D00000004800000001000000480000000141
+      646F62652050686F746F73686F702043532057696E646F777300323030383A30
+      333A32352031303A35323A3433000000000003A001000300000001FFFF0000A0
+      02000400000001000000E5A0030004000000010000014D000000000000000601
+      0300030000000100060000011A0005000000010000011E011B00050000000100
+      00012601280003000000010002000002010004000000010000012E0202000400
+      000001000010C30000000000000048000000010000004800000001FFD8FFE000
+      104A46494600010201004800480000FFED000C41646F62655F434D0002FFEE00
+      0E41646F626500648000000001FFDB0084000C08080809080C09090C110B0A0B
+      11150F0C0C0F1518131315131318110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C
+      0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C010D0B0B0D0E0D100E0E10140E0E
+      0E14140E0E0E0E14110C0C0C0C0C11110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C
+      0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0CFFC000110800A0006E03012200
+      021101031101FFDD00040007FFC4013F00000105010101010101000000000000
+      00030001020405060708090A0B01000105010101010101000000000000000100
+      02030405060708090A0B1000010401030204020507060805030C330100021103
+      04211231054151611322718132061491A1B14223241552C16233347282D14307
+      259253F0E1F163733516A2B283264493546445C2A3743617D255E265F2B384C3
+      D375E3F3462794A485B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6E6F6
+      37475767778797A7B7C7D7E7F711000202010204040304050607070605350100
+      021103213112044151617122130532819114A1B14223C152D1F0332462E17282
+      92435315637334F1250616A2B283072635C2D2449354A317644555367465E2F2
+      B384C3D375E3F34694A485B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6
+      E6F62737475767778797A7B7C7FFDA000C03010002110311003F00BB2276F789
+      4B54277F3CE9D46CE3E6D522DAFF00D1F71F98125334D3E48563F1EA6873D800
+      9312D025507753A5CED94D3EAB8684319B8FE0122405D184A42C0D3B93C21D3D
+      FE496FF2596EEA02BFE7F15D537F79CC81F7C2B3564635E016341248D00050B0
+      938E405D0207EE9E26D1B63B26F5BF9283B59A7E8FB9FCD510D640FD1F63F9A8
+      B1DB67D51E0A41E0C79AA8E0CD9FCDF6FDD53C678707D711B0C8111A1F0FED24
+      96CA4A0D7169DAEF91F153494A49249253FFD0B07F9E7473B3FEFCD44DB648D4
+      723F34FF00E4D0DDFCF3A78F4FFEFCD528AE7E8BB91D9E884172AB6BFA9E543C
+      91481BDF1E13ECAC6BF9CB52BACD558AEA0DAD80186B5A40FF00AB599D28B6AB
+      DF55A21C3D8E1AC87349EC3F7969C5703DAEE0F67A6C36F1EACDCCFCF43E4A1C
+      1FDD5C8B769F7088FDD3FF009359B9F87F673F6BA0060DC05AC68DADD7E8D8D1
+      2EDBEEFA4B448AF69F6BB8F07AABD4DF5371DCC821CF226770D07BA7DFF04A5F
+      295B86FDC8D753AEBFA3FA481DD558CA98482FB8C9DBB481A12DDDEA6EFF00A8
+      52C1CD391B9B63D8CB2619541E2390E2EF7296262D37F4FAEBBD8E3BCB9ED203
+      A40713B5CC31FBA84EE9141C70D2E2DB9BB8FABB5D044CB7D46C7E6B7F39A88B
+      A0B67C3C72ADACD79371CD7EDE471FBA7FF24A156E665364887CB4E91C896F75
+      469CBB31DDE866825A47B2D3331F9A7F9752B966C1631ED074734830EF108AD6
+      E39A0882935C41DAEF91F153235507364781EC504B349458E9D0E8472A4929FF
+      D1B07F9E77F53FEFCD4ADDDB86FDBB3E2E8DDA6DDFB424EFE79DAC7E8F9FED35
+      48B993A5A791F9C114173F2B10DAEAEEA9CDAB20EE0771710F00BB66F76DDDBB
+      F36B7FFA3436F53C9A5E68BEA71B2BFA4D68DFA7F6372D1B6F65353AD36122B0
+      E74070D48074543A46C6D5765DB6EDB6C2771DD040E75FEBD8818EBD97C72111
+      A204A3DA4AFDA990F96D54DCF274835FFE62A3461DD93631F961ADACEADA35D6
+      08116EDFA0DFE42D2F635AE02D76BA905E4EA7FAC9ECB2B682E75C40041712E4
+      B87BEA9F774222046F7E1DFED5AF2FD910D97BB6B46A353FF914325FE8595C00
+      6B6B841249DA448F77E76D6228B2ADDB45C774C91BBB1F925FA32DDA6C241044
+      6E1C22C6872F1464D459606E8258FD65A7C56762D975369C0BE3735C3D2278FD
+      EDA3F90FFF0006B54FA6191EA1D1BDDD2A8F56A18FABD763E6DA60CCEBB7FF00
+      3077BD255B67ED9783FA4A9AE13CB4907FE94A2D795459003B6B8FE6BF43FF00
+      9155F1ADAF231EBB5CF21CFF00A4247D21A3927D353846F9E7B84956DA7820EE
+      1C8E7E0A7B86D954A9B5D400D2EDF5C7D12648FEA2B236EC3AFB7F82097FFFD2
+      B07F9F77F53FEFCD442E7FEE9E47E70433FCF3BB7B39FED354C8D7E99E47EEFF
+      00E4524347AD5CE6E0ED223D4781C83A097944A71AC6E2B181B0457A0DC2092C
+      6FD2FEA59B9EAAF5BD7ECD5EEDDB9CE3DBC5ACFCD0AFD97066F12E26B1A005BE
+      ED07D1F6FE6A2A484D925DAC11F465B1F937283C5E43C0101DA359BC1D4FE76E
+      77D0FEA3511CD21A7DE78FE4FF00E45317336B9FEA4B5A758DA623FB29298B3D
+      463C9D9EC1F41A1C091ABDFB3FE97B13D66C15301619DBA82F04CFF58FD249A5
+      C5C1AEDCDE4CCB08FEAE83E927690E6B4B6C9041820B483F824A636DDE957B9E
+      20110350B3CE7E564B9CDC5A4D8D9871E183F92E7BBDAA399BF2738636E2180B
+      593A68DDBEA3F85A62B631A2BACECAD901AC1B600FF354840801A03290E2D7A2
+      0126FC1CF6B3ABD6C0D657506B78AD8E023E03DAD4F57527B6CF4726B756FF00
+      DD7687FB3FBCB436FF002CF3FC9FEE41C9C5664D1E939D2E126B276FB5DF9A78
+      FF003934487E90047952ABB5A892E6486C82DE6429B40DAFF8859FD36D7BD963
+      1C6035A1C069C990795A2D1A3FE21230A9F0F88FC540DC6FC1FFD3B0EFE79DDF
+      D9C7F69AA6409FE6FB8ECDFEF503FCFBA3F73FEFCD4F7B5FE938970D208F6F70
+      6477450E6F5703ED189EDDA24F86BEF67EEAD07D2D76F966AE0E830C96C80C76
+      DD7F75AA875D0E6FD9EC27873C7111AB5FE256990F22777227E8F8FF00692531
+      2CAE4BFD11B88D5D0C9FBE533AA6124BAB2E27DB276F06346ED2A65AFDA7DDDB
+      F77FF324C45A4FD2EE3F37FDA92966B48E5BB8C9024306BAF3B5263618D0E66E
+      21BABA1BA9EE795287889777FDDF8FF2930DF03DDD8FE6FF00E64929CBCC071F
+      A832E2D865BB5CC988DCD01B63345A6D7576377B192D24766F979A8DF40BE835
+      DB0E61034DB0411F9CD3BBDAE6AA2303A8E3BBF55B05CC0740FF0063BFF20E4F
+      B120013463A03E08A236EAE8C0FF0047DFC1BFDE83917329A892C01D04364379
+      F154AACAEAB905ECA58C71ADDB5E778D0FDFEE526F4CBED707E6DA08E7D1AE48
+      3FD77FB7FE8240446A4DF8056BD031E98CFD1DB716CB1E036BE350D9DCEF77F2
+      96937970F308658F0DE4001BA00D81007C511BCBBE23F220664CF8BC6D40695E
+      0FFFD4B0EFE79D3A8F4F8E7F39A958CA9CD20B0804898679FC123FCF3BFA9FF7
+      E6A9BC3FC4723B1FFC922105CFEB2C6BF0C39ACDA596493B63476E6AB388FAEC
+      C5A5FB249AC490D9D40DAEEDFBCD52BE975F8D65248F78701A1E75733F3BF795
+      1E9598D6627A563834B5FB1A08249367D1035FDFDE92BA3A2457B4FE8CF1FB9F
+      EC4C457BBE81FA43F33FD8A643F69D471E07FF002499E1F3C8E4763FF92482A9
+      62D6188ACF27F33FD89806C0FD1F00FE67FB14E1E6351CF81F3FE5260D7C0F70
+      E0F63FF92494C4FA6587F47AEDE767FB157CF2E6E2DA6A6861FCFB1C08DADFE4
+      7B7E9BBE82B5B5E19C8FA3E07FF24B2FAB643EDB460530E7170DFB444BFF0036
+      BE5DF43E93D2B5521E92CB9B7B6D6D45F413E9D90018D34747F216B86B74FD19
+      EFF99FEC4B1B1CE3D2CA1A410C3A983A93F49DF4BF791007C0D477EC7FF24929
+      16C616CEC83B7F73FD88AD1ABC7C3F22687ECE47D1F03E1FD6526FF38FF88FC8
+      95A9FFD5B0EFE79D3C7A7FF7E6F829115F83B91FBEA27F9E747EE7FDF9AA64D9
+      E0DE4773FF00914505816B63D921F276970B08075E40858791819B538DBE9FA9
+      A97EEA818E777D08DCD5BE3D491A3793DCF9FF002553BF2AD739B4D03758E900
+      03034FA4F73BF71A84A55E3D912908FD760DA71A482413A8D3577F1299DE89E0
+      F7F177F7AAA3A61702EC8B5D6BA261AE2C68F906EFFF00A69DFD2EA6826973E9
+      74E8458E70F9B6C6942E7E1F6A3D7DA2DA68AF43EE324FEFF9A43D381F4B83FB
+      EA9D5764635A2AC88703AB1E3E8BA39FEA3DA8391D5326C79C5C3AC8B04B5CFE
+      5DFD91F46BFEBB9212BB07423A2A32BB04511B84BD473EAC761AA9939044132E
+      F603DCC9FA7FB8D51E99822969BF203BD77C6D690E968279747F85B13E174BF4
+      3F4D76DB2E896892434FEF7D1FD258AF3F7EE3A3791DCFFE453972FF00A3FE57
+      3FCB4C3D381F4BBFEFA7DEF9D0379F13FF0091481B20406F7EE7FF002292BF96
+      CB457B7874EDFE5A9B7F9C7FC47E450F7ECD63E8F89F0FEAA4D3EF7FCBF2254A
+      7FFFD6B0E8F59D3A0F4F9E3F39A9CBAAFF0049DC7E79FEF4C7F9F7473B3FEFCD
+      442EB3C0723F3BFF00314505197561A7F49AFBA3DE7C1DE6A9E1064BAC718258
+      00331A7E72BC5D66E1A0E7F7BE3FC959E77E059B9DA63D87D8F990D9FF000567
+      FDF136428C65DAEFEAC731AC65FBB77A776F6EAB6FF39D87E79FEF4EE356BEFE
+      E3F3CFF7A8B3203D9ED83A69EEFF006293EF8D4C73FBDFF98A3C437BFC57F146
+      AEC35F2856EA3474B9AF05BEE9F1DDFF00453E29AFD1049DA5C5DBA0C4C18D61
+      02EBDF976FD9B1B577E738FD1603F9CF3FBDFBAD576B6BAAA995B07B18D81EED
+      7E27DBF9C9B1D666436AE1591D6665D2B8478AC5D4EDFA5F9BFBE7FBD3BDD57E
+      FF0071F9E7CBCD489B4B7E88E3F7BFF314EE364447047E77FE62A464FE5B309A
+      E3E9F7FDF3FDE935D5C7D3D75FCF3FDEA60BF88EFF00BDFF0098A4D2F0043477
+      FCEFFCC5057F2D918755B7E9C9DBFBC7FBD4DA0FA8ED3B8FC89F759B381F47F7
+      BCBFAA9DBFCE3FE23F2256A7FFD7B0EFE79DAC7B39FED354896FFA5EE3BB7FF2
+      2A27F9E77F53FEFCD4F75A6AAACB7613E982F831AED1BBB391415F6CC10F3C9E
+      EDF3FE4A896B76ED7BF42D20B4EDE3CC16AE7E8A28C9C5BFA8751B2C743C3373
+      002439C019DAEFCDDCFF00E6DAAD61E6B717A6DCEA1EECAF45CC1B6D6EC6B7D4
+      3B36B3DEF7EDD37256AA6E9E9981AB9AE7566386581A3FCD48F4CC1FCEB2C789
+      1A3AD91FC10F1FA867DF4597FD8C1A8301A76BA0B9D3B5C773CFF32CF7B9059D
+      6EF19155791553B6D70DC297EE7B24ED1BFDCF6EEFE42143B2384760E8D75D55
+      00CA9C18C04C35A5807E44466A00164983A02DFF00C8ACEB7AAE60CDBF128C56
+      DAFA5CEDA64CC37E939FFE77E62A7D4335B9FD218F2C0C732F0D781AB64B1EE6
+      B9B3EEF7351B4D3B84B769FD2F6F16FF00E45392DD7F4BDC776FF72CCC7EA992
+      3228C3BB1854CB98D6D4493BA0B76D563BF3763DCD4EDEB4FF00B3653EEA5ACB
+      F19CD68AC13B492767BB77BFDAE6392553A6003A8B0C03CCB7FF00229816C0FD
+      2F8F76FF00E4563DB68B7A874EB322802EB031C08711B41B1DB3DBF9DFDB44C8
+      EAF9F8D60AECC5AB7389F4DA1C5CE209869D8CFA3BD253A72DDBFCE7E6F12DF0
+      F829B7F9C7FC47E4506B9FE8B4D95ED7960DC0104031EE6FD25369FD23F43DBF
+      224A7FFFD0B07F9F77F53FEFCD53731C6417120982081A83C8E145E1C1FBC377
+      CB769131DE7C0A8FBBFD037EF1FF0090494E733A4750C57B86065065561FA2E1
+      AE9F47F35EDDCDFDF526F45B1983750DB83ADC82C7BDC47B47A677FF005FF395
+      FF0077FA06FDE3FF00209A493FCCB7EF1FF91454D7BBA6DB6F4A6617AA03AB6B
+      758F69DA4983F9FB5CAA9E89984513652D38EE01AC630B4100B5DB9EE6FBACB5
+      FF00CA5A3AF6A47DE3FF0022A52EFF0040DFBC7FE412538E59936F5CCD6E2DBE
+      8DD2F3B88E41DA1CD46FD8761E9C31996B7D4759EABDC41DBED6BAB6B5BF9DF9
+      CB489747F30DFBC7FE41205D1FCC37EF1FF90494D3B7A75D665E2E57A8D0DC66
+      31AE04193B27E8FE6A8E5F45FB4677AFEA0153CB4DCC83B9C468EDB1EDF7B55D
+      9FF801F78FFC8A5EE274A07DE3FF0022929AF95816DDD471F283DA194384B48D
+      4C38D9EDDBED5559D23A95790725B9359BDE4936399B8EBCFD30E5A443A7F981
+      F78FFC8A73B8FF008068F98FFC824A5EB6DC2867A8FDD66C01E434004C6AEE11
+      1B3EA3F5EE3F2210DDFE807DE3FF0022880384BA3DC7B4FF00DF9253FFD9FFED
+      16CA50686F746F73686F7020332E30003842494D04040000000000071C020000
+      020002003842494D0425000000000010460CF28926B856DAB09C01A1B0A79077
+      3842494D03ED000000000010004800000001000100480000000100013842494D
+      042600000000000E000000000000000000003F8000003842494D040D00000000
+      00040000005A3842494D04190000000000040000001E3842494D03F300000000
+      0009000000000000000001003842494D040A00000000000100003842494D2710
+      00000000000A000100000000000000013842494D03F5000000000048002F6666
+      0001006C66660006000000000001002F6666000100A1999A0006000000000001
+      003200000001005A00000006000000000001003500000001002D000000060000
+      000000013842494D03F80000000000700000FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFF03E800000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      FFFFFFFF03E800000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+      03E800000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E80000
+      3842494D040000000000000200013842494D0402000000000004000000003842
+      494D0408000000000010000000010000024000000240000000003842494D041E
+      000000000004000000003842494D041A00000000033D00000006000000000000
+      00000000014D000000E500000004004C006F0067006F00000001000000000000
+      00000000000000000000000000010000000000000000000000E50000014D0000
+      0000000000000000000000000000010000000000000000000000000000000000
+      000010000000010000000000006E756C6C0000000200000006626F756E64734F
+      626A6300000001000000000000526374310000000400000000546F70206C6F6E
+      6700000000000000004C6566746C6F6E67000000000000000042746F6D6C6F6E
+      670000014D00000000526768746C6F6E67000000E500000006736C6963657356
+      6C4C73000000014F626A6300000001000000000005736C696365000000120000
+      0007736C69636549446C6F6E67000000000000000767726F757049446C6F6E67
+      00000000000000066F726967696E656E756D0000000C45536C6963654F726967
+      696E0000000D6175746F47656E6572617465640000000054797065656E756D00
+      00000A45536C6963655479706500000000496D672000000006626F756E64734F
+      626A6300000001000000000000526374310000000400000000546F70206C6F6E
+      6700000000000000004C6566746C6F6E67000000000000000042746F6D6C6F6E
+      670000014D00000000526768746C6F6E67000000E50000000375726C54455854
+      000000010000000000006E756C6C54455854000000010000000000004D736765
+      5445585400000001000000000006616C74546167544558540000000100000000
+      000E63656C6C54657874497348544D4C626F6F6C010000000863656C6C546578
+      745445585400000001000000000009686F727A416C69676E656E756D0000000F
+      45536C696365486F727A416C69676E0000000764656661756C74000000097665
+      7274416C69676E656E756D0000000F45536C69636556657274416C69676E0000
+      000764656661756C740000000B6267436F6C6F7254797065656E756D00000011
+      45536C6963654247436F6C6F7254797065000000004E6F6E6500000009746F70
+      4F75747365746C6F6E67000000000000000A6C6566744F75747365746C6F6E67
+      000000000000000C626F74746F6D4F75747365746C6F6E67000000000000000B
+      72696768744F75747365746C6F6E6700000000003842494D042800000000000C
+      000000013FF00000000000003842494D041100000000000101003842494D0414
+      0000000000040000001E3842494D040C0000000010DF000000010000006E0000
+      00A00000014C0000CF80000010C300180001FFD8FFE000104A46494600010201
+      004800480000FFED000C41646F62655F434D0002FFEE000E41646F6265006480
+      00000001FFDB0084000C08080809080C09090C110B0A0B11150F0C0C0F151813
+      1315131318110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C
+      0C0C0C0C0C0C0C0C0C010D0B0B0D0E0D100E0E10140E0E0E14140E0E0E0E1411
+      0C0C0C0C0C11110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C
+      0C0C0C0C0C0C0C0C0C0CFFC000110800A0006E03012200021101031101FFDD00
+      040007FFC4013F00000105010101010101000000000000000300010204050607
+      08090A0B0100010501010101010100000000000000010002030405060708090A
+      0B1000010401030204020507060805030C330100021103042112310541516113
+      22718132061491A1B14223241552C16233347282D14307259253F0E1F1637335
+      16A2B283264493546445C2A3743617D255E265F2B384C3D375E3F3462794A485
+      B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6E6F637475767778797A7B7
+      C7D7E7F711000202010204040304050607070605350100021103213112044151
+      617122130532819114A1B14223C152D1F0332462E1728292435315637334F125
+      0616A2B283072635C2D2449354A317644555367465E2F2B384C3D375E3F34694
+      A485B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6E6F627374757677787
+      97A7B7C7FFDA000C03010002110311003F00BB2276F7894B54277F3CE9D46CE3
+      E6D522DAFF00D1F71F98125334D3E48563F1EA6873D8009312D025507753A5CE
+      D94D3EAB8684319B8FE0122405D184A42C0D3B93C21D3DFE496FF2596EEA02BF
+      E7F15D537F79CC81F7C2B3564635E016341248D00050B0938E405D0207EE9E26
+      D1B63B26F5BF9283B59A7E8FB9FCD510D640FD1F63F9A8B1DB67D51E0A41E0C7
+      9AA8E0CD9FCDF6FDD53C678707D711B0C8111A1F0FED2496CA4A0D7169DAEF91
+      F153494A49249253FFD0B07F9E7473B3FEFCD44DB648D4723F34FF00E4D0DDFC
+      F3A78F4FFEFCD528AE7E8BB91D9E884172AB6BFA9E543C91481BDF1E13ECAC6B
+      F9CB52BACD558AEA0DAD80186B5A40FF00AB599D28B6ABDF55A21C3D8E1AC873
+      49EC3F7969C5703DAEE0F67A6C36F1EACDCCFCF43E4A1C1FDD5C8B769F7088FD
+      D3FF009359B9F87F673F6BA0060DC05AC68DADD7E8D8D12EDBEEFA4B448AF69F
+      6BB8F07AABD4DF5371DCC821CF226770D07BA7DFF04A5F295B86FDC8D753AEBF
+      A3FA481DD558CA98482FB8C9DBB481A12DDDEA6EFF00A852C1CD391B9B63D8CB
+      2619541E2390E2EF7296262D37F4FAEBBD8E3BCB9ED203A40713B5CC31FBA84E
+      E9141C70D2E2DB9BB8FABB5D044CB7D46C7E6B7F39A88BA0B67C3C72ADACD793
+      71CD7EDE471FBA7FF24A156E665364887CB4E91C896F75469CBB31DDE866825A
+      47B2D3331F9A7F9752B966C1631ED074734830EF108AD6E39A0882935C41DAEF
+      91F153235507364781EC504B349458E9D0E8472A4929FFD1B07F9E77F53FEFCD
+      4ADDDB86FDBB3E2E8DDA6DDFB424EFE79DAC7E8F9FED3548B993A5A791F9C114
+      173F2B10DAEAEEA9CDAB20EE0771710F00BB66F76DDDBBF36B7FFA3436F53C9A
+      5E68BEA71B2BFA4D68DFA7F6372D1B6F65353AD36122B0E74070D48074543A46
+      C6D5765DB6EDB6C2771DD040E75FEBD8818EBD97C72111A204A3DA4AFDA990F9
+      6D54DCF274835FFE62A3461DD93631F961ADACEADA35D608116EDFA0DFE42D2F
+      635AE02D76BA905E4EA7FAC9ECB2B682E75C40041712E4B87BEA9F774222046F
+      7E1DFED5AF2FD910D97BB6B46A353FF914325FE8595C006B6B841249DA448F77
+      E76D6228B2ADDB45C774C91BBB1F925FA32DDA6C2410446E1C22C6872F1464D4
+      59606E8258FD65A7C56762D975369C0BE3735C3D2278FDEDA3F90FFF0006B54F
+      A6191EA1D1BDDD2A8F56A18FABD763E6DA60CCEBB7FF003077BD255B67ED9783
+      FA4A9AE13CB4907FE94A2D795459003B6B8FE6BF43FF009155F1ADAF231EBB5C
+      F21CFF00A4247D21A3927D353846F9E7B84956DA7820EE1C8E7E0A7B86D954A9
+      B5D400D2EDF5C7D12648FEA2B236EC3AFB7F82097FFFD2B07F9F77F53FEFCD44
+      2E7FEE9E47E70433FCF3BB7B39FED354C8D7E99E47EEFF00E4524347AD5CE6E0
+      ED223D4781C83A097944A71AC6E2B181B0457A0DC2092C6FD2FEA59B9EAAF5BD
+      7ECD5EEDDB9CE3DBC5ACFCD0AFD97066F12E26B1A005BEED07D1F6FE6A2A484D
+      925DAC11F465B1F937283C5E43C0101DA359BC1D4FE76E77D0FEA3511CD21A7D
+      E78FE4FF00E45317336B9FEA4B5A758DA623FB29298B3D463C9D9EC1F41A1C09
+      1ABDFB3FE97B13D66C15301619DBA82F04CFF58FD249A5C5C1AEDCDE4CCB08FE
+      AE83E927690E6B4B6C9041820B483F824A636DDE957B9E20110350B3CE7E564B
+      9CDC5A4D8D9871E183F92E7BBDAA399BF2738636E2180B593A68DDBEA3F85A62
+      B631A2BACECAD901AC1B600FF354840801A03290E2D7A20126FC1CF6B3ABD6C0
+      D657506B78AD8E023E03DAD4F57527B6CF4726B756FF00DD7687FB3FBCB436FF
+      002CF3FC9FEE41C9C5664D1E939D2E126B276FB5DF9A78FF003934487E900479
+      52ABB5A892E6486C82DE6429B40DAFF8859FD36D7BD9631C6035A1C069C99079
+      5A2D1A3FE21230A9F0F88FC540DC6FC1FFD3B0EFE79DDFD9C7F69AA6409FE6FB
+      8ECDFEF503FCFBA3F73FEFCD4F7B5FE938970D208F6F706477450E6F5703ED18
+      9EDDA24F86BEF67EEAD07D2D76F966AE0E830C96C80C76DD7F75AA875D0E6FD9
+      EC27873C7111AB5FE256990F22777227E8F8FF006925312CAE4BFD11B88D5D0C
+      9FBE533AA6124BAB2E27DB276F06346ED2A65AFDA7DDDBF77FF324C45A4FD2EE
+      3F37FDA92966B48E5BB8C9024306BAF3B5263618D0E66E21BABA1BA9EE795287
+      889777FDDF8FF2930DF03DDD8FE6FF00E64929CBCC071FA832E2D865BB5CC988
+      DCD01B63345A6D7576377B192D24766F979A8DF40BE835DB0E61034DB0411F9C
+      D3BBDAE6AA2303A8E3BBF55B05CC0740FF0063BFF20E4FB120013463A03E08A2
+      36EAE8C0FF0047DFC1BFDE83917329A892C01D04364379F154AACAEAB905ECA5
+      8C71ADDB5E778D0FDFEE526F4CBED707E6DA08E7D1AE483FD77FB7FE8240446A
+      4DF8056BD031E98CFD1DB716CB1E036BE350D9DCEF77F296937970F308658F0D
+      E4001BA00D81007C511BCBBE23F220664CF8BC6D40695E0FFFD4B0EFE79D3A8F
+      4F8E7F39A958CA9CD20B0804898679FC123FCF3BFA9FF7E6A9BC3FC4723B1FFC
+      922105CFEB2C6BF0C39ACDA596493B63476E6AB388FAECC5A5FB249AC490D9D4
+      0DAEEDFBCD52BE975F8D65248F78701A1E75733F3BF7951E9598D6627A563834
+      B5FB1A08249367D1035FDFDE92BA3A2457B4FE8CF1FB9FEC4C457BBE81FA43F3
+      3FD8A643F69D471E07FF002499E1F3C8E4763FF92482A962D6188ACF27F33FD8
+      9806C0FD1F00FE67FB14E1E6351CF81F3FE5260D7C0F70E0F63FF92494C4FA65
+      87F47AEDE767FB157CF2E6E2DA6A6861FCFB1C08DADFE47B7E9BBE82B5B5E19C
+      8FA3E07FF24B2FAB643EDB460530E7170DFB444BFF0036BE5DF43E93D2B5521E
+      92CB9B7B6D6D45F413E9D90018D34747F216B86B74FD19EFF99FEC4B1B1CE3D2
+      CA1A410C3A983A93F49DF4BF791007C0D477EC7FF2492916C616CEC83B7F73FD
+      88AD1ABC7C3F22687ECE47D1F03E1FD6526FF38FF88FC895A9FFD5B0EFE79D3C
+      7A7FF7E6F829115F83B91FBEA27F9E747EE7FDF9AA64D9E0DE4773FF00914505
+      816B63D921F276970B08075E40858791819B538DBE9FA9A97EEA818E777D08DC
+      D5BE3D491A3793DCF9FF002553BF2AD739B4D03758E90003034FA4F73BF71A84
+      A55E3D912908FD760DA71A482413A8D3577F1299DE89E0F7F177F7AAA3A61702
+      EC8B5D6BA261AE2C68F906EFFF00A69DFD2EA6826973E974E8458E70F9B6C694
+      2E7E1F6A3D7DA2DA68AF43EE324FEFF9A43D381F4B83FBEA9D5764635A2AC887
+      03AB1E3E8BA39FEA3DA8391D5326C79C5C3AC8B04B5CFE5DFD91F46BFEBB9212
+      BB07423A2A32BB04511B84BD473EAC761AA9939044132EF603DCC9FA7FB8D51E
+      99822969BF203BD77C6D690E968279747F85B13E174BF43F4D76DB2E89689243
+      4FEF7D1FD258AF3F7EE3A3791DCFFE453972FF00A3FE573FCB4C3D381F4BBFEF
+      A7DEF9D0379F13FF0091481B20406F7EE7FF002292BF96CB457B7874EDFE5A9B
+      7F9C7FC47E450F7ECD63E8F89F0FEAA4D3EF7FCBF2254A7FFFD6B0E8F59D3A0F
+      4F9E3F39A9CBAAFF0049DC7E79FEF4C7F9F7473B3FEFCD442EB3C0723F3BFF00
+      314505197561A7F49AFBA3DE7C1DE6A9E1064BAC71825800331A7E72BC5D66E1
+      A0E7F7BE3FC959E77E059B9DA63D87D8F990D9FF000567FDF136428C65DAEFEA
+      C731AC65FBB77A776F6EAB6FF39D87E79FEF4EE356BEFEE3F3CFF7A8B3203D9E
+      D83A69EEFF006293EF8D4C73FBDFF98A3C437BFC57F146AEC35F2856EA3474B9
+      AF05BEE9F1DDFF00453E29AFD1049DA5C5DBA0C4C18D6102EBDF976FD9B1B577
+      E738FD1603F9CF3FBDFBAD576B6BAAA995B07B18D81EED7E27DBF9C9B1D66643
+      6AE1591D6665D2B8478AC5D4EDFA5F9BFBE7FBD3BDD57EFF0071F9E7CBCD489B
+      4B7E88E3F7BFF314EE364447047E77FE62A464FE5B309AE3E9F7FDF3FDE935D5
+      C7D3D75FCF3FDEA60BF88EFF00BDFF0098A4D2F0043477FCEFFCC5057F2D9187
+      55B7E9C9DBFBC7FBD4DA0FA8ED3B8FC89F759B381F47F7BCBFAA9DBFCE3FE23F
+      2256A7FFD7B0EFE79DAC7B39FED354896FFA5EE3BB7FF22A27F9E77F53FEFCD4
+      F75A6AAACB7613E982F831AED1BBB391415F6CC10F3C9EEDF3FE4A896B76ED7B
+      F42D20B4EDE3CC16AE7E8A28C9C5BFA8751B2C743C3373002439C019DAEFCDDC
+      FF00E6DAAD61E6B717A6DCEA1EECAF45CC1B6D6EC6B7D43B36B3DEF7EDD37256
+      AA6E9E9981AB9AE7566386581A3FCD48F4CC1FCEB2C7891A3AD91FC10F1FA867
+      DF4597FD8C1A8301A76BA0B9D3B5C773CFF32CF7B9059D6EF19155791553B6D7
+      0DC297EE7B24ED1BFDCF6EEFE42143B2384760E8D75D5500CA9C18C04C35A580
+      7E44466A00164983A02DFF00C8ACEB7AAE60CDBF128C56DAFA5CEDA64CC37E93
+      9FFE77E62A7D4335B9FD218F2C0C732F0D781AB64B1EE6B9B3EEF7351B4D3B84
+      B769FD2F6F16FF00E45392DD7F4BDC776FF72CCC7EA9923228C3BB1854CB98D6
+      D4493BA0B76D563BF3763DCD4EDEB4FF00B3653EEA5ACBF19CD68AC13B492767
+      BB77BFDAE6392553A6003A8B0C03CCB7FF00229816C0FD2F8F76FF00E4563DB6
+      8B7A874EB322802EB031C08711B41B1DB3DBF9DFDB44C8EAF9F8D60AECC5AB73
+      89F4DA1C5CE209869D8CFA3BD253A72DDBFCE7E6F12DF0F829B7F9C7FC47E450
+      6B9FE8B4D95ED7960DC0104031EE6FD25369FD23F43DBF224A7FFFD0B07F9F77
+      F53FEFCD53731C6417120982081A83C8E145E1C1FBC377CB769131DE7C0A8FBB
+      FD037EF1FF0090494E733A4750C57B86065065561FA2E1AE9F47F35EDDCDFDF5
+      26F45B1983750DB83ADC82C7BDC47B47A677FF005FF395FF0077FA06FDE3FF00
+      209A493FCCB7EF1FF91454D7BBA6DB6F4A6617AA03AB6B758F69DA4983F9FB5C
+      AA9E89984513652D38EE01AC630B4100B5DB9EE6FBACB5FF00CA5A3AF6A47DE3
+      FF0022A52EFF0040DFBC7FE412538E59936F5CCD6E2DBE8DD2F3B88E41DA1CD4
+      6FD8761E9C31996B7D4759EABDC41DBED6BAB6B5BF9DF9CB489747F30DFBC7FE
+      41205D1FCC37EF1FF90494D3B7A75D665E2E57A8D0DC6631AE04193B27E8FE6A
+      8E5F45FB4677AFEA0153CB4DCC83B9C468EDB1EDF7B55D9FF801F78FFC8A5EE2
+      74A07DE3FF0022929AF95816DDD471F283DA194384B48D4C38D9EDDBED5559D2
+      3A95790725B9359BDE4936399B8EBCFD30E5A443A7F981F78FFC8A73B8FF0080
+      68F98FFC824A5EB6DC2867A8FDD66C01E434004C6AEE111B3EA3F5EE3F2210DD
+      FE807DE3FF0022880384BA3DC7B4FF00DF9253FFD9003842494D042100000000
+      005300000001010000000F00410064006F00620065002000500068006F007400
+      6F00730068006F00700000001200410064006F00620065002000500068006F00
+      74006F00730068006F007000200043005300000001003842494D040600000000
+      00070005000000010100FFE1193D687474703A2F2F6E732E61646F62652E636F
+      6D2F7861702F312E302F003C3F787061636B657420626567696E3D27EFBBBF27
+      2069643D2757354D304D7043656869487A7265537A4E54637A6B633964273F3E
+      0A3C783A786D706D65746120786D6C6E733A783D2761646F62653A6E733A6D65
+      74612F2720783A786D70746B3D27584D5020746F6F6C6B697420332E302D3238
+      2C206672616D65776F726B20312E36273E0A3C7264663A52444620786D6C6E73
+      3A7264663D27687474703A2F2F7777772E77332E6F72672F313939392F30322F
+      32322D7264662D73796E7461782D6E73232720786D6C6E733A69583D27687474
+      703A2F2F6E732E61646F62652E636F6D2F69582F312E302F273E0A0A203C7264
+      663A4465736372697074696F6E207264663A61626F75743D27757569643A3139
+      3437383035332D666137622D313164632D386464382D66353934333635306432
+      3365270A2020786D6C6E733A657869663D27687474703A2F2F6E732E61646F62
+      652E636F6D2F657869662F312E302F273E0A20203C657869663A436F6C6F7253
+      706163653E343239343936373239353C2F657869663A436F6C6F725370616365
+      3E0A20203C657869663A506978656C5844696D656E73696F6E3E3232393C2F65
+      7869663A506978656C5844696D656E73696F6E3E0A20203C657869663A506978
+      656C5944696D656E73696F6E3E3333333C2F657869663A506978656C5944696D
+      656E73696F6E3E0A203C2F7264663A4465736372697074696F6E3E0A0A203C72
+      64663A4465736372697074696F6E207264663A61626F75743D27757569643A31
+      393437383035332D666137622D313164632D386464382D663539343336353064
+      323365270A2020786D6C6E733A7064663D27687474703A2F2F6E732E61646F62
+      652E636F6D2F7064662F312E332F273E0A203C2F7264663A4465736372697074
+      696F6E3E0A0A203C7264663A4465736372697074696F6E207264663A61626F75
+      743D27757569643A31393437383035332D666137622D313164632D386464382D
+      663539343336353064323365270A2020786D6C6E733A70686F746F73686F703D
+      27687474703A2F2F6E732E61646F62652E636F6D2F70686F746F73686F702F31
+      2E302F273E0A20203C70686F746F73686F703A486973746F72793E3C2F70686F
+      746F73686F703A486973746F72793E0A203C2F7264663A446573637269707469
+      6F6E3E0A0A203C7264663A4465736372697074696F6E207264663A61626F7574
+      3D27757569643A31393437383035332D666137622D313164632D386464382D66
+      3539343336353064323365270A2020786D6C6E733A746966663D27687474703A
+      2F2F6E732E61646F62652E636F6D2F746966662F312E302F273E0A20203C7469
+      66663A4F7269656E746174696F6E3E313C2F746966663A4F7269656E74617469
+      6F6E3E0A20203C746966663A585265736F6C7574696F6E3E37322F313C2F7469
+      66663A585265736F6C7574696F6E3E0A20203C746966663A595265736F6C7574
+      696F6E3E37322F313C2F746966663A595265736F6C7574696F6E3E0A20203C74
+      6966663A5265736F6C7574696F6E556E69743E323C2F746966663A5265736F6C
+      7574696F6E556E69743E0A203C2F7264663A4465736372697074696F6E3E0A0A
+      203C7264663A4465736372697074696F6E207264663A61626F75743D27757569
+      643A31393437383035332D666137622D313164632D386464382D663539343336
+      353064323365270A2020786D6C6E733A7861703D27687474703A2F2F6E732E61
+      646F62652E636F6D2F7861702F312E302F273E0A20203C7861703A4372656174
+      65446174653E323030382D30332D32355431303A35323A34332D30353A30303C
+      2F7861703A437265617465446174653E0A20203C7861703A4D6F646966794461
+      74653E323030382D30332D32355431303A35323A34332D30353A30303C2F7861
+      703A4D6F64696679446174653E0A20203C7861703A4D65746164617461446174
+      653E323030382D30332D32355431303A35323A34332D30353A30303C2F786170
+      3A4D65746164617461446174653E0A20203C7861703A43726561746F72546F6F
+      6C3E41646F62652050686F746F73686F702043532057696E646F77733C2F7861
+      703A43726561746F72546F6F6C3E0A203C2F7264663A4465736372697074696F
+      6E3E0A0A203C7264663A4465736372697074696F6E207264663A61626F75743D
+      27757569643A31393437383035332D666137622D313164632D386464382D6635
+      39343336353064323365270A2020786D6C6E733A73745265663D27687474703A
+      2F2F6E732E61646F62652E636F6D2F7861702F312E302F73547970652F526573
+      6F7572636552656623270A2020786D6C6E733A7861704D4D3D27687474703A2F
+      2F6E732E61646F62652E636F6D2F7861702F312E302F6D6D2F273E0A20203C78
+      61704D4D3A4465726976656446726F6D207264663A7061727365547970653D27
+      5265736F75726365273E0A2020203C73745265663A696E7374616E636549443E
+      757569643A66636436633363622D643235622D313164622D396538382D383365
+      3165636164666238623C2F73745265663A696E7374616E636549443E0A202020
+      3C73745265663A646F63756D656E7449443E61646F62653A646F6369643A7068
+      6F746F73686F703A35613861356666372D643235612D313164622D396538382D
+      3833653165636164666238623C2F73745265663A646F63756D656E7449443E0A
+      20203C2F7861704D4D3A4465726976656446726F6D3E0A20203C7861704D4D3A
+      446F63756D656E7449443E61646F62653A646F6369643A70686F746F73686F70
+      3A31393437383035322D666137622D313164632D386464382D66353934333635
+      30643233653C2F7861704D4D3A446F63756D656E7449443E0A203C2F7264663A
+      4465736372697074696F6E3E0A0A203C7264663A4465736372697074696F6E20
+      7264663A61626F75743D27757569643A31393437383035332D666137622D3131
+      64632D386464382D663539343336353064323365270A2020786D6C6E733A6463
+      3D27687474703A2F2F7075726C2E6F72672F64632F656C656D656E74732F312E
+      312F273E0A20203C64633A666F726D61743E696D6167652F6A7065673C2F6463
+      3A666F726D61743E0A203C2F7264663A4465736372697074696F6E3E0A0A3C2F
+      7264663A5244463E0A3C2F783A786D706D6574613E0A20202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      20202020202020202020202020202020202020202020202020200A2020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      202020202020202020202020202020202020202020202020202020202020200A
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      202020200A202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020200A20202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      20202020202020202020202020200A2020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      202020202020202020202020202020202020200A202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020200A20202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      20202020202020202020202020202020202020202020202020202020200A2020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      20200A2020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      202020202020200A202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020200A20202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      20202020202020202020202020202020200A2020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      202020202020202020202020202020202020202020200A202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020200A20202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      0A20202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      20202020200A2020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      202020202020202020200A202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020200A20202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      20202020202020202020202020202020202020200A2020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      202020202020202020202020202020202020202020202020200A202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020200A20
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020200A20202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      20202020202020200A2020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      202020202020202020202020200A202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020200A20202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      20202020202020202020202020202020202020202020200A2020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      202020202020202020202020202020202020202020202020202020200A202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      200A202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020200A20202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      20202020202020202020200A2020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      202020202020202020202020202020200A202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020200A20202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      20202020202020202020202020202020202020202020202020200A2020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      202020202020202020202020202020202020202020202020202020202020200A
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      202020200A202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020200A20202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      20202020202020202020202020200A2020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      202020202020202020202020202020202020200A202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020200A20202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020202020202020202020202020
+      20202020202020202020202020202020202020202020202020202020200A2020
+      2020202020202020202020202020202020202020202020202020202020202020
+      2020202020202020202020202020202020202020200A3C3F787061636B657420
+      656E643D2777273F3EFFEE000E41646F626500644000000001FFDB0084000403
+      03030303040303040604030406070504040507080606070606080A0809090909
+      080A0A0C0C0C0C0C0A0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0104
+      05050807080F0A0A0F140E0E0E14140E0E0E0E14110C0C0C0C0C11110C0C0C0C
+      0C0C110C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0CFF
+      C0001108014D00E503011100021101031101FFDD0004001DFFC401A200000007
+      01010101010000000000000000040503020601000708090A0B01000202030101
+      01010100000000000000010002030405060708090A0B10000201030302040206
+      07030402060273010203110400052112314151061361227181143291A10715B1
+      4223C152D1E1331662F0247282F12543345392A2B26373C235442793A3B33617
+      546474C3D2E2082683090A181984944546A4B456D355281AF2E3F3C4D4E4F465
+      758595A5B5C5D5E5F566768696A6B6C6D6E6F637475767778797A7B7C7D7E7F7
+      38485868788898A8B8C8D8E8F82939495969798999A9B9C9D9E9F92A3A4A5A6A
+      7A8A9AAABACADAEAFA110002020102030505040506040803036D010002110304
+      2112314105511361220671819132A1B1F014C1D1E1234215526272F133243443
+      8216925325A263B2C20773D235E2448317549308090A18192636451A27647455
+      37F2A3B3C32829D3E3F38494A4B4C4D4E4F465758595A5B5C5D5E5F546566676
+      8696A6B6C6D6E6F6475767778797A7B7C7D7E7F738485868788898A8B8C8D8E8
+      F839495969798999A9B9C9D9E9F92A3A4A5A6A7A8A9AAABACADAEAFAFFDA000C
+      03010002110311003F009462AEC55D8ABB15762AEC55D8ABB15762AEC55D8ABB
+      15762AEC55D8ABB15762AEC55D518ABAA315762AEC55D8ABB15762AEC55D8ABB
+      15762AFF00FFD092CB2705AE2AB60712C424EB5AFE048C555683C3157507862A
+      EA0F0C556902B8AAD38AA9B138AAD2CDE27155A5DBC4E2AEE6DE27157176F13F
+      7E2AB0C8DFCC7EFC554DA57ECC7EFC55619A4FE76FBCE2AB7D797F9DBEF38AAE
+      1349FCEDF79C55BF564FE73F79C55DF587520F2341EF8AA2C4BB06EAA7707155
+      44941C55541AE2ADE2AEC55D8ABB15762AEC55D8ABFFD13DBF244448F0C550F6
+      35934A8C1247272095254D0CC46C4508C239B0972441B0876F8E7EBFF2D137FC
+      D792E228E01E7F32B5ECA10D180F3D19A87F7F36E38B1FE7F6C448A0C06DCFE6
+      5B3630F3039CF4A1247D626F11FE5E3C457805F5F995AD630FAAABCE6A156247
+      AF375057FCBF7C788AF00BEBF32B0D9422460649B88553FDFCDD493FE5FB63C5
+      B2880BEBF32A0F1592BB0334BC6829FBF98EFBD7A3E47C4F7370D3C8F43F32A4
+      A967C9F94D352BF07EFA6E941FE578D707883F01234B3EE3F3FDAE1159927F7D
+      2F5DAB3CC3FE36C7C45FCB48743F35D0DA42E8499263F130AFAF2F4E469FB7E1
+      92E26918EB9DFCCB62CA2E2097989A7FBFE5FF009AF1E25101E7F32A3F548CDB
+      87E7373295AFAD2F5A7FAD878B76223E9EBF32B65B38846E43CA080483EB4BE1
+      FEB6224C8C0575F99592DA46A010F2FDA51FDF4BDD80FE6C024A623CFE65CD67
+      101B34A371FEEE97C47F958F115301E7F32E6B48834603CB466A1FDF4BFCA4FF
+      00361E25311B73F995436716DF1CDFF23A5FF9AB071278079FCCA166B78D6451
+      CE5A156247AD2F5047F95EF8DA3845F5F994CB4A955E1682A4FA5D3912C687DD
+      893912D8112EAD17C69BA771E18AAB43306037C55120D7156F15762AEC55D8AB
+      B15762AFFFD23CD47FB93F2C550F605974988AAF36126CA0804FEF8F8ED928F3
+      613E48A6B8B91C78DA39DF7F8E3141E3F6B0D0EF62652EEFB96C93CFCE1FF457
+      A7335F8A3FE46FF2B10077A0C8D8DBEE6DA7B8F552968E451AA79C7B74EDCB1A
+      15CD3C46F97DC81BED645A4B4688ABAA9FB4CA68491D7893E1954E6221CED369
+      A794D914189EA7E6B0198F2E4DF70DB30CE52793D163D14318B96CC7E5F34DE4
+      AFC200598F455049C4464512CD821C85B6BA879A1C174B2B9641D4885C8FF88E
+      4BC23DED3F9DC7FCD0B3FC47AA5B371BA8DE33E122953F8E03090EAD91D4E197
+      38A6F61E6CE4472343E20E478E51E6DC74F8B28F4965167ADC7320047327652A
+      40FBEB419930CA0F374BA9D0CA1BC47C112259FEAA3FD19EBE9FF3253ECF8F2C
+      C9A17CDD2D9E1E4D4D2DC7A2FF00E8CF5E276E49E1E3CB1005F34991AE4B6696
+      7E1B5B3D792FED20FDA1FE56200EF5948F739E49E8296CE7E215F8905057FD6C
+      000EF4991EE6A4966E517FA3BFDAFE64FE56FF002B0803BD06476D9734F3D540
+      B57237A9E49B7D1CB050EF4F11EE41DC4B37AABFE8EF4E2DFB49E2BFE56342B9
+      AD9BE4A5A65E4B16A888F132C528E0CC4AF535A6C0F8E0A6409BE4CA88C0CD09
+      2A340DEA47FDDFED0F0C50898260C06F8AA241AE2ADE2AEC55D8ABB15762AFFF
+      D33CD47FB93F2C55474DFF008E5C3FF193FE671C218CB92627A8F9FF000C0959
+      27DB87FD73FF00106C2107984B35CD5574D45E27FD22456083C06DBE53927C21
+      D86934A734AFA079AEADAB4D3C9E945CA49646A003766639842E65E9E463A785
+      F54F343FCBF331173E6063C880EB668694AD76761DF6E8333638C00F339F592C
+      9266B67A6D8E9F58ECADA381028FB0A01EA7A9EA72DA700C893BAB20F8E5FF00
+      5C7FC45709623995B2DBC33AB473C6B2464EEAE030E9E070321B311D4FC85A7D
+      E234FA69FA95D867E217788D18800AF6FA3232802DF875128EEC4A292FF46BC6
+      B2BF431CABD41DC329E841EE0E60CE1C2767A8D2EA4678D4B9B36D1F575B88FE
+      AB2B57929F49BDE9F672FC392CD3AAED0D1708338FC53E997F74FF00EA9FD599
+      439BA3972593280953B00CA49FF64310B243C77F677533DB5BCA24963E2CE177
+      007203AE292AB28F8E2FF58FFC45B1083D1CDDB03241CEB5957FD56FD6B87A31
+      EA94DD064939AEC56841F704E04B2FB6945C5B4530FDB50DF4918A5508C52849
+      236B76F513FBB3D4786284543306037C55100D7156F15762AEC55D8ABFFFD43C
+      D47FB93F2C550F608926931248A1D19E8CAC2A08F5BB83928F36131611274CD3
+      891FE870F5FF007DA787CB0F1CBBD1E1C7B82C934DD3F9C5FE890FDB35FDDAFF
+      00237B62247BD89C71B1B079DF986E90EA9791C08B14513189510051F06C761E
+      F9AACD33291B7BBECEC11C7823439FA915E46D162BDBB9754BD89658A3E51C08
+      E032F314E4D43B6C0E65608D0B747DA99B8A7C2CE869BA77ACDFE890FD95FF00
+      75A78B7B665F11AE6E87C38DF20EFD19A77A8DFE890FD95FF75A789F6C78CF7A
+      F871BE416C7A6E9FCE5FF4487661FEEB5FE55F6C4C8F7A8C71DF60D8D334EAB7
+      FA243D7FDF6BE1F2C1C47BD3E1C7B82C8B4DD3CA1ADA427E27FF0075AFF31F6C
+      2647BD11C71AE4121F36797AD6E7486B9B48122BBB41EAA98D429641F681A0DF
+      6DF29CB721BB9DA298C7315D583DADCB2460F5A6F43D33597C2767B9E01961BF
+      50C8752F3668914462B3D3A392E0AD0B346AAAAC47CAA68736F19922EDF3DC98
+      631918D7234C42F754BABE72D2944527648916351F4018788F7B11088E8C97C9
+      D3E871C125BDEFA7F5D92452A655047114D81388242CA20F36672E9F605A2E36
+      D0D0B7508BBFC2DED8448F7B0308EDB05ADA7D8541FAAC5FF22D7FA60E23DE9E
+      08F7043CB6165EAA816D1538B7EC2F8AFB61E235CD78237C92DBBB0B4AB5208C
+      6C3A22FBFB60E229E01DC9FF00976453A7081401E8332711B501351FAF22CC26
+      B8AAD22B8A506EA6DDF92FF747F038A1190CA180C55118ABB15762AEC55FFFD5
+      3CD47FB93F2C550F61CFF44C5E9D0BFA9B06D87F7DDE9928F3613E48A63A87C3
+      C521EBBD5DFA7B7C387D2C4F1F92D90DF7387E087ED9FDB6FE46FF002711C283
+      C56393CA755E4DAB6A01A9CFEB337203715F50F4CD3E5FA8FBDF43D16F823FD5
+      1F7338F278B84D22DC40B115FDF72E4CC1B9731D6808E94CD8E0A30790ED48CE
+      3A9236AAFD49F037FEBBFC10D38AFEDB57AB7F9397FA69D5FAEFA381BFF55EA9
+      0D28B4F8DEBDFAFC38FA53EBBE8D466FB9CDF043F6C7EDB7F22FF9389E140E2B
+      3C9729D42ADC921EBB51DFA7BFC38FA5238FC9641F5EE07E087EDBFED37F39FF
+      002713488F1574592FD77EA8E264878F06E7467A71A1F15F0C0785B31F1D8AAB
+      79085E094CD2F32FA481C3166777E555D6346B3B98A38A1BC5B588ACA1987302
+      307E21C699B7801C21F3CD49978B3FEB1FBD80DFE9F79A6DC35B5E4463954F7E
+      87DC1EE30B5A2AEB42D4ED6D61BF3173B499164595370036FBF862A89D27CD3A
+      8E98D1A3B7D62D54D7D272491B11B1FA70A08679A7EAE7578967B330951FDE46
+      CCC1D4FCB8E1D987ABC95DFEB9EB2FC117D96FDA6F15FF00270ED48F55F4415C
+      ADD966AAC54A0FDA6AD6A7FC9C1B27D57D113E597905C5DC12051B23A8524F72
+      0F50301642EF764646064D1C556B2860558541EA314A0C72B69381DD0FD93FC3
+      1423A29030C555B15762AEC55FFFD63CD47FB93F2C550F62E91E931492304457
+      AB331A003D63D49C239B099A0893A969DB7FA641D7FDFA9FD725C07B91E247BC
+      2C9351D38BC5FE970ECC6BFBC4FE56F7C444F7313923B6E1E5FE6111C1E61BBF
+      4E4592299FD647460C0FA9B9DC7BD735B9E0417B3ECCD4C678C0BF2651E50D42
+      2B7E76F3C8B1C2C0BA33101431A5454F8D32CD3CBA389DAF86EB2776C5948D4B
+      4EF558FD6E1A715FF76278B7BE67709AE4F31E246F986C6A5A77A8C7EB90741F
+      EEC4F13EF8F09EE5F1237CC2D8F51D383CBFE970EEC08FDE27F2AFBE2627B903
+      246CEE178D4B4EA9FF004C83AFFBF13C3E78F04BB997891EF0B21D474E086B77
+      0FDB7FF7627773EF8989EE631C91EF0976BBAB5B2E96F15ACE92CB32FA7FBB70
+      DC548F889A1F0CC7CE4C4577BB6ECDC4326407A45E6174E1A410A539310A3B0A
+      9DB30211B2F5BA8CC31C377ACC575A75BD8476C2F203E9422314913F6578F8E6
+      DA3023A3E7F93346449B1BA175A8742D5ED0C1757101355E1209139A548A906B
+      8440F7313923DE17DBC9A5DA69F0D89BC824489563AB489B80476AE3C27B9272
+      47BC312F31F96F499AB75A55CC11CC49E50FA89C0EC4EDBED8380F72F891EF0C
+      3ED6F2EF4ABAF56DDCC53C66868763EC7C4645B2EDE85A3F99ACB5454699D2DE
+      E5118488EC0026ABBA939202D81201DD197179624B52E62E83F6D7DFDF1E13DC
+      BC71EF0B7419E07D5DD62951CB45D1581E849ED8905224096554C8B25A46296B
+      1429CB1AC8855BE83E07154344EF13FA52751D0F88C5530470462ABF15762AFF
+      00FFD73CD47FB93F2C55474DFF008E5C3FF193FE671C218CB92627A8F9FF000C
+      09405C5ECAD72B059C1EBBC4F491D9BD38D58A13C79518934DF618420F30C6FC
+      D3A64FE6064B74B636FAADB44F344E583248A19070040DEBCBDA87E795CA361C
+      AC198E3930BD27556B6944729E2E8687C41198262605EB31E58EA215D5E91A56
+      BF14E019DAAC542F31ED5EBF7E65432D8DDD06A3406122629BADE5A19B889E3E
+      6E142AF2018EE7A0EB97DD87566262770EFAC5BC333472CA91C923811A330566
+      3C545003D709603996D2F2CDA478D6E233229F8903A961B7715C0C80252ABAD6
+      1ED1FF0076F13C1572EA55B954B3104372A7876CAE7900733068E73E7B305D7F
+      5DF599897E4DD2BE0076198522665E9F163869E16533F26796E67275ED450A80
+      A4D942DD771F6CFF000CCBC58F85E775BAB392C3D066FEE64FF54FEACBC73759
+      2E4527BDD56E6DA610CF6AA225292492ACBCB8446555E44701F75710B24D641F
+      08F9AFEB188494AAF6349B57B28E550F1AC72CAA8DB80E0A8069E22B8841E612
+      DF32F966DF5888CB1011DF2FD8907ED7B1C0C9E694BDD1EFB7AC375037EAFE07
+      157A1E8DACC5AD5B19365B94004B1FBEFB8F6C508FD2A3A6AF5F08FF00AE15EA
+      C948C095A462AB48C55A231543DD445D3927F78BB8F7F6C55AB59B9018AA394D
+      462ADE2AFF00FFD03CD47FB93F2C550F6018E931046E2C64D9A95A7EFBC3251E
+      6C27C914D0DE9E34B951BEFF00BA06A3C3ED61B1DCC4C65DFF00625D62974BCA
+      0FAC28B88AE6632298F725F9B2B1F8BA104531047722425637695B583A9C10CE
+      6D958C5239910163C0320237507A91B6363B93C32EFF00B121F307944EB3AB48
+      619D20BC4B64915963E2AEC5D87C543E03AE5728821C9C39A78CF361F709AE79
+      766F4EFE078C0E928F8A361D2A186D9872C35C9E8B1768090A98B475B79BF8A8
+      5945477C1EA0DA7C09F5A47379CEDA45A4A0B8AD68D422A3BEF878E5DCD5F96C
+      1FCE0869BCE31F1E30AD00D80E94FBB01323D19C61821D5297D5752D5A616D67
+      1BCD339A2C6809A9EBFC3118C9E6996B71E31E80C8F44F24DCA5FDA4DACBA7A9
+      22492A5B539AA98F85396E01FB5D332A1011745A9D54F2F22CED21BB166A05C2
+      81E9003F743F97C3966458BE4EAEA5C3CFA772F9A2BDF41C7D656BC4D4FA43C3
+      FD6C008BE4994655CFEC48E9A8DCA5D4E2169A2BC7545914440342A78A801A40
+      77DCFD38823B93212EF46E9FF5F96D162967F4E7B6710CA8D1AB37C34A5486A6
+      E083B6208EE590977FD8A261BD5D6809AE1599E3E50308F611AD792D2BD6A41A
+      E20859096DBA3DE0BC2CA45CA802B51E90DFFE1B1B1DCBC32EFF00B18E7997CB
+      526AAA244753791A3142138F2A11B135F7C1B5245DEE5E79677777A45F7AA954
+      9633C6443DC0EA08C8B63D02DA59AF2317D697200911482AB423AD46C72561AE
+      8DF3696F35CB77629785C03F65D790E83C4E3B245F7A2EDFCCFA8464ADE42928
+      069CA3AA1A7D2586064139B3D774EBDA2AC9E94A76E127C26A3C0F43812986C4
+      5462AD531540CC86DE6F517FBB73BFB1C5519049503154462AFF00FFD13CD47F
+      B93F2C550F60E91E9313C8C1115EACCC6800F5BB93928F361334112752D38115
+      BB87AFFBF17C3E787825DC8F123DE10B79268B752C2F2CF0990123D45942385E
+      2C69C9581A571113DC83923B6E1D03E896B389219E1123232991A60EC4541A72
+      66271E03DCBE246F985030797FD757172BC8A105BEB7256808A0AFA9EE71E035
+      C97C48DF30C6BCF5AE411DB47A458CCB224A89EB32BF3A22134526A6A4F7AE44
+      8A671209B095F93741D12F92E2EB593118F64862793D3DFBB6CC0E3C17D19F8F
+      C26AD37BFD03C956F458ADC3B19A3AFA72CD20F48142FD1CF6271F0CF7206A79
+      FA87D89858E85E4461EBC56F08A1202CF23D76FF002657FE18F867B97F31FD24
+      C61B6F2E00AC9241118D9B82C537A4A28CC0515194743E192303DCD432C4F328
+      866D0E6992EDEEA333A81C585C150294FD90E076DF6C7825DC919235CC2AAEA3
+      A78B451F5B86BE98DBD45AFD9F9E1E137C980C91E1E6393AEEF34BB8B596292E
+      E228CA6A1660A76DFAAB038040DF2652C91AE614E39F48B3B710DBDD44B18742
+      14CDCE94651B72634000E98881EE59648F785911D12D1DA682E63123F10E5AE0
+      BD45476673E18F09EE53923DE142F750B18F54B2B93711B43C248599183F167E
+      24578D680D3AE2227B94CE3B6E11CDA8E9D503EB70EFFF00162FF5C780F727C4
+      8F78517BFB0F593FD2A1FB0FBFA8BE2BEF8F09AE48E38DF30C17CEDA7594927E
+      94B19A26634FAC468EA49EBF1501FBF0709EE64271279A0BC9DABC76974D6572
+      E16DE7FB2CC6815C7B9F1C0C999996C199FF00D261FB5FCEBE03DF25C27B9809
+      C7BC219BEA04BFFA445D7F9D7C07BE0E13DCA271EF40B259153FBF8ABC9BF6D7
+      F98FBE2627B944E3DEDDAEB13D86D05E234409FDDBB065A57DCD47D18F094898
+      EF4FB4CF34585EF18AE24482E180A02E38927B035FD7828A448275246B22146E
+      8703242DBBB23146EAA6871547F2F83157FFD23CD47FB93F2C55474DFF008E5C
+      3FF193FE671C218CB92627A8F9FF000C095927DB87FD73FF00106C2107985C7F
+      BC5FF55BF58C53D5648EB1B876344547663EC38E3D11D5E2BABDE4BAD6B534EB
+      B99E4E112F5F86BC546064F61D26C534DB282C9050451203EEDBD4FDF851D515
+      1FDB9BFD71FF00105C4A0732BC753F3FE1812B21FB07FD77FF00899C2511E4BD
+      7EC8F90C091C9493FDE45FF8C63FE2392EAC47D3F05F37F7527FAA7F5601CD32
+      E45A9BEC0FF593FE24310B2E4B9FA0F9AFEB1812564BF6E1FF005CFF00C41B08
+      41E61B6EA302541C7EFD3FD47FD6B87A23AA9CF0A4EB24328E51BAF1653D0835
+      1813D5E3BACD84BA2EAB240091E9B7385FFC9AD41C52F4FD06FC6A7A6C777FB6
+      D40FFEB0500E140470405A4FF5BFE3518A8EAA2B002A7FD67FF891C4A22857B3
+      0C0EDDCFEBC090961B2FDD2103F647EAC279A0724C2C3529ACC7A771592DC0EB
+      FB4A07878E04DA6CE51A459A335471D4788C5289AFEEF157FFD33CD47FB93F2C
+      550F6019B49882B706326CC00247EF8F8ED928F3613E48A6B7B93C78DDB8DF7F
+      823351E1F670D8EE62632EFF00B96C904FCE1FF4A7A733FB31FF00237F938823
+      B90626C6FF00736D05C7AA94BB7028D51C63DFA77E38D8AE49E195F3FB924F37
+      5C4FA7E933CBF5A72648DA2552A9B972A3A851DB1B15C9784DF379B6856725D5
+      E3BA3B27D56279F9AEC4141B6FF3C836BD343DF4505C5A1BC91AF1244B584908
+      58FA84947248A9F84D4FFAA72562B935709BE688D120B936D316BD99CFAF2AD5
+      F8B9A23701BB027A0C363B9444D9DD304B7B91CB95DB9DF6A246283C3ECE0B1D
+      CA232EFF00B90CCED691079EEA51197901916342ABF11FB54434F9E124772231
+      3DFF0072B5BA49342AF1DF19411B488B1713F729C6C77244655CFEE48A017B65
+      24C4DECCF640C703FA8449E999214656F8C1DB9350FD18D8BE48A3C3CFA22C58
+      4F1DFCF1ADFDCB08EDD6501DF9AF273229AAB5452831045F24CA26B9A36FE416
+      912BDC5F3441E44552CB1915E40FF2E208EE44A32EFF00B95E4B7B8A0A5DB8F8
+      96BF0466A2BFEAE208EE498CBBFEE6A5827E70D2E9FED9FD98FF0091BFC9C411
+      DC83136376DADEE0B29176E06F51C2335DBC78ED8D8EE4F0CBBFEE527827F5D3
+      FD29E9C1FF00663F15FF00271B15C91C26F9AC682712126EDF8F11B718FAD4EF
+      5E38D8EE4F09BE7F7312F37E893EA2127B593EB1731F150A782FC279577D86DB
+      64B8091B05068EE511E54B1B8D374E68AEE66826690B7A4383802837A80DD70F
+      872EE526CF34EE326AF5BD6DDAABF0A0DA83FC9C2607B988F7AF82195909FAD3
+      11C9A9458FA723FE4E425B7465189EF72DB4FC28D74E4D4EFC631DCFF9391247
+      72889EF430B398DBA7FA4372E037E29E1E1C70922F92C626B9A1E6B295616267
+      62429AFC2943B7CB0022F92906B9A3A12D190BFB2C46DEF916D4D7FDD55C55FF
+      D43CD47FB93F2C550F60E23D262720901EA4282C7FBE3D00A93863CD84CEC893
+      7F06DF04E77FF9679BFE68C97094718F3F915B25F41CE2F826D9CFFBA26FE56F
+      F231112C4CC58E7F22D9BF83D45F827A51BFE3DE6F11FE463C253C62FAFC8B08
+      FCC6D45258ACAD230E2A5E470F1BC7B0A01F6C0AE0229983696F93D00B0D5A51
+      14B2CB2C420884514926ED527EC29A76C14A4EECF39D9497EBAA18EE43A44008
+      FEAD30A9F8A848E15A8048FA70F0ECC78C5F5F9152D2E785ECA782E21B940D3C
+      A4AFA1708DC59B983555046C70F0A388027F5144C0BA7C12FAB1C7761D49E3C9
+      6EDC6E29D181071E129E31E7F22B9B544862FDDDB5CCF233BD1520900FB47A96
+      5000C4C4A23315D7E45096800B94BE951EDD8035820B79C06A823F78DC006A7F
+      AB8F09FC14898F3F9153B5BB8245BD867B6BAF4AE82F1E56D3852A20553BF0DB
+      7071ADD1C551F83ACEE258EE2E45CC570563B758239CC137EF02B3907EC75A30
+      AFBE223BACA62BAFC8A2752D52D83DA5B1B692769E65A2BC328E2A8416700C66
+      A47B622293315D7E451AF7F0507C13F55FF8F79BC47F918889FC14198F3F915B
+      25FC3CE2F826D9CD7F7137F2B7F9188894198B1CFE45735FC151F04FF3FABCDF
+      F3463C259718F3F9140DF6B36F03864E45D558157468E952A770C01ED9918B4E
+      67EE612C801629A979AC063F1723F70CDA434D180B3B38E7293C98FCBE69BC95
+      F8400B31E8AA0938259714790B511916C5FF0099DC734B3B964F110B91FF0011
+      CAFF00330EE0CBC23DEB3FC47A9DB371BA478CF848A54FE34C98CF8CF3083090
+      EA9BD879B3911CCD0F88CB3C18641B163C728F365563AE412A7EF4EDD43A827A
+      FB0DF35D9B4A63C9C88651D5131DE43F574F826AF01FEE897C3FD4CC23136CE3
+      315D7E4564F770B42E024A0952378651D477AAE2226D4CC575F915765F893FD6
+      FE0720DA9A53F73F462AFF00FFD53CD47FB93F2C55474DFF008E5C3FF193FE67
+      1C218CB92627A8F9FF000C095927DB87FD73FF00106C2107985C7FBC5FF55BF5
+      8C7A27ABCB7F3127F535C48ABB430A8A7BB127025937E5EC1E968C64A50CCE5F
+      EE257F861E8C7AB2C1FDE37FAABFACE3D13D56C7F6E6FF005C7FC4171281CCAF
+      1D4FCFF860485907D83FEBBFFC4CE1288F25EBF647C86048E4A29FEF1AFF00C6
+      31FF0011C975603E9F82A4DFDCC9FEA9FD58073652E45467B785A54B965ACE9C
+      511AA765675276E9DB10B2E4AEFF00647CD7F58C424AD93EDC3FEB9FF8836210
+      7984B75CD5574D85429FF4892BC0780EE732B4D83C43E4D7927C2F35D5B559A7
+      93D28B9492486800DD9989E99BB918E18F9B842E653BD13C8066E375AFB1E440
+      65B3434A57B3B0FD43349975129173618C066367A758D83B45656F1C08117645
+      03BB753D4E6312486C1CD12ABF149FEB7FC6A3028EAB1ADE19C491CF1ACB196D
+      D5D430FB23B1C5475629A9F90F4EBC469B4D3F52BB0CD40BBC468C450AF6FA32
+      E8E5312C38410C46292FF46BC6B2BE431CA8771D55878A9EE33778330CA28F37
+      0E70E13619C689AC2CE16D646FB43F74DFC330757A6E1F506FC592F64E2E3FB9
+      93FD46FD59AC1CDC89722D37DA4FF5BF81C0C935FF00757D18ABFFD63CD47FB9
+      3F2C550F60A1F49894920192955241FEFBC46487361316114D6519E3FBC9850D
+      769A4DE9D8FC587890603BCFCD6C9691F387E397ED9DBD593F91BFCAC4490602
+      C73F996DACE332A1F5260006DBD59287A75F8B1E2D97805F5F9BC93CE0437986
+      F141621084AB3163F081DC927224B6014CF3CBB15B58E836B717324A91FA2ACD
+      C1A42A39331AD13257B35F0DCBAA751ADA3C6F78B3CA6D8C624E4659000A3954
+      D090474DF1E2D97805F5F9ADB01697AB34F6F2CCF17A9C412F32EEAAB5A0620E
+      264A202CF3F9A212CA305BF7931A9AEF349B57B0DF1E24880EF3F35B05A47C0D
+      5E53F1BFFBB64FE73FE56264C63015D7E6574765188C032CCC69F68CD257F5E2
+      6491015CCFCD0931B3B5B38FD79E55778E8804B2B393C7B2A924FDD878B76221
+      E9EBCBBDA12E9D70AD6F0DCCC6728CDC7D4955C0402A486A53A8EB804B74CA02
+      B99F9A2A7B38F80A4928F893712C9FCC3FCAC4493280AEBF35D259C640A4930A
+      329DA6937DFA7DAC4494C079FCD6CB671F387E3947C67FDDB27F237F9588920C
+      058E7F32F3AF31DEB49AADDC6ACC52163127262C404D8EEC4F7AE74BA4C62388
+      1F8B8194FA8844F91F464BCBC9354BA04A45C92DA84AFEF071AB023C0366B35B
+      90DD3938A2CF3EA51FAA4FA9353881C7D5929D4EFD735BC4DFC02FAFCD60B38F
+      D77F8E5A715DBD593C5BFCAC78B651017D7E6E4B28F9CA7D494FC436F564A0F8
+      47BE264A202CF3F9B51D9461A4FDE4A7E2EF2C9FCA36EB8992880DF9FCDA8ACE
+      3E26AF29F8DFFDDB27F31F7C4C96301E7F32C7BCD7A04775A53DD445DEF2CF94
+      88EECCEC5013C977F6DF2FC392A618CA1E96136974F1206562196854834208CE
+      98444E3BBAEBA2F47586396C5670F29E7109013239FB4B5F1CE525B488EE2ECB
+      8418DEFCBBD14E3E24FF005BF81CA9B934FF00757D18ABFFD73CD47FB93F2C55
+      0F60C574989954B90FB22D013FBEED5207E3928F3613E48937571514B19BAEFF
+      00143FF5530D0EF4711EE3F67EB5B25D4FCE2FF429BED1FDA87F95BFE2CC401D
+      E83236363F67EB6CDD4FEA2FFA14DD1BF6A1F11FF166343BD788DF23F67EB78D
+      F98656975BBE9194A9333554D2A2869D891906D0F478A5953CB263FAACBC4592
+      8E758A9D1B7FB75A7D193ADB9B5F11E2E5F72E9259D6EE5D1C59CC22B9916755
+      AC5B40496917EDD37614FF006582BCD6CF77DC8AD2AF6582CA690D94EEA27989
+      F4FD376DE43B710F5FC30903BD0246CEDF77EB44C1AC34D2FA6BA75E2B31342F
+      1045D85772CC00C143BD3C47BBEEFD6E6B8D47D306D2D5C3ABB92B27A4558163
+      B544A08FC70903BD1191AE47ECFD6B62D5E65921B5BAD3E68AEA50782AB44E8D
+      C454D1B98EC3BD30579B2E235CBEE50B29E667BC91ECE56994244BF145F0C622
+      5603793B96272542F9B0E23C3CBA7922AE393C82EFEA5389A38A48C1E505087A
+      1DFF00795DA9B60005F34CA468EC7ECFD6D6A179A92C49F53D3DDDFD44E62478
+      9471E43A5243BE35E6A647B8FD9FAD10F753D07FA14DD57F6A1F11FF00166200
+      EF5323DC7ECFD6D49753F38BFD0A6FB67F6A1FE46FF8B310077A0C8EDB1FB3F5
+      BCAB5525F56D42AA549B99AAA6951F19D8D0919D569BFBB1EE0EBB27D459BF94
+      2568B49B648ADA4929EBF365318058C83F99C1E94CD16B23590EFDCE66296C36
+      EF4FFEB33F33FE8535283F6A1F13FF001666150EF6FE237C8FD9FAD68B99FD67
+      FF00429BECAEDCA1F16FF8B31A15CD1C46F91FB3F5B92E67E527FA14DF6BF9A1
+      FE51FF00166343BD448EFB1FB3F5B92E67E521FA94DF6BF9A1FE51FF00166343
+      BD448EFB1FB3F5AC8AE67E07FD0A6FB4FF00B50FF31FF8B312077AC647B8FD9F
+      AD4A5B990DBCA25B2982157E7F142471DEBFEECC206E28AF11AE47ECFD6F260B
+      C1299D78141D5DD97A4D8CF2FE86B55FAB49C7EAB18E758F8D3D31BFDBAD3E8C
+      E5328FDE1DFA9FBDD902783974F24C651431FF00ADFC0E63B7A65FEEAFA3157F
+      FFD03CD47FB93F2C55474DFF008E5C3FF193FE671C218CB92627A8F9FF000C09
+      5927DB8BFD73FF00106C2107985C7FBC5FF55BF58C53D5E1FAEFFC76F5107B5C
+      CC3EE723025EB16B6AF7BA2436D1C822F56D6252E579FC241AED5187A31EA99A
+      4728079B2B5C7A617D60941524FECD4EDED5C7A27AA86996B259C53432CA253E
+      AB3870BC3FBC0188A55BB938940E651A3A9F9FF0C0942B432CF18449DA05E727
+      3280722391D8120D30944792EB5B1B6B51CE38FF007CC07395AAD21F9B354E04
+      8434964ED1ADCDB4C60B830847F843A38036E4A69B8EC41C91E6C47D3F0565B7
+      BA45924B8B9331E0CA11504718AF7A6E6BFECB00E699722A1A88B996F2C61879
+      ADBA3FAD70EB555215942A923AD49E98859262FD07CD7F58C424AD93EDC3FEB9
+      FF008836210798795799A06B1F315DA38A24EDEBC67C449B9FC6B9D0E8B28310
+      1C0CD0A36C97C9B78A8E6D1DA88E19A2A9FDA3C6A3E90331FB431DFA99E9CEF4
+      CC87DB27B507F1CD339BD568FEFDFF00D44FD6D8F44756D3ED49FEB7FC6A3151
+      D5A5FB527FADFF001A8C54755917D83FEB3FFC48E2563C927F305E0B5D3A4854
+      D269F9201DC2926A7EECCDD263E2983D0356595469E653F29664B78472924608
+      8A3B92699BECD90462E042365EAAB08B7D3D6DC6FE942231FEC5299CB1372BF3
+      7664547E0BE61FDDFF00AE3F51C83347734F4A95ED8695FFD13CD47FB93F2C55
+      0F608B269312380C864A153B83FBEC90E6C262C22DF4FB16E35B68F6351F001B
+      8F90C788F7A0E38F7043DE47A65B35BBCF046A864E3C8475504A903910283E9C
+      2247BD071C6C6C159AC2C4CA84DB47501A9F00F6F6C788D735F0E37C83C67CC1
+      1AC7AEEA28AA1545CCB4005001CCE41B69EADA15A59CBA75A4A608D98DB45525
+      41F1F6C9F11A6AE08DF24C16C2C44AE45B475216BF00F7F6C788D735F0E37C83
+      51D8D97398FD5E3FB63F617F917DB1323DE818E36760B934FB152D4B68F76A9A
+      A03B903C460E23DE918E3DC16C16365C0FFA3C7F6DFAA29FDB3ED84C8F7AC71C
+      6B905D1E9F62B1AA8B68E94EE80F5F738991EF518E35C829AD8D91B351F578FF
+      00BA1FB02BF67C7AE1E237CD88847879745D35858FA0EBF568E814FEC80761E3
+      8048DF34CB1C6B93A7B1B22801B78FED274451FB43C062247BD32C71AE4174B6
+      16242D6DA3D9948F800EFEC31123DEA71C7B82D96C6CB9C3FE8F17DB3FB0BFC8
+      DED8891EF41C71B1B048FCD9E588B55B212D8C6916A16F568B880A1D7BA9A7E1
+      96E2CA62532C62B60C034DD41ED6636F72A52443C5D185082337D0C832C7CDC1
+      944C4B3FD2B50D3270A678222FC4289022F4AD7719ABCD8240ECDF0303CC04EA
+      2B6D3A499DE386160553A2A9EEDDA99824C8736E108DF20BD2C2C83CA7EAF1D4
+      B0FD85FE51ED80C8F7A4638D9D82D5B3B043293044073A925569F6478E3C522A
+      31C77D82597173A5DA46C16DE277E4E7755A6EC48DE99950C33916A3C00720C1
+      759D5A11C922A28DFECEC3E8CDCC223146CB8BF51A08DF2A7979E76FD2FA947F
+      BB2A7EAD0B0EB5FDB23F566AB3E7332E6431801983DB5A2C0E3D08C510F12145
+      4506DBE6259B64611AE48A9BFDD7FEB8FD47296E57A7C14CB10FFFD23CD47FB9
+      3F2C550F605C693118C067F53E10C78827D6EE403FAB251E6C27C914CFA8ED48
+      20EBDE67FF00AA587D28B9770F9FEC4BF5B6BF6D3A60608A9C1CED2B13B46DDB
+      D318EC82656361F3FD88E12DFB3A32C30152A48FDF3EE0D37FEEB1D96E57C87C
+      FF0063C83CD49247E60BEF51555DA42C42B161F16FD481FAB20D82DE8FE569EF
+      64D1ED1A38A26410A282D2B29F84B0E823393DA985CAF61F8F92701F50F51BF7
+      10F45DBD67F13FF1563B22E57C87CFF6351BEA1CE5FDC43F6C7FBB9FF957FE2A
+      C4D201959D87CFF62E57D46AD5820EBDA67FFAA58FA595CBB87CFF0062924BA8
+      2A902187ED3FFBB5BF9CFF00C5792A8B1899770F9FEC6966D4788AC51134ED2B
+      0FF99786A29065DC3E7FB164325FFD5C01143FDDD2A656FE5FF8C786405B1B97
+      0F21CBF1D11133EA1E93FEE211F09FF773F87FC62CAC55B291951D87CFF63533
+      EA1C07EE211F127FBB9FF987FC5588A5919770F9FEC6E496FE83F7300F896B59
+      9BC47FC558801499770F9FEC69E4BF2F152187ED9FF7737F2B7FC55868209958
+      D87CFF0062E66D44D07A10537AFEF9EBD3FE31601C2CAE5DC3E7FB189F98FCAD
+      2EB532DC4290DADF8527D512310E011B30F4C78F5CC884F8791604127703F1F0
+      6193AEB7E5F97D3BD85E300ED20F8A33F261B66C61AB045485B44B0D7247DAF9
+      C1A303D4EBE35A64CF852EB481C61305F3C228A06715EB43FDB90F0711EA13C7
+      2EE42DC79C8383C3727C4E4847147AA0999E894B6A7A9EAF2FA1671493C8DD12
+      304F5F1C65AA8407A428C44F3647A1F926F23952FF005848A565DD2D5A42A030
+      EED44607E59ADCB9CCF996F8C08E4195AB5DFD5E35586114400112B53A787A79
+      4D0B65132AE43F1F05B2B5E7A4FCA2880E26A448C7B787A792156B2E2AFC7EA4
+      64DF6623FE58FD47286E4553FAE4BA21FFD33CD47FB93F2C550F60CA9A4C4EEC
+      1544952C4D001EB1C90E6C2668230DF595456E62EBFCEBFD71E13DC8F123DE10
+      7AA6A56D0DA3CD1CF13488AECA39A9DFD36A6D5DF7C3C27B90671246E17DA49A
+      7D9430DAC7751948D1802D22D492413DF1E13DC9F1237CC3CC7CF622FF001049
+      244CAE92A23725208AD287A7CB224533041E4CC7C8D7F6DFA15239664478C95E
+      2CC01A7263DCFBE1A24303200EE5920BDB2F51BFD262E8BFB6BE27DF0F09EE5F
+      1237CC351DED9F397FD222FB63F6D7F957DF1313DC8138D9DC2E17D65534B98B
+      AFF3AF87CF0709EE4F891EF0A22F2CF87FBD117DB7FDB5EEC7DF26227B98C671
+      AE616A5E59D17FD222A77F8D7FAE48C4F7244E3DE1725DD88B55FF00488ABE98
+      FDB5FE5F9E40836C44E3C3CC725F3DFD9085E97111AA9A7C6BDC7CF04606F932
+      94E35CC294D7D6CCA2B711FDA4FDB5FE61EF960891D14CE3DE1B92EAD028ADC4
+      5D47FBB17C47BE000A99C7BC2D6BBB5E7111711ECC77E6BFCADEF868A0CE3637
+      089FAF59FC35B9881F0F517FAE55C27B997891EF0867BBB4F5D69711D02BFEDA
+      F8AFBE5A226B931E38DF377D62C65668E49E16460392B3A9046FD89C041AE49E
+      38F7849355D2FC9C893DDDCC16DC5103111B0425896D808C8DCE3C520144A24F
+      379E6963469B59517B6CA34E95CAFA7EA3A8407A7C41ABB7CF071967C21E8D69
+      E5BF26C7C996DEDDA876E7297DA83B339C32326B1287784D2DA6D32D22315A34
+      10A066F86328A3ED1A6C30701298CE35CC362F2D587FBD119DCFEDAD3AFCF0F0
+      91D12271EF0A71DC598B7426E62AF01FB6BE1F3C4DDF26319C6B985B2DCDAB42
+      E1678C92A6803AEFB7CF0889B594E35CD132FD88BFD7FE07292DC8CA6D5FF271
+      E8AFFFD43CD47FB93F2C55434EFF008E5C35FF007E7FCCEC218CB9262CAAC579
+      00686A2BBD081D7149081D5ADE6BB863B6882525628EEE4FC2A518120006A698
+      841E6116E504A85A9C82B50F715A6100D29E6F39FCC9847D76CAEC568F1B467E
+      6A41FE3808648EFCB5B84305EDBB7DA56461F26AFF004C515BB3A50A257200A9
+      55A9EE7AE3D1039AD880E731A6E5C57FE01712B1E657AAAA96E200A9A9A6D524
+      0DF1480A4807A2D414F8DCFF00C39C975631E4A68AA1155400B4E83619329036
+      5F1806C945071F480A76A71CACFD4C7F87E0EBB40606141C42914EDD30C0EE99
+      0D94A5A7115DFE34EBFEB0C9859725491CB28A8068CA454577A8C88092D49212
+      F0D40347247FC0362020F30AC0A3B2B10392D684F515F0C8114C942503EB4A7B
+      F06DFE95CB0726279B69C44C5CD01E2016F6DFBE03C9239BCC7CEBAFAEA77ED6
+      B68D5B3868ACC3A3BAD77F90AED904D6EC54120D46C46F5C097AFF0093354FD2
+      7A4F2723EB11B71940EA680007E903244DA00A4D63140C294F8DC9FF00823963
+      18B70D23145002D4EC36EE7011690B23F8ADA340A38F0038F6E98D51447E90B2
+      64020916940108A76E9841DD65F496E6042C608FDB1FA8E5659A3A9FBBAFB645
+      5FFFD53CD47FB93F2C550F601CE93108C857F53E12C39007D63D4547EBC90E6C
+      27C914D1EA069FE9108DFF00DF2DFF005570D8EE454BBC7CBF6A94E2FD5A21EB
+      C35E469485BF95BFE2DC94698912B1B8F97ED53297C645FDFC55A1FF00753788
+      FF008B327B26A57CFECFDAC63CFB6376FA5C7732BA30B77E54442A68D45EA5DB
+      C46572208D922EF763DE44B89A3D61ADA27543711915752C2ABB8D832E0891D5
+      91BE8F4D8E3D443B56787A2EC6163DCFFC5B8498B0A95F31F2FDADC697FCE5A4
+      F0FDB15FDCB7F2AFFC5B80D200959DC7CBF6AE58F5005BFD2213BFFBE5BC3FE3
+      2E363B99012EF1F2FDAB238EFCC6C3D787ED3FFBA5BF98FF00C5B86C5B188957
+      31F2FDAA4897C147EFE23B7530B7FD54C9EC9025DFF67ED5D125F1B35A4F101E
+      9D3FB96AF4FF008CB9135C4C6A5C3CC72EEFDAA9347A81864067869C4D7F72DE
+      1FF1972208B65212AE63E5FB564F05E0515B8847C49FEE96FE61FF0016E48487
+      722425DE3E5FB5B7B7BE2A08B88A955FF74B788FF8B71E21DC9225DE3E5FB54E
+      68AF564887AF11F8BFDF4DFCADFF0016648104208958DC7CBF6AF48EFF0098A4
+      F10EB5FDCB1FF99B809149A9778F97ED6A68EFBD78C99E2AF06FF74B53AAFF00
+      C5B8C48A4112BE63E5FB5618AF1D995A688AB280C0C2D4A1AFFC5B84D526A57C
+      C7CBF6BCFBCEA96B61709A75B4702C8543CCD0C4508DCD0125DBAE54699006F7
+      407957413ADDE48B2505B44B572413B9D80D88FD788AEAC8DF4677A1F95E7D16
+      EE69ACAEC08A41C5E278CB2F4047FBB01EF84F0B0F57E3FB53A8E0BE653FBF87
+      ED3FFBA5BF98FF00C5B878822225DE3E5FB5A4B6BEE3FEF444773FEE96F13FF1
+      6E1321DCA04BBC7CBF6B50417C2DD38CF08F806FE8B57A7FC65C048B4444AB98
+      F97ED6E58AF842FCA7888E06B48581229FF194E0045AC84A8EE3E5FB552F47C3
+      17FC641FF113906E44FF00BABE8C55FFD63CD47FB93F2C550F60C1349899AB41
+      276058FF007DD80A93921CD84CD04535F40A57909454D056197727B7D9C784A0
+      E41F80542E2EE232C5B49F6B6AC52FF2B7F9396463B3133163F5172DE4027404
+      49521A83D296A694FF00270989A4F18BFD850DADFA1A8D85C5971939C9049C07
+      A32FDA0548FD9F1195F09A5E317FB0BC9B47BB3A76AF6B72D51E8CABCFAF4AD0
+      FE1906D7B3A6A16CF2371F50FC2BB08A5EF523F6727C269AB8C5F5F91747790F
+      39B697ED8AFEE65FE45FF271312A262CF3F915C97D0316E225343434865D8803
+      6FB38384A44C7E015B05E43C0D1653F1BF4865FE73FE4E131288CC575F91514B
+      C80A02A242B4EA2293B7FB1CB384A898AFD85B86F21167B892823AF2F4A5229C
+      7FD5C1289B63C6387E1DC5527BD80DBB9FDE81C4FC5E8CA074FF005723189B65
+      298AEBF22A33DD44AA392C83E24DCC527F30FF0027260225315FB0B6F7B12803
+      F7A2ACA07EEA5EB5FF00571E14998FC02E92E632F15565157EF14BBFC2DFE4E3
+      4833163F51571796E8CAA44BCDAB41E8CBBD3FD8E564129E31F8056C975034F1
+      8225FB0FB7A32D7AAFF938402020CC5F5F9142EA1AC5869B04D7137305101556
+      8E45A9DE9B950301BA642409A78EDEDDCDA95ECB73255A599AB4EBD4EC320D8F
+      52F28DAC3A4699E8BA49F5A721E7A4329A165040AF1ED93E12D7E20BFD853C8E
+      F602D2504A68D434865D8F11FE4E262502637FD45A86F21E068253F1BF4865FE
+      63FE4E26256331E7F22DC77D032725129049DC432F89FF002713129131F80564
+      57B00B642449C446096F465A529D7ECE2626D8C66387F616E5BC81ADDCA8928C
+      8684C5281B8F12B8889B594C18FEC2BAF87C117FC641FF00113906E447FBABE8
+      C55FFFD73CD47FB93F2C55474DFF008E5C3FF193FE671C218CB92627A8F9FF00
+      0C0943DC8F8E13FE511FF0AD96458CB985B5A48A7D8FEB192E89EAA8655F552B
+      FCADFAD721C3B2F578E79A6C3F47EB77510148E46F563FF55F7FD7912193284F
+      3A4765A15B3C74935368C4410EE14A123936489D91D59B69971F5BB44BAFF7F2
+      C726DFE546872250399458EA7E7FC3025641F60FFAEFFF0013384A23C94CEDF7
+      0C9850A70B05B5DFFDF63FE2386437623E9F82BC8E1A2929D94FEAC85329722D
+      CDF607FAE9FF00121802CB92E7E83E6BFAC621256C9F6E1FF5CFFC41B1083CC2
+      F3D4604A9B90B32B31A008E493F35C3D11D5E59E74F30FE95BD3696CD5B280D3
+      6E8CC3BE064BFC8DA0FE91BEFAF5C2FF00A2DB51941E8CFDBEEA62AF524FB527
+      FADFF1A8C2C475727DA93FD6FF008D462A3AB50FD83FEBBFFC48E2563C97274F
+      A4FEB38A42C83FDE78FF00D45FD589E6C63F486E7FF79E5FF51BF56239ACBE92
+      A37DF622FF008C83FE22703357FF00757D18ABFFD03CD47FB93F2C550F60A5B4
+      989431425F665A547EF8F4A823F0C90E6C27C912D6B312BFE9B3EC6BB0847FCC
+      BC3C43B91C27BCFD9FA96CB6B296881BC98FC47B43FC8DFF0015E225E4C4C4D8
+      DCFD9FA96358CDEA2D2EE5E8DDA2F6FF008AF24263B93C26F99FB3F529CD03C0
+      7D69AF6448D11D99CFA540015FF8AF0F18AE4BC26F99FB3F53CCFCDDA9D86A77
+      71B5A4B24EF12F0699C20522A4D07155FBF212902CC023AB1CFA720C9EB7E4D1
+      2DD6816F20BA9538931F151191F05176E484F4193BF26AE13677FB93D5B59816
+      FF004D9FAD77109FF9978F10EE4889EF3F67EA5B0DB4DC0D2F26FB6FDA1FE73F
+      F15E248EE63189AE67ECFD4B0DACAA17FD326229DC444FFC9BC989792444F79F
+      B3F528ADB4A6D452EA6A7A7D2917F2F8FA792BDF931113C3CCF2F2556B49C472
+      56EE60389AED10EDFF0018F23C43B93289AE67ECFD4A935B4DC056F26FB49DA1
+      FE61FF0015E4011DC9944F79FB3F52E92D662056F66FB4BD0423B8FF008AF107
+      C94C4F79FB3F52D92DA6E717FA64DF6CD3687F95BFE2BC411DC83136373F67EA
+      5E6D66E4A7EBB3EDED0D3FE4DE3C43B99709EF3F67EA60DE73F303DBBFE8DB1B
+      C92590AB2DC31F4C001A9F08E283C305F92444DDDB0FD1F49BAD66FE3B2B606A
+      C6B23F6441D58E459BD774ED1D74D8C59DADCCA91C689D045B9AB78C67277B72
+      6AE137CCFD9FA91496B37293FD326FB43B43FCA3FE2BC6C772889DF73F67EA72
+      5ACDCA4FF4C9BED7843FCA3FE2BC491DCA2277DCFD9FA9A86DA6E0697937DA7E
+      D0FF0031FF008AF124772C627BCFD9FA9725ACC1682F66EA7A884F73FF0015E2
+      48EE5113DE7ECFD4B21B598DBC7FE99301C0768BC3C7D3C248BE488C4F0F33F6
+      7EA6E5B699607ADE4CC021A8222DF6EF48EB80117C965134773F67EA5F7DF622
+      FF008C83FE22720DCAFF00EEAFA3157FFFD13CD47FB93F2C550F60C574989829
+      7224D956953FBEF720611CD84F9229AEA51C6B6731A9A6C623D7FE7A64B87CD0
+      647B8FD9FAD6C9732F38BFD126FB669BC5FC8DFF001662079A0C8D8D8FD9FADB
+      373289507D526A90DDE2A76EFEA635E6BC46F91FB3F5AD79DDE5547B39594A35
+      54FA441155FF008B31ADB9AF11BE47ECFD690EA5E57D275391EBA74D6F3F10DE
+      AC2625DC93D473A1C7845735E337C8FD9FAD895F7917578A493EA3134D128040
+      731ABD0D7C1C83D3011E6C84ACF264DE4996EB4DD326B2BEB59639239DA950AB
+      B155FE6604EF5E990320399612C822C94EA30AD763BF8903FAE527306A3A9885
+      24D4A1405680D4B375FE624F87BE03A80C06AA217AEA5010011D3DEB88CE190D
+      4C56FD79560F496191CAA52ABE9F61DAAE32F8CE323CD90CC2A9565BA97D073F
+      549A9C4F78ABD3C3D4CB0017CDB65235C8FD9FADD35CCBC056D26FB49DE23FB4
+      3FE2CC40F35948D723F67EB6E4B994015B49B7651B188F7FF8C9881E6A647B8F
+      D9FADA92E650F156D25FB67BC5FC8DFF001662079A991B1B1FB3F5B11F3479D4
+      5BA3D869CACB77BAC9212A428E9B1563BE44B306FA3CFEDAD6F353BB586DD1A6
+      B994FE27B9270327AB79734A8FCBF6C6DD6D257BA9006B89FF0075B9DF607D4E
+      83C327C3E6D7C66F91FB3F5A6EB75219DC0B596BC57BC5E2DFF166131DB9A388
+      DF23F67EB5C9732F3907D526FB42BBC5FCA3FE2CC0479A891DF63F67EB747732
+      969296937DADEA621FB23FE2CC48F35123BEC7ECFD6D43732F034B49BEDBF788
+      7ED1FF008B3123CD6323DC7ECFD6DC7752B2D45A4DB93D4C40F53FF1662479A8
+      91EE3F67EB5B0DCCA2DA33F54988083A18ABD3C3D4C4817CD1191E1E47ECFD6D
+      CB732B40F5B4954143B9316D51DC07AE206FCD6523C3C8FD9FAD75F7D88BFE32
+      0FF889C8372BFF00BABE8C55FFD23CD47FB93F2C55474DFF008E5C3FF193FE67
+      1C218CB92627A8F9FF000C095927DB87FD73FF00106C2107985C7FBC5FF55BF5
+      8C7A27AB47FBE4FF0055BF5AE3D11D5A1FDF3FFAABFADB1E8BD52CBFD5161661
+      13505002DF2AF4FBF30B2EA2B60EBB3EA8479311D4BCCE909288DC9CF4037398
+      638E7C9D78F132F2D8212187CDBAB7C76968F1C2DD249488C53FD950FDD97C74
+      D7CDCB868AF9EE884F29F9BA552FF5A814D48E2647AD41A1E88465BF958F7368
+      D140F4529349F39D80E660FACA7FC52C1CFDDD7F0C84B4C3A309688745B65E67
+      912410DDAB4528EAAE0A9FC731E58E7071258B263E5B865965AC09622BCB9230
+      229E151DB2EC5A8A3BB761D59E453D7759225743552C943FEC866C6241DC3B7E
+      204585B797305A4067B9904712904B31A742308665E77E66F3BBDE56CF4A2638
+      013CAE3A336C46DE037C0B4C5F4DD2EF758BA16F6A85E463F139E807724E297A
+      AF97FCB96BA08454F8EE9D1BD594F5AD5761ED87A313CD377DA56F90FE3931C9
+      7AAC8B6B96FF00557F5B613C9039A213ED49FEB7FC6A32B48EAD211CA4DFF6BF
+      E3518951D5D0FD83FEBBFF00C4CE2563C9B042A927C4FEB38A42845237D5E303
+      6F817F564CC77631FA42D9D98C12549FB07F56103759722A578CDC63DFF6C7EA
+      38299227D4FDC57BF4C8D25FFFD33CD47FB93F2C550F6081F49891AB43250D09
+      53FDF1E84508C90E6C262C229AC2DCF1AB4A686A3F7F375FF83C3C450718F3F9
+      959258C1CE2F8A5FB67FDDF37F237F97889162602C73F995C6C60F517E296A03
+      50FAF37B7F978F114F00BEBF32D1B183D64F8A5FB2DBFAF378AFF978F11A5E01
+      7D7E652CD51E2B497844F2732A0B932C8DB027621988EF985A9CF4385D76AF28
+      81A1F796257D3DE6A3751E9B60395C4C683C147727C00CC0C503336E0E9F11CB
+      2B2C9B44F286976019E6ADCDFA11CAE4B32904A83F0852282A737118F0BBD863
+      0364F16C2DC16A34A2A6A7F7F375FF0083C9F1166203CFE65643650703F14A3E
+      37E93CDFCE7FCBC26458C602BAFCCAE5B0804602B4A05360279BFE6BC788B218
+      C575F994A2F340D3352B35FAD44CEEB18E12191CB2EDD892725202468B0E01C2
+      C4E6B3BDF2D5F2DBCAE65B396A6DE7F103B1F719A8D461E1DC3ABD5E9EBD4137
+      9F529A3B192580191D143AC6247415520D7E0237DB069B51C26BBDAB4D9F700F
+      2605A86ABA86AB256EA69245AFC31166651F2049CDA12EFC0A4DF44F26DF6A4F
+      14B775B5B373F69BED9142761F4620292F45B0D0749D36348AD55D08EAEB2CAA
+      49EE4D186485B03004FED28B365019D3E294FC0FBFAF378AFF00978F11A63C02
+      FAFCCAD92C601256B2D78815F5A5AF53FE5E4848D27805F5F99525B3844CDF14
+      BF6577F5A5F16FF2B2464691C02FAFCCAE169097928D280587FBBA5FE51FE5E3
+      6A203CFE65A4B387949F14BF6BFDFD2FF28FF2B1E22A203F04AFB6B484A905A5
+      FB4F4A4F28FDA3FE5E4644AC603CFE6570D3E2E34469428276F5E5F13FE5E0E3
+      4880F3F9953874E88DBC75693894151EB4BD29FEB648CF744602BF695F35A5B4
+      703F169764345F5A52361E05A980124ACA02BAFCCACBDFB31FFC641FA8E2DAAD
+      FEEAC55FFFD43CD47FB93F2C550F605C693114019FD4F8413C457D6EE687F564
+      A3CD84F9229A4BF05696F11A9A7F7CDB7BFF00778D0EF4132EE1F3FD8B647BEE
+      70FEE22FB67FDDCDFC8DFF0015E114C49958D87CFF0063664BFF005147A11746
+      DFD66F6FF8AF1A09B95F21F3FD8D17BEF593F7117D96DFD66F15FF008AF1DA96
+      E57C87CFF6311D4AE6496F2E9A4A075764201A81C3E1D8903C3C339ECE6F21F7
+      BCC6A644E595F7AAF95ACE64371A80891DE43C119DCA90A09AD28ADD4E6DF490
+      1C36EE747122360324B792F7D4980862FB42B595BF957FE2BCCD9014E6832DF6
+      1F3FD8AEB25F92D5B7886FFEFE6DFDFF00BBCAE877B2065DC3E7FB16C2F7DC0F
+      EE22FB6FD666FE73FF0015E13488995721F3FD8B924BF28A7EAF1034E8666FE1
+      16240EF50655C87CFF00620D5EF05A8FDCC74F4FA7AA6BF67FE31E5BB5B1065C
+      3CBA77FEC42EB56571A8E953C52411078C7AB1B0918B2B20AEDFBB1D7A75CC7C
+      D1062C72894A2761F8F8316B5908B71CBC37CE765B17969ED2D939D2BCBD6965
+      145750D9C72C928470F24A4901A87A7A7419D2E200C41F27AA84E4600D7775FD
+      89F30BD2D15218A9CC81FBD6FE56FF008AF2CB0C89958D87CFF62E6FD201D47D
+      5E320F712B507FC93C171EF4DCBBBEDFD8D837EB3A7EE62DD1FF00DDADE2BFF1
+      5E03C348B95F21F3FD8DC8F7DCCD608A941F17ACDEFB7F7788AEF4DCAF90F9FE
+      C510F79EB3FEE62FB2BFEED6F16FF8AF27B522E57CBEDFD8AB09BD264FF478BE
+      D0DCCCDFCA3FE2BC81AEF4832DF61F3FD8B035E87907A110F8BFDFADFCA3FE2B
+      C96C8065DC3E7FB1D6F25E8E90C5F69FACADFCC7FE2BC6402C4CBB87CFF62B2C
+      B7C1391B7886E76F598F73FF0015E5743BD20CBB87CFF621E396F8DBA7EE63A7
+      0145F55BC3FE31E5942D00CAB97DBFB17C82F4C0E5E188028490256246DFF18F
+      058B5919572FB7F637A80004607F38FD47221B553FDD5F46157FFFD53CD47FB9
+      3F2C55434EFF008E5C3FF193FE67610C65C93262015A9A54D057C698125649F6
+      E1FF005CFF00C41B0844B986C91EAA8EE55A9F78C7A2F55AECAB3254EFC5B6FA
+      57081B2F56077443EA37ABE33C9FF1339CFE71533EF795D50FDE1F79647A0715
+      B2118EA8483F4B337F1CDC692578C3BBD0CAF1FB933B73FBD97FD7A1FF00805C
+      CB97273A3CCA254825A86B43434F1A0CA9905B07D83FEBBFFC4CE1288F25C841
+      4520D453A8C4A47241EC2D81AEDE9835FF0063968E6C07D3F05F2B84B79D8F41
+      1B1FC32B99A168C86A24F93029144315339AE65E44592CD2CBE1D3ACF96C4C50
+      F5F92E7498BE81EE7ACC7B638FB8221D8ABC401A7C67FE20D965361E617991B9
+      28E5B9E830526DAF548B84E5BFC0FF00AD71AD91D55588258577E20D3DAA7221
+      975438FEF9FF00D55FD6D967463D55E035F53D9B7FF81195C923AAD6A7390FF9
+      54FF00851920A3995380FC35F077FF00891C914455CFC51D54D454F4F99CAC73
+      48434247D5E335DB80DFE8CB0F3631FA57CD29FAB494A5381DFE8C023BA65F49
+      52BD5631C6C7BC83F51C16C9578B7A5D0F4C6D5FFFD63CD47FB93F2C550F6089
+      2693123A86467A32B0A823D63D41C9479B098B08A3A7D8547FA243D7FDF69FD3
+      1E23DE8F0E3DC16C961601E2FF0045877635FDDAFF002B7B61123DEC4E38D8D8
+      39AC2C0383F55876563FDDAFB7B62247BD3E1C6F905036565EAAFF00A345BAB7
+      FBAD7C47B659C46B9A38237C830ED7621A5EB350BC2DAE4078E828A0F4236F71
+      5CD3EAF11BB753ACC1BD84DB4A7B5771EB4692238A55D4350FD391D266E035D0
+      B568F20068F24EA2B2B1E727FA3444061FB0BD38AFB66E8C8D73776211DF608A
+      1A7D854FFA2C3D7FDF69E1F2CAB88F7B2F0E3DC1643616050D6D61FB6FFEEB5E
+      CC7DB0991EF4471C6B905EBA7D8711FE890F4FF7DA7F4C788F7A4638F7043358
+      D90B646FAB4553183FDDAF5A7CB26246F9B0E08F0F21C901A9AD9C31FA71431A
+      BF5665450401EE06606AF31E1E1B703593881C203139D9AFAFA1D3EDF7926709
+      B7604EE7E8CD6E1C6645D769F1199B7A0B69DA7471AA7D5A1A2F100945AEC40F
+      0CDF4491C8BD17871039058F61A7192202DA2DD8D7E05FE56F6C9714BBD0611B
+      1B05EFA6E9E287EAD103DBE05FE9804E5DECB823DC140D8D97AC83EAD1538B7E
+      C2F8AFB659C46B9B1E08DF20885D3EC4935B586BC47FBAD7BD7DB2B333DECBC3
+      8F70438B1B2F55C7D5A2A715FD85F16F6CB388D7363C11BE41560B0B126406D6
+      13461FEEB5FE51ED90948F7A4423DC1B3A7D912FC6D62D9BB46BFCA3DB0099EF
+      5108F7053874DB42A6B6D17DA7FD85ECC7DB24667BD6308F70574D3EC38FFBCB
+      0F53FEEB5F1F9640C8F7A4638F70538B4DB0682326DA2A9415F817C3E5923395
+      F3631846B905D2E9F6090C8CB6D1060A483C16A081F2C0272BE6B28468EC17DF
+      7D88BFE320FF00889CADB95FFDD5F462AFFFD73CD47FB93F2C550F61CCE93108
+      C80FEA6C58540FDF78023F5E4A3CD84F92299350F878CD0F5DEB13F4FF009198
+      EC8227DE3E5FB56C897FCE2FDF43F6CFFBA9BF91BFE2CC2298912B1B8F97ED6A
+      44BFE43F7D0D38B54FA4D5EA3FE2CC229352BE63E5FB540A5EFAABFBD8BECB6F
+      E9378AFF00C59966D48A95F31F8F8A1754D165D6ADDED2E2588502B452AC4DCD
+      5EADB8FDE65331121898196C6BE5FB585C57379A0DE9D3B531C5D7EC49FB2EBD
+      8839A8CB84C4D87519F4E606E2CB2CB55578E91BAD4EF56151F81196E1D4D6C5
+      9E1D556C9A437572E0F2B885493B7EE9CEDFF23333865817631CD7D47CBF6AF8
+      5AE821ADCC03E2734F49BBB1DFFBDEF93338338C8D731F8F8B5EBDCA20E77107
+      2A74589CFF00CCCC89C900C4E4A1CC7CBF6A025D49E2804733A1E2A16A8A57B7
+      BB3662E5D481C9C2C9AAE114C4B57D6CBB7D5EDAB24EE68AABB924E60C612C85
+      C28E3965367927DA0796AEF4B8FEBD712467519CA060E85FD352E3E1043AFD39
+      B7C508C5DCC71700D9904D0DFD032CB09F896A3D261DFF00E3265F121B889778
+      F97ED52923BEE717EF23FB47FDD4DFCADFF16648108225B6E3F1F15E62D44B2D
+      248A9BD4989ABFF27305C5352EF1F8F8BBD0BD13A5668BEC3FFBA9BC57FE2CC1
+      C429152BE63E5FB55426A1EA1FDF434E237F49EB5A9FF8B323B26A57CC7CBF6A
+      C586F3D77FDEC3F6577F49FC5BFE2DC3629152BE63E5FB57471DF06929342072
+      1D226FE51FF16602424096FB8F97ED7225FF00292B343F6BFDF4DFCA3FE2CC4D
+      2812DF71F2FDAE852FF81FDF423E37FF007537F31FF8B3134B112EF1F2FDADC6
+      9A871F8A6841A9AD22723A9FF8B3134A04BBC7CBF6AD852FFEAD1913435E0280
+      C4F4E9E3EA626AD1112E1E63E5FB5D2A5F7A0FCE684FC07901130EDBD0FA988A
+      B5909709DC7CBF6AFBEFB117FC641FF113906E57FF00757D18ABFFD03CD47FB9
+      3F2C550F60E91E9313C8C15164AB3134007ADDCE18F361334114DA8D8295ADD4
+      5B9A7DB53D47CF0F01EE41C91EF0B64BFB1E70FF00A545F6CFEDAFF237BE1113
+      DCC4E48D8DC39B50B0F5154DD45BAB7EDAFB7BE3C27B93E246F98506BDB21328
+      FACC5F65BF6D7C57DF2CE135C91C71BE61B8F51B3599C7D62220AAFEDAF8B7BE
+      030247248C91BE681D561D135B46B7BD92260A07070EA190EFB86AE038AC7262
+      6503D430BB8D1752D31DDB4CBC8AF2DD0D02991564A501E84D0F5ED98793477D
+      1C1C9831CBB9453CCDA8DA9E33C0C0AEC7634CC43A7945C6FCB91CA4AC3CED20
+      14F48E47C39F7B2F0B277A9BF9BAEE6DA18589F604E1F0667AA0E091E726A3B7
+      D775752F249159DBD2A5E59155A9ECB5E47EECBE1A337C9B21A780DC9B653A46
+      8DA1E8D0BCE2E63B8BD643CAE1D949151D14576CD843170F476038223986432E
+      A563E98FF488C9E495F8D7F987BE118CB64B246B9AA49A8D80515BA8B7651F6D
+      7C47BE4440F729C91EF0D497F63CE1FF00498BED9FDB5FE46F7C444F720E48D8
+      DC2E3A8E9E1941BA8AA6B4F8D7B7D38F09EE65E247BC2C6BFB1F5D3FD2A2FB0F
+      FB6BE2BEF8F09AE4C4E48DF30B86A361EA15FAD455E20FDB5F13EF8F09EE4F89
+      1BE61A5BFB1F5DFF00D2A2FB29FB6BE2DEF8F09AE48F1237CC39350B0E720FAD
+      45F687EDAFF28F7C4C4F724648EFB8747A8581693FD2A2FB5FCEBFCA3DF1313D
+      CA32477DC3A1BFB1E07FD2A2FB6FFB6BFCC7DF1313DCB1C91AE61B8F51B02B51
+      7515093FB6A3B9F138989EE51923DE1643A8580B68C9BA8851057E35AF4F0AE2
+      626F9223923C3CC372DFD8BC0FC6E622590F101D6A6A36DAB8889BE4B2C91E13
+      B85F7DF622FF008C83FE22720DCAFF00EEAFA3157FFFD13CD47FB93F2C55474D
+      FF008E5C3FF193FE671C218CB92627A8F9FF000C095927DB8BFD73FF00106C21
+      07985C7FBC5FF55BF58C53D54E44E532763C5BF5AE107641E6B044DEB30DBECA
+      FEB6C9716CBD551102C8D5DCF11FACE44951CDA89179CBB7471FF105C492A399
+      55500540E95FE1914AC87EC1FF005DFF00E2670944792F5FB23E4302428AEF66
+      3C7D2FF8D725D588FA7E0A7283E93D07EC9FD5930B2E4DCA8FC46D4F893FE243
+      1042C95CD4201DEAA3F1195B22D49F6E1FF5CFFC41B1083CC2F3D46064B0FF00
+      7E9FEA3FEB5C3D18F55C3ED9F90FE3813D568FEFDFFD44FD6D87A23AB69F6A4F
+      F5BFE3518A8EAE4FB527FADFF1A8C54756A1FB07FD77FF00891C4AC792E4E9F4
+      9FD670242C83FDE78CFF0090BFAB09E6C63F486E7FEE25FF0051BF56239A65F4
+      951BEFB117FC641FF1138192BFFBABE8C55FFFD23CD47FB93F2C550F60A5B498
+      9558A1326CC2848FDF76A8232439B09F24535B5C7C34BD946FBFC309DBFE45E1
+      B1DC8E13DE7ECFD4B24B69B9C5FE992FDB3FB30FF237FC578823B98989B1B9FB
+      3F5316F3579C61F2E4C2D209E5BCD482D5E2FDD2A461A8473611D6A7AF11F860
+      B1DCCB84F7FDDFA98737E66F994BF25FAB8EC07A64D01FF65ED819D23F4AFCCD
+      BD6B954D6578C0F4569ED555594789570FCBAF6A61B6263E6F4A8A279BF7B15F
+      48F14888F1BA88482AD52083E9EE0E1B15C98F09BE67ECFD4DC76D37397FD325
+      FB63F661FE45FF008AF124772044D9DCFD9FA97ADB4F56ADECA77DBE1846D4FF
+      008C78D8EE64227BCFD9FA96436D3F03FE992FDB7E8B0FF39FF8AF12477318C4
+      D733F67EA5C96D3F01CAF65269D42C23FE65E363B99089AE67ECFD4A6B6F3FD5
+      14FD725AFA63F661A7D9FF008C786C5F260227879F4F2FD4BE6B69FD17FF004C
+      96BC4F5587C3FE31E0045F265289AE67ECFD4E9ADA7E03FD325FB49D561FE61F
+      F15E208EE5944D733F67EA426B2F77A7E937B7F0DD48F2DAC324C8922C450B46
+      A58034406951E382C772784F79FB3F5301D13CFF00AF6ADABD9585C081229A50
+      ACF1C6438A8236E4CC3F0C16931BEAF4B36D71C9697B281BD47187FEA9E4AC77
+      2384F79FB3F52C6B69FD74FF004C97EC3FECC3E2BFF15E362B92384DF33F67EA
+      5C2DA7F50FFA6CB4E236E30F5A9EFE9E363B9784DF33F67EA5A2DE6133D6F25A
+      715ED0F8B7FC578DEDC9784DF33F67EA63FE6DD6750F2EE9A6FACA7F5A569D23
+      E33A215E252A7EC2A1AEDE389F72444D9DFEE4AFC97E6DD5FCCBA8DC5A5E3C70
+      A245EA86B740AC5832AEFCF98A532369E1F366B0DB4FC0FF00A64BF6DFA2C3FC
+      C7FE2BC9123B98C627BCFD9FA9B8EDA7E3BDECA4D4EE1611DCFF00C578923B94
+      44F79FB3F52C86DA736D1D2F250780FD9869D3C3D3C248BE488C4F0F33F67EA6
+      E5B69C40E4DE4AD4435056200EDED1E0045F25944D1DCFD9FA97DF7D88BFE320
+      FF00889C8372BFFBABE8C55FFFD33CD47FB93F2C550F60C1349898824092A428
+      2C7FBEF015272439B099D914D7D10E348E63BD36865DBDFECE1E128331E7F22A
+      575A84312094ACBC63E4EC4C520145463D4A8C6B641902473F93E7CBAB89F50B
+      C96EA63CEE2E642EC7C59CD7F8E41B5EBB0E93E55F2FE9D1AEA3104882719EE2
+      681C8790D3A9286B5DFDB0F0ECC38ACD312FD11E416BA9646D6488198B4712AB
+      85009FB3FDD93B7CF22CD965EEB10E93E4D92E7CBB3B3C76C91476B72F1B3215
+      F5BD36159169B6E37C956CC2F761707E647996359FD4992479138C4DE9A0E125
+      57E3D86F450450ED8B3641E50F356B6D6BA9EA7AE4ED71A7D9C7555F4D43997A
+      D032A8A6D41F17F36042432F9F3CDBAA5DFA1A63FA02566315B411A3B6E4B6EC
+      CA49A773B625406A5F3979DF45B9586FE621C00FE85C45190CA76AD54034DBB3
+      63CD2F4187CCAB7DE509B56B4568AE52D2660BC19D5258908EB4A52A36AE1F36
+      3B0D9E7D6DF993E638E5E575225C41C5C184C6880B3290A49500D0120E292876
+      F3F79B52E3D596EE82A1BD06890253A8DB8D69F4E04B3E3E6587CC3E4AD46E82
+      14B9FAB4F1DC468ACCA922C649DFA0041A8A9C34C49792E95A83695A85BEA11A
+      091EDDB9AA31A024034AD30324F24FCC1F3635C7AFF5D11EF510AC51F000F6A1
+      527EF35C5598CBE6CD5753F2A2EB3A67EE353B5E62EC2C7EA464271E54E40815
+      521FF0C3D18DEE81F2679E755D475A163ABCC258678D845C230AC244F887D815
+      3B06C52BBCEDE75D4F4CD6059691288923893D7E7182DCD896028E2A2808FBF1
+      51DEA77BAFEB9179421D52EDD5AFE7B856466857808594F1A0E3C4D695FA713C
+      947354F20F98F50D4B53B94BE28C890175F4A1556E5C947FBAD6B4C14A4D252F
+      E70F3E2C8EB12C9C0335296A0ED53FE46369417FCAC6F360FF008FB4FF009131
+      FF00CD38ABD43CB5AADC5D6816973A8AC8D78E84BF085E8454F1A715A74A6480
+      B606406C99CB791340FF0004A0943B18651D4773C698447761298E1EBF22EBE7
+      5E116F5FDE0FD47234DCADEA2FA5F4634AFF00FFD43CD47FB93F2C55474DFF00
+      8E5C3FF193FE671C218CB92627A8F9FF000C09435FC42E20301E927243F4C6C3
+      0A0F30F9DA7866B2BA92094719E0728C3C190D30327AF6A73E97E75D0218E0BF
+      8ADC10B24E1D94346CB4AAB024537EF8A3ABCB35BB0B3D36F8DAD95E2DF448A3
+      94E9F679EF5008241A788C52CD47FE4A66F98FFA8D3851D58F790ACE1BDF335A
+      A4EA1A38C3C9C4EE0955207DC4D7014BD735CBFB2F2FE91757F240248E3A5211
+      B73762154577A6E7738A1E5D6FE65F33EBB7E2DB488E1B79DB932FA31AD553B9
+      2F27223E8C141294F99EC354B0BE8D358BBFADDF491091897690A29240525A9E
+      1D30AB38F2C7FE4B7D53FE315DFF00C40E2AF3ED01EDA3D6AC5EECAADBACCA5D
+      9FEC8DF627D81C282CC7F3364D39869C96CF1BDCFC6C7D360D48D82D2B4F1ED8
+      94A1FC9BCFFC2BE68EBC0DBB53C2BE93D7F860431CF2B4315C79874E8A650F1B
+      4CB553B834DF12964BF9A70450EA965E92052602091D4D1B6FD78854E7F2CD23
+      9B41BB8255E51C97132B29DC106387255618F56077314DE57F32D16B5B1B8592
+      3FF2A30430FBD7639164A90C7379B3CD27AD2FAE19DBC562AD7F051418AB3AFC
+      C48920F2DA43180A91DCC6AAA3A00233933D188EA90FE571A6B377FF0030C6BF
+      F06B911CD92A79CBCE092FABA3E8AC041565BABB4EB2549F8108FD9F13FB5FEA
+      FDA24DA005BE49F25BDF94D5B53888B4146B78587F79FE511FCBE03BFCBA81BA
+      5EB16EA16D635029441B7D189E6C4726AE50B4321276E0DB7D19289DD12FA4A9
+      5EAA848A83FDD83FE227236CD5F8AFA75A0AD31B57FFD53CD47FB93F2C550F60
+      A1F4989092019284A92A7FBE3D08A11921CD84C5845358424AFC738DFB4F37FC
+      D78788A38079FCCAC92C61E717C737DB35FDFCDFCADFE5E22450602C73F99621
+      E6BF20C5AACFF5CD39FD2BC61F1862583F1A01524D6BEF906CE5B30A7FCBFF00
+      31A394F4E3623A10C6869F318DA533D2FF002CB51B8987E9199618850958EA58
+      835EEC001D3C0E2ACC357F2A0FF0CCDA169150FC62F4D6491FD31497D4634DF7
+      343DB0F4635BA43E50F24EAFA4EB4B777A63FABA23C6FE93B86058022878AFEB
+      C09E6CC35CF2F43ABE9575A789250D2D0A33C8F20565A30D9988EA30936C631A
+      79941E48F35D85D09AC1C453212AB3C52321F03B800FCF033465E7E5C6BD7114
+      574D722E35098B35D34CCC7B0E346A3313D6B5C0A9EE9BA25F68FE49D62DB50A
+      72105C490345249C4A3C5D0A90A3AFB616357BBCCB4AB1FD27A85BD873F4CCED
+      C03D2B43427A6D8B24F7FE55FEBE26F488882F2E3EA726A6E695FB35C3BABD0E
+      DBCA29A6F95EEB4AB662D79710C8A5CB322B4B2AF1AB0534A7D076C01890C4B4
+      5F226B7A66B165797262F46392ADC19F950035A7C23F5E11BA4A6FE74F29EA5A
+      DDE5ABE9E57D3891958CCEEC79135EB46C32401498793BCB579A3D8C967A89A4
+      AF2C932FA3248A0A958D77A71DF6C3195063216503E73F24DDEB1756F73A6711
+      32A1498CAEE6AB5AAEF463B6F919166052EF24F92EE347BAB9B8D5286728AB0F
+      A2EEB452493BD14EE40C0A77D91BE6FF002FDCEADA7359E9EC4CA2E15CFAD248
+      CA1553DF978E5922480C62289497CA9E4ED5B4B9AFDAE8C67D7B67863F4D9C7C
+      6D422B555DB21BB2E6908FCB6F3110483050547DA7EC687F63025A1F971E603F
+      B507FC149FF3461A2AF44F28E87369DA0C5677AEC2642EC0C32C8AB4762C3A15
+      F1F0C364303105389ED22485C2B4C58293BCF29E83B82D4C9C4EEC25015D7E65
+      BBD46291723FEEC1B7D07216DCAFE92FA5D4F4C7890FFFD63CD47FB93F2C5543
+      4E0C74A8B82F360E5B88A0278CA49A568308632E48A6B89F6E36921DF7AB4436
+      FF0083386877B1323DDF72D79A7668C8B4928AC4B55A2E9C48DBE3F7C343BD04
+      9DB63F67EB6CCF3F3561692710083F1455DE94A7C7ED8D0EF5E237C8FD8E334E
+      6556FAA49C42B03F1455A923B73F6C6877AF11BE47ECFD6E134E2566FAA49C4A
+      A8FB5156A09FF2FDF1A1DEBC46F91FB3F5ACFADCC2463F549284003E28EBB57F
+      CBF7C3C3E6BC46F97DCB56EAE15A426D5E8CD51BC7D3881BFC7ED92E11DEA09D
+      F6FB9725E4F53CED241BED468CEDF4B8C0603BD2247BBEE5D14F32A1ADAC9BB3
+      11468BA33123F6C78E4481DE8048E87ECFD6B92E2E0200D6920603701A223EFE
+      63050EF4891AE5F72075186EAF746B9D356DA44967B778039319505D0AD7EDD4
+      8C481DE8892072FB982695F97DA9E99A85BDF97F5040DCCA7145AED4EBEA1FD5
+      881BB224D727A0492CCCB45B592BC94EE631D181FE7396803BD8927BBEE57371
+      3B22F1B490EEA4D5A21B03BFED9CAE877A991EEFB96CF24EE632B6B27C0C49A9
+      8BA71236F8FDF0C6875524EDB1FB3F5A999E7E4296B253B9E5183FF13C9D0EF5
+      E23DDF73467B832ABFD5E4E21581F8A3AD491FE5FB63416CDF2FB9B171701C9F
+      AB49C6837E51D6A2BDB9E3C23BD788DF2FB9523B89CCACC6D6420AA81468EBB1
+      35FDBF7C8188EF5E237CBEE58D34E24726D6401882BF1475E806FF001FB64801
+      5CD6CF77DCE8A79D5D89B59376DA8D1F4A01FCE3120573504F77DCAA92CEA8CA
+      D69254B31D9A23B33123F6C78E42877A827B8FD9FAD41269C2FC56B20352681A
+      323AFF00AE32CA1DEA247BBEE5F6F34E9008FEAB2175503668E95029D79FF0C8
+      C80BE6A090397DCDCB2CECAC0DAC8A5D4AD4B474048A750F5FC310077A9248E5
+      F72EBE75E116FF00EEC1FF0011395D16D54E6DE9F2A7C34A61A57FFFD7905DA7
+      38C8C55036F7A9636EB03C523152DBA0047C4C4F723C7155FF00A6E0FF007C4D
+      F72FFCD58ABBF4DC1FEF89BEE5FF009AB1577E9B83FDF137DCBFF3562AEFD370
+      7FBE26FB97FE6AC5563EB709D84130F1D97FE6AC9442A98D5E127FB89BEE5FF9
+      AB2650A9FA5EDA9FEF3CDF3A2FFCD590B29533ABC5FEF897EE5FF9AB2685F1EB
+      50AD41826A7C97FE6AC8C82AA7E9B83FDF137DCBFF00356412EFD3707FBE26FB
+      97FE6AC55A3AD42411E84DBFB2FF00CD58AA8FE9887FDF137DCBFF003565A855
+      4D6A10B4F426FB97FE6ACACF34AEFD3707FBE26FB97FE6AC0AB4EB76C7FE3DE6
+      3FEC57FE6AC90055DFA6AD8FFC7BCBF727FCD58EEAA6DAC404FC304C07C97FE6
+      AC904371EB10835F426FB97FE6AC1256E4D661241F426FB97FE6AC62AB06B110
+      35F426FB97FE6AC92ABFE9B83FDF137DCBFF00356549513AB4553FB89A9F25FF
+      009AB27685E9AC42A6BE84DFF02BFF00356026D2BFF4D4076FABCDFF0002BFF3
+      56455799A3BB0812365A372F880F023B1386D51D4FDDD3DB02BFFFD093B529BF
+      4C550AFF0056AFC58AACFF0043C55DFE878ABBFD0F1577FA1E2AA4FF0054E593
+      085A3EAD5DBAE1571FABF7C55DFE8BDF155C9F53A8DF7F90FEB80AAAFF00A1E4
+      12EFF43C55DFE878AA81FAAD76CB50A91FD5286B9092AE6FA9537E9802544FD5
+      72C43BFD171570FAA773F7018AAB2FD4A9B74CACA5C7EA5DE9F4D3156C7D4BB6
+      0577FA1E2AEFF43C55DFE878ABBFD0F15578BD1FD8C555F157FFD9}
+  end
+  object StatusBar1: TStatusBar
+    Left = 0
+    Top = 782
+    Width = 1130
+    Height = 19
+    Panels = <>
+    SimplePanel = False
+  end
+  object Panel1: TPanel
+    Left = 0
+    Top = 713
+    Width = 1130
+    Height = 69
+    Align = alBottom
+    TabOrder = 1
+    DesignSize = (
+      1130
+      69)
+    object Memo1: TMemo
+      Left = 3
+      Top = 3
+      Width = 1123
+      Height = 62
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      Color = clWhite
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clBlack
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      PopupMenu = PopupMenu1
+      ReadOnly = True
+      TabOrder = 0
+    end
+  end
+  object ToolBar1: TToolBar
+    Left = 0
+    Top = 0
+    Width = 1130
+    Height = 37
+    Hint = 'GVUI tool bar'
+    ButtonHeight = 31
+    ButtonWidth = 32
+    Caption = 'ToolBar1'
+    Color = 15790320
+    Customizable = True
+    EdgeBorders = [ebLeft, ebTop, ebRight]
+    Images = ImageList1
+    ParentColor = False
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 2
+    object ToolButton1: TToolButton
+      Left = 0
+      Top = 2
+      Hint = 'Run'
+      Caption = 'ToolButton1'
+      ImageIndex = 0
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = ToolButton1Click
+    end
+    object ToolButton2: TToolButton
+      Left = 32
+      Top = 2
+      Hint = 'Settings'
+      Caption = 'ToolButton2'
+      ImageIndex = 1
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = ToolButton2Click
+    end
+    object ToolButton4: TToolButton
+      Left = 64
+      Top = 2
+      Width = 5
+      Caption = 'ToolButton4'
+      ImageIndex = 3
+      Style = tbsSeparator
+    end
+    object ToolButton3: TToolButton
+      Left = 69
+      Top = 2
+      Hint = 'New File'
+      Caption = 'ToolButton3'
+      ImageIndex = 5
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = ToolButton3Click
+    end
+    object ToolButton6: TToolButton
+      Left = 101
+      Top = 2
+      Hint = 'Open'
+      Caption = 'ToolButton6'
+      ImageIndex = 4
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = ToolButton6Click
+    end
+    object ToolButton5: TToolButton
+      Left = 133
+      Top = 2
+      Hint = 'Save'
+      Caption = 'ToolButton5'
+      ImageIndex = 3
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = ToolButton5Click
+    end
+  end
+  object MainMenu1: TMainMenu
+    Left = 128
+    Top = 104
+    object File1: TMenuItem
+      Caption = 'File'
+      object New1: TMenuItem
+        Caption = 'New'
+        OnClick = New1Click
+      end
+      object Open1: TMenuItem
+        Caption = 'Open'
+        OnClick = Open1Click
+      end
+      object Save1: TMenuItem
+        Caption = 'Save'
+        ShortCut = 16467
+        OnClick = Save1Click
+      end
+      object SaveAs1: TMenuItem
+        Caption = 'Save As..'
+        OnClick = SaveAs1Click
+      end
+      object Close1: TMenuItem
+        Caption = 'Close'
+        OnClick = Close1Click
+      end
+    end
+    object Edit1: TMenuItem
+      Caption = 'Edit'
+      object Undo1: TMenuItem
+        Caption = 'Undo'
+        ShortCut = 16474
+        OnClick = Undo1Click
+      end
+      object Cut1: TMenuItem
+        Caption = 'Cut'
+        ShortCut = 16472
+        OnClick = Cut1Click
+      end
+      object Copy1: TMenuItem
+        Caption = 'Copy'
+        ShortCut = 16451
+        OnClick = Copy1Click
+      end
+      object Paste1: TMenuItem
+        Caption = 'Paste'
+        ShortCut = 16470
+        OnClick = Paste1Click
+      end
+      object Find1: TMenuItem
+        Caption = 'Find'
+        ShortCut = 16454
+        OnClick = Find1Click
+      end
+    end
+    object Graphviz1: TMenuItem
+      Caption = 'Graphviz'
+      object DotProcess1: TMenuItem
+        AutoHotkeys = maAutomatic
+        Caption = 'Run'
+        ShortCut = 116
+        OnClick = DotProcess1Click
+      end
+      object Settings1: TMenuItem
+        Caption = 'Settings'
+        ShortCut = 8308
+        OnClick = Settings1Click
+      end
+      object PreprocessorSettings1: TMenuItem
+        Caption = 'Preprocessor Settings'
+        OnClick = PreprocessorSettings1Click
+      end
+    end
+    object View1: TMenuItem
+      Caption = 'View'
+      object Cascade1: TMenuItem
+        Caption = 'Cascade'
+        OnClick = Cascade1Click
+      end
+      object Tile1: TMenuItem
+        Caption = 'Tile'
+        OnClick = Tile1Click
+      end
+    end
+    object Help1: TMenuItem
+      Caption = 'Help'
+      object Help2: TMenuItem
+        Caption = 'Help'
+        OnClick = Help2Click
+      end
+      object Graphvizonnet1: TMenuItem
+        Caption = 'Graphviz on net'
+        OnClick = Graphvizonnet1Click
+      end
+      object AboutGraphvizEditor1: TMenuItem
+        Caption = 'About GVedit'
+        OnClick = AboutGraphvizEditor1Click
+      end
+    end
+  end
+  object PopupMenu1: TPopupMenu
+    Left = 176
+    Top = 96
+    object SaveCommandlogtofile1: TMenuItem
+      Caption = 'Save command log to file'
+      OnClick = SaveCommandlogtofile1Click
+    end
+    object Clear1: TMenuItem
+      Caption = 'Clear'
+      OnClick = Clear1Click
+    end
+  end
+  object ImageList1: TImageList
+    Height = 25
+    Width = 25
+    Left = 296
+    Top = 72
+    Bitmap = {
+      494C010106000900040019001900FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000640000004B00000001002000000000003075
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000000000000000000000000000000000000000000000000000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF0000000000000000000000000000000000000000000000
+      000000FFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000FFFF0000FFFF000000
+      00007B7B7B007B7B7B007B7B7B0000FFFF0000FFFF007B7B7B007B7B7B007B7B
+      7B007B7B7B0000FFFF0000FFFF00000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000FFFF0000FF
+      FF00000000007B7B7B007B7B7B007B7B7B0000FFFF0000FFFF007B7B7B007B7B
+      7B007B7B7B007B7B7B0000FFFF0000FFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000FFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000FFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000FFFF000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000FFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000007B7B7B0000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00000000007B7B7B00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000007B7B7B00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000007B7B7B000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF000000000000000000FFFFFF00000000000000000000000000FFFF
+      FF00000000007B7B7B0000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00000000007B7B7B00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000007B7B7B00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000007B7B7B000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000FFFF0000FFFF0000FFFF000000
+      0000FFFFFF0000000000000000000000000000000000FFFFFF0000000000FFFF
+      FF000000000000FFFF0000FFFF00000000007B7B7B0000000000000000000000
+      0000000000000000000000000000000000000000000000FFFF0000FFFF0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF000000000000FFFF0000FFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF0000FFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF0000FFFF0000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000FFFF0000FFFF0000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF0000FF
+      FF0000FFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF000000000000000000FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000BDBDBD00FFFFFF0000000000FFFFFF000000000000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF000000
+      000000FFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000000000000000000000FFFF0000FFFF0000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000000000000000000000FFFF0000FFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000FFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000000000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF0000FFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF0000FFFF000000000000000000000000000000000000FF
+      FF0000FFFF000000000000000000000000000000000000FFFF0000FFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000FFFF0000FFFF000000000000000000000000000000
+      000000FFFF0000FFFF000000000000000000000000000000000000FFFF0000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000FFFF0000000000000000000000
+      000000000000000000000000000000FFFF000000000000000000000000000000
+      000000000000000000000000000000FFFF007B7B7B0000000000000000000000
+      0000000000000000000000000000000000000000000000FFFF00000000000000
+      00000000000000000000000000000000000000FFFF0000000000000000000000
+      00000000000000000000000000000000000000FFFF0000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000EFEFF7007B8CAD00E7E7E70000000000000000000000
+      000000000000F7F7F700C6CED600D6D6DE000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000EFEFEF00B5B5BD00C6CECE00DEDEDE00F7F7F700000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000DEE7EF007384
+      AD00F7F7EF0000000000000000000000000000000000DEDEE7008C94AD00CED6
+      DE00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000DEDEDE00525252008C8C8C0000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000D6D6D600B5ADA500DECE
+      B500C6BDBD00B5B5B5006B6B6B008C8C8C000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000DEDEDE00C6C6C600D6D6DE004A638C00A5ADBD00DEDEDE00F7F7F7000000
+      000000000000C6CEDE009CADBD00F7F7F7000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000E7E7E7000000
+      000039393900EFEFEF0000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000C6CECE00BDA59400D6AD7B00D6B58C00CEB59400948473008484
+      7B00ADB5B500D6D6D600EFEFEF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000D6D6DE009C9CAD00C6CED6004A6B
+      8C0073849C008494B5008C9CB500B5BDCE00CECED6009CA5BD00BDCED6000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000EFEFEF00BDBDBD00F7F7F70000000000000000000000
+      00000000000000000000F7F7F7004242420008080800DEDEDE00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000EFEFEF00BDBDBD00F7F7F70000000000BDBDBD00C6AD9400D6B5
+      8400D6B58400D6B58400AD8C5A009C7B5A00C6AD9400B5AD9C00A5A5A500BDC6
+      C600E7E7E7000000000000000000000000000000000000000000000000000000
+      00000000000000000000EFEFEF00BDBDBD00F7F7F70000000000000000000000
+      0000E7E7EF0094949C009CADC6008494AD00D6D6D600C6C6D60063739C00ADBD
+      CE007B94B5007384AD00EFEFF700000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000CECECE00424242000808
+      0800ADADAD000000000000000000000000000000000000000000000000008484
+      840000000000BDBDBD0000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000CECECE004242420008080800ADAD
+      AD00F7F7F700B5B5B500CEB59400D6B58C00D6B59400D6B59400BD9C73009C7B
+      5200CEA57B00D6B58C00CEAD8C00B5A58C009C9C9400CED6D600000000000000
+      00000000000000000000000000000000000000000000CECECE00424242000808
+      0800ADADAD00000000000000000000000000F7F7F700848494008494B5009CAD
+      C600D6D6D600ADB5C60094A5B50000000000B5C6D6008494B500000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000007B7B7B00000000007B7B7B007B7B7B0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000F7F7
+      F700A5A5A50008080800000000000000000029292900EFEFEF00000000000000
+      0000000000000000000000000000B5B5B5000000000094949400000000000000
+      0000000000000000000000000000000000000000000000000000F7F7F700A5A5
+      A50008080800000000000000000029292900DEDEDE00BDB5B500D6BD9400DEBD
+      9400DEBD9400DEBD9400CEAD8400A5845A00C6A57B00DEBD9400DEB58C00DEB5
+      8400B5A58C00BDC6BD000000000000000000000000000000000000000000F7F7
+      F700A5A5A50008080800000000000000000029292900EFEFEF00000000000000
+      0000E7EFEF00737B84007B94AD00BDC6D600D6D6D6008C94AD00B5C6CE000000
+      0000A5B5CE00B5BDD60000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000BDBDBD0000000000BDBD
+      BD00BDBDBD000000000000000000000000000000000000000000000000000000
+      00000000000000000000CECECE005252520000000000080808008C8C8C005A5A
+      5A000000000094949400000000000000000000000000EFEFEF00B5B5B5005A5A
+      5A00000000004A4A4A00F7F7F700000000000000000000000000000000000000
+      000000000000CECECE005252520000000000080808008C8C8C005A5A5A000000
+      000094949400C6BDB500DEBD9400DEC69C00DEBD9400CEB58C00B59C7300A58C
+      6300B59C7300DEBD9400DEBD9400DEBD9400BDAD9400BDC6BD00000000000000
+      00000000000000000000CECECE005252520000000000080808008C8C8C005A5A
+      5A0000000000949494000000000000000000737B84004A4A5200424A63006B7B
+      8C008C949C0063738400DEDEE700E7EFEF0094A5BD00E7E7EF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000BDBDBD00BDBDBD00BDBDBD00BDBDBD0000000000000000000000
+      0000000000000000000000000000000000000000000000000000ADADAD000000
+      000031313100CECECE0000000000DEDEDE001818180010101000D6D6D6000000
+      0000ADADAD003939390000000000000000001818180084848400000000000000
+      00000000000000000000000000000000000000000000ADADAD00000000003131
+      3100CECECE0000000000DEDEDE001818180052525200C6B5A500DEC69C00CEB5
+      8C00B59C7300A58C6B00AD946B00AD947300C6AD8C00DEC69C00DEC69C00DEC6
+      9C00C6AD9400BDBDBD0000000000000000000000000000000000ADADAD000000
+      000031313100CECECE0000000000DEDEDE001818180010101000D6D6D600E7E7
+      EF00424A4A00949484006B6B630039424A0029314200424A52007B848C008C94
+      A5008494AD00E7E7EF0000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000F7F7F700BDBDBD00E7E7E70000000000000000000000
+      00008484840000000000424242004A4A4A00080808000000000039393900ADAD
+      AD00E7E7E7000000000000000000000000000000000000000000000000000000
+      000000000000F7F7F700BDBDBD00E7E7E7000000000000000000000000008484
+      840063636300AD9C8C00BD9C7B00AD946B00AD947300B59C7B00CEB59400DEC6
+      A500DECEAD00DECEAD00DECEA500E7CEA500C6B59C00BDBDBD00000000000000
+      00000000000000000000F7F7F700BDBDBD00E7E7E70000000000000000000000
+      00008484840000000000424242005252520052525200ADA5D600C6C6D600DEDE
+      DE00D6D6CE00ADADAD007B847B00636B6B00525A6B00636B7B00ADADAD00D6D6
+      D600000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000007B7B
+      7B00000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000E7E7E70021212100000000000000
+      000000000000000000009C9C9C00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000E7E7E7007B848400A5947300AD946B00AD9C
+      7300AD9C7300CEBD9C00E7D6B500E7D6B500E7D6B500E7D6B500E7CEB500E7CE
+      AD00CEBDA500B5BDBD0000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000E7E7E70021212100000000002121
+      21007B7B73009494D6006363EF00D6D6FF00F7F7FF000000000000000000F7F7
+      F700DEDEDE009C9C9C006B6B7300B5B5BD000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00000000007B7B7B000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000008C8C8C000000000000000000000000000000000029292900EFEF
+      EF00F7F7F700E7E7E70000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000F7F7
+      F700B5B5B500AD846B00BD6B6300B5846B00B57B6B00BD8C7300E7CEAD00E7DE
+      BD00E7D6B500E7D6B500E7D6B500EFD6B500CEC6AD00B5B5B500000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000008C8C8C0000000000212929009C9C9400D6D6D6003939DE003939
+      FF009494EF00D6D6CE0094949400A5A59C00FFFFF700EFEFE7008C8C8C00D6D6
+      D600000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000007B7B
+      7B00000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000E7E7E700212121000000
+      000000000000000000000000000094949400E7E7E700424242008C8C8C00EFEF
+      EF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000F7F7F700CECECE00B5947B00BD635A00BD5A
+      5200BD736300B57B6B00D6A58C00EFB5A500C6AD9400D6C6A500E7D6BD00EFDE
+      BD00D6CEB500B5B5B50000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000E7E7E700212121002931
+      3900BDBDB500D6D6D600A5A5D6004A52A50052527B006B6B5A00292921005A5A
+      8C008484F700A5A5D6009C9C9400EFEFEF000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF000000000000000000FFFF
+      FF000000000000000000BDBDBD0000000000FF000000FF000000FF0000000000
+      FF00FF000000FF000000000000007B7B7B000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000094949400000000000000000000000000000000004242
+      4200B5B5B500181818000000000021212100ADADAD0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000EFEF
+      EF00DED6CE00CEB59400BD6B5A00BD5A5A00B5947B00B57B6B00C6948400E784
+      7B00BD8C7B00B5AD9400BDB59400DED6B500DED6BD00B5B5B500000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000008C8C8C00424A5200D6D6D600D6BDBD009C847B00635A
+      5200D6D6CE00C6C6C6007373AD006363DE008484EF004242CE00ADADB5000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000000000000000FF000000FF000000FF0000000000000000007B7B
+      7B00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000DEDEDE001818
+      1800000000000000000000000000080808002121210021212100ADADAD005A5A
+      5A00525252000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000E7EFEF00DED6C600DEC6A500B58C7300B584
+      7300B5A58400B59C8400BD8C7300C6948400C6AD9400DED6BD00CEC6AD00D6CE
+      AD00E7DEC600B5B5B50000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000B5B5BD00636B
+      6B00D6A59C00D6636300BD6B6B00C66B6B00DEB5B500D6DEDE009C9CEF005A5A
+      E7007B7BDE004A4AC600C6C6C600000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0000000000000000000000
+      000000000000FFFFFF0000000000FFFFFF00000000000000FF000000FF000000
+      FF000000FF000000FF00000000007B7B7B000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000CECECE00E7E7
+      E7000000000000000000000000007B7B7B000000000000000000000000000000
+      0000000000004242420000000000F7F7F700EFEFEF0000000000000000000000
+      00000000000000000000000000000000000000000000CECECE00E7E7E700E7E7
+      E700DEDECE00DECEBD00C6BDA500A59C8C00A59C8C00A59C8C00A59C8C00A5A5
+      8C00B5AD9C00DED6C600DED6C600DED6C600D6CEBD00B5B5B500000000000000
+      0000000000000000000000000000000000000000000000000000CECECE00E7E7
+      E7000000000000000000A5B5BD00949C9400D6848C00D6737300D6ADAD00D684
+      8400D6737300DEDEDE00EFEFFF00B5B5FF009C9CE700848C9400D6D6D6000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF007B7B
+      7B00000000000000000000000000000000000000000000000000000000000000
+      000000000000EFEFEF002121210042424200E7E7E7000000000000000000DEDE
+      DE0010101000000000000000000000000000000000006B6B6B00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000EFEFEF002121210042424200DEDEDE00E7E7E700E7E7E700D6D6D6007B7B
+      7B00737373006B6B6B00737373007373730094949400B5B5B500B5B5B500B5B5
+      B500ADADAD00BDBDBD0000000000000000000000000000000000000000000000
+      000000000000EFEFEF002121210042424200E7E7E70000000000848C9400B5B5
+      A500C6C6BD00CE9C9400D68C8C00D69C9C00D6CECE00E7E7E700000000000000
+      0000E7E7DE0084848400E7E7EF00000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF000000000000000000FFFF
+      FF000000000000000000000000000000000000000000000000000000FF000000
+      FF000000FF0000000000000000007B7B7B000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000C6C6C6001818
+      180029292900CECECE0000000000000000009494940000000000000000001818
+      18005252520073737300F7F7F700000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000C6C6C600181818002929
+      2900CECECE000000000000000000949494000000000000000000181818005252
+      520073737300F7F7F70000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000C6C6C6001818
+      180029292900CECECE00A5B5BD0094949C00737B8400636B6B006B736B007B84
+      7B00949C8C00A5A59C00CECEC600DEE7DE00C6C6BD00848C8C00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF000000
+      000000000000000000000000FF000000FF000000FF0000000000000000007B7B
+      7B00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000D6D6D600393939000808080073737300B5B5
+      B500B5B5B500000000004A4A4A00C6C6C600BDBDBD00ADADAD00E7E7E7000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000D6D6D600393939000808080073737300B5B5B500B5B5
+      B500000000004A4A4A00C6C6C600BDBDBD00ADADAD00E7E7E700000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000D6D6D600393939000808080073737300B5B5
+      B5009CADB500314A6300525A6300526B84006B73840084848C0084848C00737B
+      84006B737300ADADB50000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0000000000BDBDBD00FFFF
+      FF0000000000FFFFFF000000000000000000000000007B7B7B000000FF000000
+      FF000000FF0000000000000000007B7B7B000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000EFEFEF007B7B7B0021212100000000001010100021212100CECECE007373
+      730008080800080808005A5A5A00EFEFEF000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000EFEF
+      EF007B7B7B0021212100000000001010100021212100CECECE00737373000808
+      0800080808005A5A5A00EFEFEF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000EFEFEF007B7B7B0021212100000000002939390031425200C6CECE00426B
+      A5004A6B8C00B5B5B500C6C6C600DEDEDE00CECED600E7E7EF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      FF000000FF000000FF000000FF000000FF000000000000000000000000007B7B
+      7B00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000F7F7F700DEDE
+      DE00ADADAD00ADADAD00B5B5B50008080800000000000000000000000000B5B5
+      B500000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000F7F7F700DEDEDE00ADAD
+      AD00ADADAD00B5B5B50008080800000000000000000000000000B5B5B5000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000F7F7F700DEDE
+      DE00ADADAD00ADADAD00B5B5B50008080800000000000000000000000000B5B5
+      B500000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000007B7B7B000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000949494000000
+      00000000000000000000000000009C9C9C000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000094949400000000000000
+      000000000000000000009C9C9C00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000949494000000
+      00000000000000000000000000009C9C9C000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000DEDEDE0010101000000000000000000018181800D6D6
+      D600000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000DEDEDE0010101000000000000000000018181800D6D6D6000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000DEDEDE0010101000000000000000000018181800D6D6
+      D600000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000BDBD
+      BD003131310031313100C6C6C600000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000BDBDBD003131
+      310031313100C6C6C60000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000BDBD
+      BD003131310031313100C6C6C600000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000424D3E000000000000003E00000028000000640000004B00000001000100
+      00000000B00400000000000000000000000000000000000000000000FFFFFF00
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000FFFFFFFFFFFFC0000000000000000000
+      FFFFFFFFFFFFC0000000000000000000FFFFFFFFFFFFC0000000000000000000
+      FFFFFFFFFFFFC0000000000000000000FFFFFFFFFFFFC0000000000000000000
+      FFF7EFFFFBF7C0000000000000000000F9001FFC800FC0000000000000000000
+      FC003FFE001FC0000000000000000000FE003FFF001FC0000000000000000000
+      FE003FFF001FC0000000000000000000FE003FFF001FC0000000000000000000
+      FE003FFF001FC0000000000000000000F00017F8000FC0000000000000000000
+      F8000FFC0007C0000000000000000000FE007FFF003FC0000000000000000000
+      FE00FFFF007FC0000000000000000000FE00FFFF007FC0000000000000000000
+      FE027FFF013FC0000000000000000000FC073FFE039FC0000000000000000000
+      F9E79FFCF3CFC0000000000000000000F7EFE7FBF7F7C0000000000000000000
+      FFFFFFFFFFFFC0000000000000000000FFFFFFFFFFFFC0000000000000000000
+      FFFFFFFFFFFFC0000000000000000000FFFFFFFFFFFFC0000000000000000000
+      FFFFFFFFFFFFFFFC78FFFFFFF0000000FFFFFFFF83FFFFFC78FFFFFFF0000000
+      FFFC7FFF80FFFFF018FFFFFFF0000000FFFC3FFF801FFFF001FFFFFFF0000000
+      FC7C3FF88007FC7001FFFFFFF0000000F87E3FF00003F87013FFFE01F0000000
+      E03E3FC00003E03013FFFE01F0000000C0381F800003C03003FFFE01F0000000
+      C2103F840003C20003FFFE01F0000000C7007F8E0003C70000FE0000F0000000
+      FF01FFFE0003FF0060FE0000F0000000FF803FFE0003FF8000FE0000F0000000
+      FF800FFE0003FF8000FE0000F0000000FFC007FE0003FFC001FE0046F0000000
+      FFC007FE0003FFC001FE0002F0000000FCE027F80003FCC001FE0000F0000000
+      F8603FF00003F84031FE0046F0000000FC301FF8603FFC0003FE00C6F0000000
+      FE001FFC003FFE0003FE0186F0000000FF000FFE001FFF0003FE020EF0000000
+      FFC00FFF801FFFC00FFE07FEF0000000FFFC0FFFF81FFFFC0FFFFFFFF0000000
+      FFFC0FFFF81FFFFC0FFFFFFFF0000000FFFE1FFFFC3FFFFE1FFFFFFFF0000000
+      FFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000
+      000000000000}
+  end
+  object ODB: TOpenDialog
+    Left = 80
+    Top = 96
+  end
+  object SDB: TSaveDialog
+    Left = 208
+    Top = 248
+  end
+  object Timer1: TTimer
+    Enabled = False
+    Interval = 250
+    OnTimer = Timer1Timer
+    Left = 16
+    Top = 488
+  end
+  object ADOTable1: TADOTable
+    Left = 416
+    Top = 88
+  end
+end
diff --git a/windows/gvedit/Umain.h b/windows/gvedit/Umain.h
new file mode 100644 (file)
index 0000000..b674169
--- /dev/null
@@ -0,0 +1,109 @@
+//---------------------------------------------------------------------------
+
+#ifndef UmainH
+#define UmainH
+//---------------------------------------------------------------------------
+#include <Classes.hpp>
+#include <Controls.hpp>
+#include <StdCtrls.hpp>
+#include <Forms.hpp>
+#include <Menus.hpp>
+#include <ComCtrls.hpp>
+#include <ExtCtrls.hpp>
+#include <ToolWin.hpp>
+#include <ImgList.hpp>
+#include <Dialogs.hpp>
+#include <Registry.hpp>
+#include <ADODB.hpp>
+#include <DB.hpp>
+#include <jpeg.hpp>
+//---------------------------------------------------------------------------
+class TfrmMain : public TForm
+{
+__published:   // IDE-managed Components
+        TMainMenu *MainMenu1;
+        TMenuItem *File1;
+        TMenuItem *Graphviz1;
+        TMenuItem *Help1;
+        TMenuItem *Edit1;
+        TMenuItem *New1;
+        TMenuItem *Open1;
+        TMenuItem *Save1;
+        TMenuItem *SaveAs1;
+        TMenuItem *Undo1;
+        TMenuItem *Cut1;
+        TMenuItem *Copy1;
+        TMenuItem *Paste1;
+        TMenuItem *DotProcess1;
+        TMenuItem *AboutGraphvizEditor1;
+        TStatusBar *StatusBar1;
+        TMenuItem *Settings1;
+        TPanel *Panel1;
+        TMemo *Memo1;
+        TSplitter *Splitter1;
+        TPopupMenu *PopupMenu1;
+        TMenuItem *SaveCommandlogtofile1;
+        TMenuItem *Clear1;
+        TToolBar *ToolBar1;
+        TToolButton *ToolButton1;
+        TImageList *ImageList1;
+        TOpenDialog *ODB;
+        TSaveDialog *SDB;
+        TMenuItem *View1;
+        TMenuItem *Cascade1;
+        TMenuItem *Tile1;
+        TToolButton *ToolButton2;
+        TToolButton *ToolButton4;
+        TToolButton *ToolButton5;
+        TToolButton *ToolButton6;
+        TToolButton *ToolButton3;
+        TMenuItem *Find1;
+        TTimer *Timer1;
+        TMenuItem *Close1;
+        TMenuItem *Help2;
+        TMenuItem *Graphvizonnet1;
+        TMenuItem *PreprocessorSettings1;
+        TADOTable *ADOTable1;
+        TImage *Image1;
+        void __fastcall New1Click(TObject *Sender);
+        void __fastcall Label1Click(TObject *Sender);
+        void __fastcall FormCreate(TObject *Sender);
+        void __fastcall Open1Click(TObject *Sender);
+        void __fastcall SaveAs1Click(TObject *Sender);
+        void __fastcall Save1Click(TObject *Sender);
+        void __fastcall ToolButton1Click(TObject *Sender);
+        void __fastcall Undo1Click(TObject *Sender);
+        void __fastcall Cut1Click(TObject *Sender);
+        void __fastcall Copy1Click(TObject *Sender);
+        void __fastcall Paste1Click(TObject *Sender);
+        void __fastcall SaveCommandlogtofile1Click(TObject *Sender);
+        void __fastcall Clear1Click(TObject *Sender);
+        void __fastcall Cascade1Click(TObject *Sender);
+        void __fastcall Tile1Click(TObject *Sender);
+        void __fastcall DotProcess1Click(TObject *Sender);
+        void __fastcall Settings1Click(TObject *Sender);
+        void __fastcall ToolButton2Click(TObject *Sender);
+        void __fastcall ToolButton3Click(TObject *Sender);
+        void __fastcall ToolButton6Click(TObject *Sender);
+        void __fastcall ToolButton5Click(TObject *Sender);
+        void __fastcall AboutGraphvizEditor1Click(TObject *Sender);
+        void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
+        void __fastcall Find1Click(TObject *Sender);
+        void __fastcall Replace1Click(TObject *Sender);
+        void __fastcall Timer1Timer(TObject *Sender);
+        void __fastcall Close1Click(TObject *Sender);
+        void __fastcall Help2Click(TObject *Sender);
+        void __fastcall Graphvizonnet1Click(TObject *Sender);
+        void __fastcall PreprocessorSettings1Click(TObject *Sender);
+        void __fastcall Button1Click(TObject *Sender);
+private:       // User declarations
+public:                // User declarations
+        __fastcall TfrmMain(TComponent* Owner);
+        int FileSeq;
+        AnsiString ReadFromRegistry(AnsiString RBKey,AnsiString RKey);
+        void TfrmMain::UpdateMainForm();
+};
+//---------------------------------------------------------------------------
+extern PACKAGE TfrmMain *frmMain;
+//---------------------------------------------------------------------------
+#endif